第2コースを選んだ。
説明書通りのロボットの前方にアームとカラーセンサ、超音波センサを追加した。空き缶を固定するためのアームを、上からかぶせるタイプにすることで、空き缶の運搬中に缶が倒れにくくした。また、アームのモータがロボットの前方中央に位置するため、線を感知するカラーセンサは横にずらして設置した。超音波センサは、相方が使うためのもので、今回は使わないことにした。
mL = LargeMotor('outA') mR = LargeMotor('outB') cs = ColorSensor('in3') m = MediumMotor("outC") us = UltrasonicSensor("in4") timeB = 0.9
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()
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()
def arm(t): m.run_to_rel_pos(position_sp = t, speed_sp = 100, stop_action = 'break') sleep(1)
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)
ラインの境界線をたどって動くことはできたが、交差点でコースアウトした。空き缶にアームをかぶせることは難しいが、空き缶を動かすことは割と安定していた。
自分の未熟さを知った。ロボット、プログラムの両方に問題が多く、とても満足はできない。もっと時間をかけるべきだったと思う。