[[2018a/Member]] #contents *課題 [#bdc897a8] **下の図のようなコースを各チームで作成し、「ミッション」を遂行するためのロボットを作成せよ。 [#w3d1ff98] #ref(2018a/Member/Cho/Mission2/2018a-mission2.png,7.4KB,課題2のコース) 第2コースを選んだ。 ***第2コース [#f619d59e] + Aをスタート + Bを直進 + Cで一時停止の後、直進 + Dで一時停止の後、Xの空き缶をキャッチしてD地点に戻る + DからEに向かい、Eを直進 + Fを左折 + Gで一時停止の後、左折 + Hで一時停止の後、右折 + Iで一時停止の後、右折 + Lを直進 + Kを直進 + Jで一時停止の後、空き缶をYに置きてJに戻りBに向かう + Bで一時停止の後、左折 + Aで停止 *ロボット [#ia3debc6] #ref(2018a/Member/Cho/Mission2/IMG_0176.JPG,81.2KB,ロボット) #ref(2018a/Member/Cho/Mission2/IMG_0178.JPG,64.9KB,ロボット下から) #ref(2018a/Member/Cho/Mission2/IMG_0180.JPG,110.6KB ,ロボット横から) **説明 [#je947f7e] 説明書通りのロボットの前方にアームとカラーセンサ、超音波センサを追加した。空き缶を固定するためのアームを、上からかぶせるタイプにすることで、空き缶の運搬中に缶が倒れにくくした。また、アームのモータがロボットの前方中央に位置するため、線を感知するカラーセンサは横にずらして設置した。超音波センサは、相方が使うためのもので、今回は使わないことにした。 *プログラム [#l3ccb5b7] **定義 [#w9295be6] ***モータ、センサなど [#xe675878] mL = LargeMotor('outA') mR = LargeMotor('outB') cs = ColorSensor('in3') m = MediumMotor("outC") us = UltrasonicSensor("in4") timeB = 0.9 ***線の右側をたどるプログラム [#ne99384b] def fol_rightside(): t0 = time.time() while time.time() - t0 < timeB: if cs.value() < 50: mL.run_forever(speed_sp = 150) mR.run_forever(speed_sp = -20) if cs.value() >= 50: mL.run_forever(speed_sp = -20) mR.run_forever(speed_sp = 150) t0 = time.time() ***線の左側をたどるプログラム [#p532126d] def fol_leftside(): t0 = time.time() while time.time() - t0 < timeB: if cs.value() >= 50: mL.run_forever(speed_sp = 150) mR.run_forever(speed_sp = -20) if cs.value() < 50: mL.run_forever(speed_sp = -20) mR.run_forever(speed_sp = 150) t0 = time.time() ***アームを動かすプログラム [#g56f2b99] def arm(t): m.run_to_rel_pos(position_sp = t, speed_sp = 100, stop_action = 'break') sleep(1) **全体 [#a9a5aa92] fol_rightside() fol_rightside() cross(-150,20) arm(60) sleep(1) fol_leftside() cross(20,-150) move_for() fol_leftside() cross(20,-150) move_for() fol_leftside() cross(20,-150) sleep(1) fol_leftside() cross(20,-150) sleep(1) fol_leftside() sleep(1) fol_leftside() cross(20,-150) fol_rightside() sleep(1) fol_rightside() fol_rightside() sleep(1) turn() arm(-60) sleep(1) turn() fol_rightside() fol_rightside() cross(-150,20) *結果 [#z6127b6e] ラインの境界線をたどって動くことはできたが、交差点でコースアウトした。空き缶にアームをかぶせることは難しいが、空き缶を動かすことは割と安定していた。 **問題点 [#aa86ae05] +交差点の認識 +アームの間が狭く、空き缶の位置がずれていたらアームで固定できない +カラーセンサが右側についているため、ラインの右境界線をトレースするときと左境界線をトレースするときの違い **感想 [#r2bc2af7] 自分の未熟さを知った。ロボット、プログラムの両方に問題が多く、とても満足はできない。もっと時間をかけるべきだったと思う。