2019a/Member/kou/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
*目次 [#n5474560]
#contents
*課題について [#be1acf0d]
**課題内容 [#t1388e7b]
〇下の図のようなコースを各チームで作成し、「ミッション」...
***コース [#sb8ba9b1]
#ref(2019a/Member/kou/Mission2/2019a-mission2.png,70%)
#ref(2019a/Member/kou/Mission2/Inked2019a-mission2_LI.jpg...
***ミッション [#r26cbca0]
・A地点から出発 → B → C(直進) → D(一時停止の後、直進) → E...
・交差点では1秒間停止し、丁字路では直角方向に進入する時の...
**方針 [#yb1853fd]
・ライントレースを行う際、カラーセンサーが読み取った数値...
・Dの交差点では黒の検知時間が長くなることを利用して一時停...
・AからDまではコースの外側をライントレースさせ、Dからはコ...
*ロボットについて [#sb4ba8d1]
#ref(2019a/Member/kou/Mission2/IMG_2079.JPG,10%)
ロボットの全体像である。コースが小さく、狭いためロボット...
#ref(2019a/Member/kou/Mission2/IMG_2082 (2).JPG,12%)
スタート地点であらかじめアームを上に上げておくことでライ...
*プログラムについて [#n25d76b3]
**モジュールのインポートとインスタンスの作成部分 [#d98c73...
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep #sleep関数をインポート
a = LargeMotor('outA') #左の車輪のモーターをa
d = LargeMotor('outD') #右の車輪のモーターをd
c = MediumMotor('outB') #アーム部分のミディアムモーター...
cs = ColorSensor('in3')
cs.mode = 'COL-REFLECT' #光の反射値を読み取るモードである
**関数の作成部分 [#p7aa890f]
モーターをリセットする関数である。
def motor_init():
a.reset()
c.reset()
d.reset()
ロボットを前進、後退させる関数である。モーターを回転させ...
例えばt=1000のときモーターは約1秒間回転する。
def move_advance(t):#前進
a.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
d.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
sleep(t/1000)
def move_back(t):#後退
a.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
d.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
sleep(t/1000)
ロボットを左回転、右回転させる関数である.~
モーターの回転をそれぞれ逆回転にして左右回転できるように...
def move_left(t):#左回転
a.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
d.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
sleep(t/1000)
def move_right(t):#右回転
a.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
d.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
sleep(t/1000)
ライントレースする関数である。これはAからDまでの外側をラ...
def line_follow(t):
motor_init() #モーターをリセット
t0 = time.time() #計測開始時間をt0とする
while time.time() - t0 < t: #変数tを導入
if cs.value() <= 11: #csが11以下のとき左前
a.run_forever(speed_sp=50)
d.run_forever(speed_sp=-100)
else: #csが11より大きいとき右前
a.run_forever(speed_sp=-100)
d.run_forever(speed_sp=50)
if time.time() - t0 > t: #検知時間がtより大きくな...
a.stop()
d.stop()
sleep(1)
#ref(2019a/Member/kou/Mission2/タイトルなし.png,50%)
これは、内側をライントレースするとき、つまり黒線が左側に...
def line_follow2(t):
motor_init()
t0 = time.time()
while time.time() - t0 < t:
if cs.value() <= 11:
a.run_forever(speed_sp=-100)
d.run_forever(speed_sp=50)
else:
a.run_forever(speed_sp=50)
d.run_forever(speed_sp=-100)
if time.time() - t0 > t:
a.stop()
d.stop()
sleep(1)
#ref(2019a/Member/kou/Mission2/line.png,70%)
交差点検知の図↓
#ref(2019a/Member/kou/Mission2/交差点.png,45%)
アーム部分を上下させる関数である。回転させる角度をtとした...
def age(t):
c.run_to_rel_pos(position_sp=t, speed_sp=100, stop_ac...
sleep(1)
def sage(t):
c.run_to_rel_pos(position_sp=-t, speed_sp=100, stop_a...
sleep(1)
**実際のプログラム [#xe1796de]
line_follow(0.8) #交差点Dまでライントレースする
move_right(700) #走るコースの調整
move_advance(700)
line_follow2(1.5) #Gまでライントレース
move_right(900) #走るコースの調整
move_advance(600)
line_follow2(0.9) #Hまでライントレース
move_left(500) #走るコースの調整
move_advance(500)
line_follow2(0.7) #Iまでライントレース
move_left(500) #走るコースの調整
move_advance(500)
line_follow2(0.7) #Jまでライントレース
move_right(300) #走るコースの調整
move_advance(300)
line_follow2(0.65) #Kまでライントレース
move_advance(1500) #ピンポン球の回収
move_left(1200)
move_back(3500)
sage(140) #アームを下げる
move_advance(1000) #ピンポン球の下に入る
age(60) #アームを上げる
move_right(2000) #走るコースの調整
line_follow2(1.5) #KからMまでライントレース
sage(70) #シュート
*反省・感想 [#nf54a9b5]
ロボット、プログラムの作成と改めて時間のかかるものだと実...
良かった点としては、交差点Dの検知はほぼ確実にでき、外側ラ...
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
終了行:
[[2019a/Member]]
*目次 [#n5474560]
#contents
*課題について [#be1acf0d]
**課題内容 [#t1388e7b]
〇下の図のようなコースを各チームで作成し、「ミッション」...
***コース [#sb8ba9b1]
#ref(2019a/Member/kou/Mission2/2019a-mission2.png,70%)
#ref(2019a/Member/kou/Mission2/Inked2019a-mission2_LI.jpg...
***ミッション [#r26cbca0]
・A地点から出発 → B → C(直進) → D(一時停止の後、直進) → E...
・交差点では1秒間停止し、丁字路では直角方向に進入する時の...
**方針 [#yb1853fd]
・ライントレースを行う際、カラーセンサーが読み取った数値...
・Dの交差点では黒の検知時間が長くなることを利用して一時停...
・AからDまではコースの外側をライントレースさせ、Dからはコ...
*ロボットについて [#sb4ba8d1]
#ref(2019a/Member/kou/Mission2/IMG_2079.JPG,10%)
ロボットの全体像である。コースが小さく、狭いためロボット...
#ref(2019a/Member/kou/Mission2/IMG_2082 (2).JPG,12%)
スタート地点であらかじめアームを上に上げておくことでライ...
*プログラムについて [#n25d76b3]
**モジュールのインポートとインスタンスの作成部分 [#d98c73...
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep #sleep関数をインポート
a = LargeMotor('outA') #左の車輪のモーターをa
d = LargeMotor('outD') #右の車輪のモーターをd
c = MediumMotor('outB') #アーム部分のミディアムモーター...
cs = ColorSensor('in3')
cs.mode = 'COL-REFLECT' #光の反射値を読み取るモードである
**関数の作成部分 [#p7aa890f]
モーターをリセットする関数である。
def motor_init():
a.reset()
c.reset()
d.reset()
ロボットを前進、後退させる関数である。モーターを回転させ...
例えばt=1000のときモーターは約1秒間回転する。
def move_advance(t):#前進
a.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
d.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
sleep(t/1000)
def move_back(t):#後退
a.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
d.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
sleep(t/1000)
ロボットを左回転、右回転させる関数である.~
モーターの回転をそれぞれ逆回転にして左右回転できるように...
def move_left(t):#左回転
a.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
d.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
sleep(t/1000)
def move_right(t):#右回転
a.run_timed(time_sp=t, speed_sp=-100,stop_action='bra...
d.run_timed(time_sp=t, speed_sp=100,stop_action='brak...
sleep(t/1000)
ライントレースする関数である。これはAからDまでの外側をラ...
def line_follow(t):
motor_init() #モーターをリセット
t0 = time.time() #計測開始時間をt0とする
while time.time() - t0 < t: #変数tを導入
if cs.value() <= 11: #csが11以下のとき左前
a.run_forever(speed_sp=50)
d.run_forever(speed_sp=-100)
else: #csが11より大きいとき右前
a.run_forever(speed_sp=-100)
d.run_forever(speed_sp=50)
if time.time() - t0 > t: #検知時間がtより大きくな...
a.stop()
d.stop()
sleep(1)
#ref(2019a/Member/kou/Mission2/タイトルなし.png,50%)
これは、内側をライントレースするとき、つまり黒線が左側に...
def line_follow2(t):
motor_init()
t0 = time.time()
while time.time() - t0 < t:
if cs.value() <= 11:
a.run_forever(speed_sp=-100)
d.run_forever(speed_sp=50)
else:
a.run_forever(speed_sp=50)
d.run_forever(speed_sp=-100)
if time.time() - t0 > t:
a.stop()
d.stop()
sleep(1)
#ref(2019a/Member/kou/Mission2/line.png,70%)
交差点検知の図↓
#ref(2019a/Member/kou/Mission2/交差点.png,45%)
アーム部分を上下させる関数である。回転させる角度をtとした...
def age(t):
c.run_to_rel_pos(position_sp=t, speed_sp=100, stop_ac...
sleep(1)
def sage(t):
c.run_to_rel_pos(position_sp=-t, speed_sp=100, stop_a...
sleep(1)
**実際のプログラム [#xe1796de]
line_follow(0.8) #交差点Dまでライントレースする
move_right(700) #走るコースの調整
move_advance(700)
line_follow2(1.5) #Gまでライントレース
move_right(900) #走るコースの調整
move_advance(600)
line_follow2(0.9) #Hまでライントレース
move_left(500) #走るコースの調整
move_advance(500)
line_follow2(0.7) #Iまでライントレース
move_left(500) #走るコースの調整
move_advance(500)
line_follow2(0.7) #Jまでライントレース
move_right(300) #走るコースの調整
move_advance(300)
line_follow2(0.65) #Kまでライントレース
move_advance(1500) #ピンポン球の回収
move_left(1200)
move_back(3500)
sage(140) #アームを下げる
move_advance(1000) #ピンポン球の下に入る
age(60) #アームを上げる
move_right(2000) #走るコースの調整
line_follow2(1.5) #KからMまでライントレース
sage(70) #シュート
*反省・感想 [#nf54a9b5]
ロボット、プログラムの作成と改めて時間のかかるものだと実...
良かった点としては、交差点Dの検知はほぼ確実にでき、外側ラ...
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
ページ名: