#author("2020-01-24T16:33:49+09:00","bearch","bearch")
#author("2020-01-24T16:35:26+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]
今回の課題では勉強足らずで文法などが全然理解できていなかった。
その結果このような単純なプログラムしかできなかったので次は頑張りたい。

今回は角度を使ったコマンドを使用したが思うような角度で動かなかった。
これはロボットの電圧などに影響しているのではないかと思う。ですから次回からは角度を使う場合には検討したい。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS