[[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]
 自分の未熟さを知った。ロボット、プログラムの両方に問題が多く、とても満足はできない。もっと時間をかけるべきだったと思う。

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