目次 #contents *課題3 [#va54b46a] *課題達成のためのルート [#j10deba6] *ロボットの説明 [#of1e3a29] **本体について [#hfdefae6] ・車型ロボットにボールを扱う機構とセンサ類を設置 **ボールを扱う機構について [#jc19a875] ・ベルトコンベアでボールを掬い上げる ・一度に二個ボールを運べる→ライントレースのショートカットが可能 ・車体上部に設置した坂道で転がしてボールを入れる ・加速したボールを減速。缶に乗ったボールを逃さない。役割をもつ可動な壁 **センサ類について [#v8a9ebbc] 使用したのはカラーセンサ、超音波センサ、ジャイロセンサを一つづつ。 ***カラーセンサ [#v30f0ba7] ライントレースに使用。 ***超音波センサ [#dd0c2bfb] 缶の発見に使用。 ***ジャイロセンサ [#zaa3d421] 課題とロボットの特性上、車体を何回も正確に回転させる必要があった。前回までのミッションのときはモーターを決まった値で回して車体を回転させていたが、充電等の影響により回転角度が変わってしまうという失敗が多かった。この反省を踏まえ、充電に影響されにくいセンサ類、を採用した。採用したジャイロセンサは、角度を測ることが可能であり、計測開始と計測終了時の値を得ることにより、何度移動したか、その変位を知ることができる。しかし、完全に正確な値を得ることは不可能であり、数度だけ誤差が生じる。 *定義したプログラム [#s9b3182f] **基本的なプログラム [#o934100a] 車輪を止めるプログラム。適宜、利用した。 def stop(): ml.stop() mr.stop() 決められた角度だけ車輪のモーターを回す。前進、後進、回転、斜め方向etc…多彩な動きを変数により制御する。適宜、利用した。 def angle(l,r,t): ml.run_to_rel_pos(position_sp=l,speed_sp=115,stop_action='hold') mr.run_to_rel_pos(position_sp=r,speed_sp=115,stop_action='hold') time.sleep(t) **ライントレースのプログラム [#y6003622] **缶の発見とボール落下させるプログラム [#w1430d97] 缶の場所を探査したい場所に到着した時に使用する。まず任意の変数だけ回転し、超音波センサが最も近い物体を検知した時に回転し始めてからどれほどの角度を回ったかジャイロセンサで把握しておき、変数分回転したあとに最も近い物体の方向を先程とは逆回りで回転しながら向く。 その後、缶に向かって前進する。課題の特性上、缶の配置によって前進する距離が異なるので、缶に超音波センサがぶつかる(センサの値が2550になる)まで前進を続ける。 缶にぶつかったら車体は止まり、ベルトコンベアを回転させ、ボールを落下させる。