目次 はじめに †今回の課題はライントレースです。 コース紹介 †僕が担当したミッションは ロボット本体の説明 †ロボットはこんな感じです。 センサーは紙面から約1cmほどの距離で設置しています。 プログラムの紹介 †プログラム全体の概要 †#!/usr/bin/python import ev3dev.ev3 as ev3 import time mr=ev3.LargeMotor('outA') ml=ev3.LargeMotor('outB') cs=ev3.ColorSensor('in1') def line(): t0=time.time() while time.time()-t0 < 0.35: if cs.value() > 50: mr.run_forever(duty_cycle_sp=60) ml.run_forever(duty_cycle_sp=-30) t0=time.time() else: mr.run_forever(duty_cycle_sp=-30) ml.run_forever(duty_cycle_sp=60) def cross(t,dl,dr): mr.run_forever(duty_cycle_sp=dr) ml.run_forever(duty_cycle_sp=dl) time.sleep(t/1000) ml.stop() mr.stop() mr.stop() ml.stop() line() cross(1000,0,0) cross(1000,17,-17) #交差点を左折する cross(800,30,-30) cross(1000,10,10) line() cross(1000,0,0) cross(1000,17,-17) #交差点を左折する cross(900,30,-30) cross(1000,10,10) line() cross(1000,0,0) cross(1100,-20,20) #交差点を直進する cross(1000,13,13) line() cross(1000,0,0) cross(1100,-17,17) #交差点を直進する cross(1000,13,13) line() cross(1000,0,0) cross(1000,17,-17) #交差点を右折する cross(1400,-40,40) cross(1400,10,10) line() cross(1000,0,0) cross(1000,17,-17) #交差点を左折する cross(1000,10,-10) cross(1000,10,10) line() cross(1000,0,0) cross(1000,-17,17) #交差点を直進してA地点に到着 cross(1000,13,13)
プログラム詳細 †mr=ev3.LargeMotor('outA') ml=ev3.LargeMotor('outB') cs=ev3.ColorSensor('in1') ここで、モーターAは右のタイヤなので、motor rightでmr def line(): t0=time.time() while time.time()-t0 < 0.35: if cs.value() > 50: mr.run_forever(duty_cycle_sp=60) ml.run_forever(duty_cycle_sp=-30) t0=time.time() else: mr.run_forever(duty_cycle_sp=-30) ml.run_forever(duty_cycle_sp=60) ここでは、ラインを直進するときの挙動を定義しています。 def cross(t,dl,dr): mr.run_forever(duty_cycle_sp=dr) ml.run_forever(duty_cycle_sp=dl) time.sleep(t/1000) ml.stop() mr.stop() このプログラムは、交差点での挙動を定義するプログラムです。 line() cross(1000,0,0) cross(1000,17,-17) cross(800,30,-30) cross(1000,10,10) 一つ目の交差点を左折するプログラムです。 line() cross(1000,0,0) cross(1000,17,-17) cross(900,30,-30) cross(1000,10,10) 二つ目の交差点を左折するプログラムです。 line() cross(1000,0,0) cross(1100,-20,20) cross(1000,13,13) line() cross(1000,0,0) cross(1100,-17,17) cross(1000,13,13) 三つ目、四つ目の交差点を直進するプログラムです。 line() cross(1000,0,0) cross(1000,17,-17) cross(1400,-40,40) cross(1400,10,10) 五つ目の交差点を右折するプログラムです。 line() cross(1000,0,0) cross(1000,17,-17) cross(1000,10,-10) cross(1000,10,10) 六つ目の交差点を左折するプログラムです。 line() cross(1000,0,0) cross(1000,-17,17) cross(1000,13,13) 最後の交差点で直進をするプログラムです。 感想・反省 †今回は前回ほど苦労はしませんでした。 |