#author("2020-01-06T12:32:03+09:00","bearch","bearch") [[2019b/Member]] #contents *課題1 [#f301eae8] **似顔絵ロボット [#d5e88f9e] チームメイトの似顔絵を描くロボットを製作しなさい。以下の点に注意すること。 マクロや関数、サブルーチンなどを使い、main関数がなるべく単純になるようにプログラムを作ること。 変数名、定数名、関数名、マクロ名などは分かりやすい名前を用いること 余裕をもってA4の紙の中に収まる大きさにすること。いくら小さくてもよい。 ペン以外はキットの部品を使うこと キットに付属の輪ゴムは切れやすく高価なので、輪ゴムを使う場合は別途支給する輪ゴムを使うこと。 *はじめに [#zda1fc4a] 僕はプログラミング初心者でPythonを使ったプログラミングははじめてでした。 ですからこの課題1ではあまり凝ったプログラミングはできませんでした。そのかわりハード面を工夫しました。 *ロボット [#p3c73519] **ロボットの説明 [#e68de5ab] **ハード [#eba91c22] このロボットはペン先がタイヤとタイヤの中心に位置するように設計したので、その分タイヤとペン先の距離を考えないで済むので、プログラムを簡単にすることができました。またこのロボットについてるペンを接地面に対して寝かせて固定したので、摩擦が少なく、書いた時にガタガタしないようにしました。 #ref(11570_2.jpg) **プログラム [#fa833367] プログラミングがあまりできなかったので、角度だけをつかって似顔絵を描きました。 ~ロボットの前進後進、ロボットの回転をすべてタイヤをどれだけの角度動かすかで完成させました。 *プログラム [#aec0f8d0] 以下のプログラムは輪郭部分と顔のパーツ部分で一応分けています。 from ev3dev2.motor import MoveTank, OUTPUT_B, OUTPUT_C from ev3dev2.motor import MediumMotor, OUTPUT_D tank_drive = MoveTank(OUTPUT_B,OUTPUT_C) motor_center = MediumMotor(OUTPUT_D) #!face line tank_drive.on_for_degrees(5,5,124.8) tank_drive.on_for_degrees(-5,5,87) tank_drive.on_for_degrees(5,5,145.6) tank_drive.on_for_degrees(-5,5,175) tank_drive.on_for_degrees(5,5,145.6) tank_drive.on_for_degrees(-5,5,87) tank_drive.on_for_degrees(5,5,124.8) tank_drive.on_for_degrees(-5,5,87) tank_drive.on_for_degrees(5,5,145.6) tank_drive.on_for_degrees(-5,5,175) tank_drive.on_for_degrees(5,5,145.6) tank_drive.on_for_degrees(-5,5,255) tank_drive.on_for_degrees(5,5,212) motor_center.on_for_degrees(-15,45) #!eyes tank_drive.on_for_degrees(5,-5,175) tank_drive.on_for_degrees(5,5,62.4) tank_drive.on_for_degrees(5,-5,175) tank_drive.on_for_degrees(5,5,42) motor_center.on_for_degrees(15,45) tank_drive.on_for_degrees(5,5,42) motor_center.on_for_degrees(-15,45) tank_drive.on_for_degrees(5,5,42) motor_center.on_for_degrees(15,45) tank_drive.on_for_degrees(5,5,42) motor_center.on_for_degrees(-15,45) tank_drive.on_for_degrees(-5,5,175) tank_drive.on_for_degrees(5,5,42) tank_drive.on_for_degrees(-5,5,175) tank_drive.on_for_degrees(5,5,62.4) tank_drive.on_for_degrees(-5,5,175) motor_center.on_for_degrees(15,45) tank_drive.on_for_degrees(5,5,62.4) motor_center.on_for_degrees(-15,45) tank_drive.on_for_degrees(-5,-5,83.2) tank_drive.on_for_degrees(-5,5,175) tank_drive.on_for_degrees(-5,-5,20.8) motor_center.on_for_degrees(15,45) tank_drive.on_for_degrees(5,5,41.6) *結果 [#tbf6b631] できた似顔絵がこちらです。 #ref(11569_2.jpg) *反省 [#r73e9739] 今回の課題では勉強足らずで文法などが全然理解できていなかった。 その結果このような単純なプログラムしかできなかったので次は頑張りたい。 今回は角度を使ったコマンドを使用したが思うような角度で動かなかった。 これはロボットの電圧などに影響しているのではないかと思う。ですから次回からは角度を使う場合には検討したい。