2018a/Member/takumi/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*Mission2 [#g4cc89ea]
下図の黒線を提示されたルール通りに沿って動くロボットの作...
*ロボット [#pd8bb293]
&ref(2018a/Member/montbell/Mission2/IMG_20180719_001833.j...
&ref(2018a/Member/montbell/Mission2/IMG_20180719_001944.j...
&ref(2018a/Member/montbell/Mission2/IMG_20180719_002013.j...
?mA = MediumMotor('outA')
缶をキャッチするアームを動作させるためのモーター。
作動させると四角い枠上のアームが降り,缶を囲むように...
?mR = LargeMotor('outB')
進行方向右側のタイヤを動かすモーター。
?mL = LargeMotor('outC')
進行方向左側のタイヤを動かすモーター。
?cs = ColorSensor('in1')
地面の色を判別するセンサ。これを使用し黒い線を判別さ...
*プログラム [#qd85b783]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep#ロボットを動かすための基本的なプ...
mA = MediumMotor('outA')
mR = LargeMotor('outB')
mL = LargeMotor('outC')
cs = ColorSensor('in1')#前述のモーターやセンサー
cs.mode = 'COL-REFLECT'
Itime = 1.8#センサーの設定.明るさ(白と黒)を判別し
1.8秒間黒を認識し続けると後述する様々な関数が作動する.
def move_foward():
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=100, stop_action='brake')
前に進み続ける関数
def move_right1():
mR.run_forever(speed_sp=60, stop_action='brake')
mL.run_forever(speed_sp=90, stop_action='brake')
僅かに右に向かいながら前進する
def move_right2():
mR.run_forever(speed_sp=35, stop_action='brake')
mL.run_forever(speed_sp=90, stop_action='brake')
少し右に向かいながら前進
def move_right3():
mR.run_forever(speed_sp=-45, stop_action='brake')
mL.run_forever(speed_sp=80, stop_action='brake')
大きく右前方に向かう
def turn_right():
mR.run_forever(speed_sp=-80, stop_action='brake')
mL.run_forever(speed_sp=80, stop_action='brake')
ロボット本体を右に90度ターンする
def move_left1():
mR.run_forever(speed_sp=90, stop_action='brake')
mL.run_forever(speed_sp=60, stop_action='brake')
def move_left2():
mR.run_forever(speed_sp=90, stop_action='brake')
mL.run_forever(speed_sp=35, stop_action='brake')
move_rightの左版
def turn_left():
mR.run_forever(speed_sp=80, stop_action='brake')
mL.run_forever(speed_sp=-80, stop_action='brake')
左にターン
def stop():
mR.run_timed(time_sp=0, speed_sp=0, stop_action='coas...
mL.run_timed(time_sp=0, speed_sp=0, stop_action='coas...
全てのタイヤの動作を停止させる
def armturn(t):
mA.run_to_rel_pos(position_sp=t, speed_sp=70, stop_ac...
sleep(1)#アームを上下させる
def toresu_right():#黒線の右端をなぞって走る
t0 = time.time()
while time.time() - t0 < Itime:
if 80 < cs.value(0):
move_left3()
t0 = time.time()
if 60 < cs.value(0) < 80:
move_left2()
t0 = time.time()
if 45 < cs.value(0) < 60:
move_left1()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_foward()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_right1()
if 35 < cs.value(0) < 40:
move_right2()
if cs.value(0) < 35:
move_right3()#明るさ(cs.valueの値の大きさ)...
def toresu_left():#上と同様左側をなぞる
t0 = time.time()
while time.time() - t0 < Itime:
if 80 < cs.value(0):
move_right3()
t0 = time.time()
if 60 < cs.value(0) < 80:
move_right2()
t0 = time.time()
if 45 < cs.value(0) < 60:
move_right1()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_foward()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_left1()
if 35 < cs.value(0) < 40:
move_left2()
if cs.value(0) < 35:
move_left3()
def return_toresu_left(R,L):#R,Lはそれぞれ左右のタイヤの...
mR.run_to_rel_pos(position_sp=R, speed_sp=100, stop_a...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_a...
sleep(3.5)
while cs.value(0) > 45:
move_right1()#黒線から大きく外れたとき線に戻るため...
def return_toresu_right(R,L):
mR.run_to_rel_pos(position_sp=R, speed_sp=100, stop_a...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_a...
sleep(4)
while cs.value(0) > 45:
move_left1()#上に同じ
def return_circle_right():
mR.run_to_rel_pos(position_sp=180, speed_sp=80, stop_...
sleep(4)
while cs.value(0) > 45:
mR.run_forever(speed_sp=100, stop_action='brake')
上の関数と同様の目的だがこちらは円弧に外側から復帰するた...
def return_circle_left():
mL.run_to_rel_pos(position_sp=180, speed_sp=80, stop_...
sleep(4)
while cs.value(0) > 45:
mL.run_forever(speed_sp=100, stop_action='brake')#...
以降は関数を組み合わせてロボットに出した命令である.
return_toresu_right(180,180)
toresu_right()
toresu_left()
stop()
sleep(1)
armturn(30)
sleep(1)
toresu_left()
return_circle_left()
stop()
*感想・考察 [#q53e94fb]
今回は課題を達成できなかった.
一つ目の曲がり角を曲がり,缶を保持する段階から先へは進め...
これは作業の時間を十分に確保できなかったためである.
次回はチームメイトと協力して効率よく制作に取り組みたい.
終了行:
#contents
*Mission2 [#g4cc89ea]
下図の黒線を提示されたルール通りに沿って動くロボットの作...
*ロボット [#pd8bb293]
&ref(2018a/Member/montbell/Mission2/IMG_20180719_001833.j...
&ref(2018a/Member/montbell/Mission2/IMG_20180719_001944.j...
&ref(2018a/Member/montbell/Mission2/IMG_20180719_002013.j...
?mA = MediumMotor('outA')
缶をキャッチするアームを動作させるためのモーター。
作動させると四角い枠上のアームが降り,缶を囲むように...
?mR = LargeMotor('outB')
進行方向右側のタイヤを動かすモーター。
?mL = LargeMotor('outC')
進行方向左側のタイヤを動かすモーター。
?cs = ColorSensor('in1')
地面の色を判別するセンサ。これを使用し黒い線を判別さ...
*プログラム [#qd85b783]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep#ロボットを動かすための基本的なプ...
mA = MediumMotor('outA')
mR = LargeMotor('outB')
mL = LargeMotor('outC')
cs = ColorSensor('in1')#前述のモーターやセンサー
cs.mode = 'COL-REFLECT'
Itime = 1.8#センサーの設定.明るさ(白と黒)を判別し
1.8秒間黒を認識し続けると後述する様々な関数が作動する.
def move_foward():
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=100, stop_action='brake')
前に進み続ける関数
def move_right1():
mR.run_forever(speed_sp=60, stop_action='brake')
mL.run_forever(speed_sp=90, stop_action='brake')
僅かに右に向かいながら前進する
def move_right2():
mR.run_forever(speed_sp=35, stop_action='brake')
mL.run_forever(speed_sp=90, stop_action='brake')
少し右に向かいながら前進
def move_right3():
mR.run_forever(speed_sp=-45, stop_action='brake')
mL.run_forever(speed_sp=80, stop_action='brake')
大きく右前方に向かう
def turn_right():
mR.run_forever(speed_sp=-80, stop_action='brake')
mL.run_forever(speed_sp=80, stop_action='brake')
ロボット本体を右に90度ターンする
def move_left1():
mR.run_forever(speed_sp=90, stop_action='brake')
mL.run_forever(speed_sp=60, stop_action='brake')
def move_left2():
mR.run_forever(speed_sp=90, stop_action='brake')
mL.run_forever(speed_sp=35, stop_action='brake')
move_rightの左版
def turn_left():
mR.run_forever(speed_sp=80, stop_action='brake')
mL.run_forever(speed_sp=-80, stop_action='brake')
左にターン
def stop():
mR.run_timed(time_sp=0, speed_sp=0, stop_action='coas...
mL.run_timed(time_sp=0, speed_sp=0, stop_action='coas...
全てのタイヤの動作を停止させる
def armturn(t):
mA.run_to_rel_pos(position_sp=t, speed_sp=70, stop_ac...
sleep(1)#アームを上下させる
def toresu_right():#黒線の右端をなぞって走る
t0 = time.time()
while time.time() - t0 < Itime:
if 80 < cs.value(0):
move_left3()
t0 = time.time()
if 60 < cs.value(0) < 80:
move_left2()
t0 = time.time()
if 45 < cs.value(0) < 60:
move_left1()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_foward()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_right1()
if 35 < cs.value(0) < 40:
move_right2()
if cs.value(0) < 35:
move_right3()#明るさ(cs.valueの値の大きさ)...
def toresu_left():#上と同様左側をなぞる
t0 = time.time()
while time.time() - t0 < Itime:
if 80 < cs.value(0):
move_right3()
t0 = time.time()
if 60 < cs.value(0) < 80:
move_right2()
t0 = time.time()
if 45 < cs.value(0) < 60:
move_right1()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_foward()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_left1()
if 35 < cs.value(0) < 40:
move_left2()
if cs.value(0) < 35:
move_left3()
def return_toresu_left(R,L):#R,Lはそれぞれ左右のタイヤの...
mR.run_to_rel_pos(position_sp=R, speed_sp=100, stop_a...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_a...
sleep(3.5)
while cs.value(0) > 45:
move_right1()#黒線から大きく外れたとき線に戻るため...
def return_toresu_right(R,L):
mR.run_to_rel_pos(position_sp=R, speed_sp=100, stop_a...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_a...
sleep(4)
while cs.value(0) > 45:
move_left1()#上に同じ
def return_circle_right():
mR.run_to_rel_pos(position_sp=180, speed_sp=80, stop_...
sleep(4)
while cs.value(0) > 45:
mR.run_forever(speed_sp=100, stop_action='brake')
上の関数と同様の目的だがこちらは円弧に外側から復帰するた...
def return_circle_left():
mL.run_to_rel_pos(position_sp=180, speed_sp=80, stop_...
sleep(4)
while cs.value(0) > 45:
mL.run_forever(speed_sp=100, stop_action='brake')#...
以降は関数を組み合わせてロボットに出した命令である.
return_toresu_right(180,180)
toresu_right()
toresu_left()
stop()
sleep(1)
armturn(30)
sleep(1)
toresu_left()
return_circle_left()
stop()
*感想・考察 [#q53e94fb]
今回は課題を達成できなかった.
一つ目の曲がり角を曲がり,缶を保持する段階から先へは進め...
これは作業の時間を十分に確保できなかったためである.
次回はチームメイトと協力して効率よく制作に取り組みたい.
ページ名: