2019a/Member/TOY/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
目次
#contents
*課題について [#sabe4919]
詳しくは[[2019a/Mission3]]を参照してください。
#ref(./2019a-mission3.png,60%,コース図面)
我々の班はロボットを2つずつ、別に動かして、容器に入って...
*2つのロボットの連携 [#lbd7c492]
MQTT通信による連携を模索していたのですが、今回の課題は制...
*ロボットの説明 [#k09689a2]
ロボットの改修を最初はしていましたが、結果が出ず、結局、...
#ref(./1919-2.JPG,10%,robot)
ロボット全体↑
#ref(./1919-5.JPG,10%,robot)
回収地点に着く↑
#ref(./1919-4.JPG,10%,robot)
ピンポン球を持ち上げる↑
#ref(./1919-3.JPG,60%,robot)
↑ピンポン球の位置エネルギーとモーターの加速により、カタパ...
*ロボットの出力に関する問題 [#a2acfe1f]
我々のev3は内臓のリチウムイオンバッテリーで動作しており、...
*ライントレース [#q8fc2041]
ロボットを2つに分けてしまったので、今回の課題でもカラー...
#ref(./1919-1.png,50%,ライントレースの図解)
実際のライントレースのサブルーチンは以下のようになります。
def line_trace_left(t,c): #線の左側をライントレース
x = time.time() #スタートの時刻
while time.time() - x < t: #現在時刻−スタート時刻が...
if cs.value() > c: #カラーセンサーの値がcより大き...
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
x = time.time() #スタート時刻を更新する
else: #カラーセンサーの値がcより小...
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
if time.time() - x > t: #現在時刻−スタート時刻がtよ...
mL.stop()
mR.stop()
#ref(./810-5.png,50%,line_trace_left)
def line_trace_right(t,c): #線の右側をライントレース
x = time.time() #スタートの時刻
while time.time() - x < t: #現在時刻−スタート時刻が...
if cs.value() > c: #カラーセンサーの値がcより...
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
x = time.time() #スタート時刻を更新
else: #カラーセンサーの値がcより小さい、つまり...
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
if time.time() - x >t: #現在時刻−スタート時刻がtよ...
mL.stop()
mR.stop()
#ref(./810-6.png,50%,line_trace_right)
(説明)このサブルーチンを簡単に説明すると、1行目のx=time...
*コーナーを検知しない対策 [#dc247ed9]
基本的にはライントレースのコーナー判定時間を短くし、境界...
*パートナーとの作業分担 [#v19cc2da]
今回の課題では時間がなく、二人でそれぞれ別のプログラムを...
*実際のプログラム [#z6f094f7]
#!/usr/bin/env python3 #python3を宣言
from ev3dev.ev3 import * #ev3devをインポートする
from time import sleep #時間はsleep関数を用いる(例)s...
mL = LargeMotor('outD') #左のモーターはDポートから出力...
mR = LargeMotor('outC') #右のモーターはCポートから出力...
mM = MediumMotor('outB') #ミディアムモーターはBから出...
cs = ColorSensor('in3') #カラーセンサーは3番ポートか...
cs.mode = 'COL-REFLECT' #カラーセンサーは反射した光の...
def motor_init(): #モーターをリセットする
mL.reset()
mR.reset()
def arm_move(t,y): #アームを動かす。しかし、これはピン...
x = time.time()
while time.time() - x < t:
mM.run_forever(speed_sp=y)
mM.stop()
sleep(1)
def catch_up(x,t): #ピンポン球を回収し、モーターを固定...
mM.run_timed(speed_sp=x,time_sp=t,stop_action='hold')
sleep(1)
def hold_out(): #上のcatch_upで固定してしまったモータ...
mM.run_timed(speed_sp=100,time_sp=100,stop_action='bra...
sleep(1)
def move_forward(t): #時間t[s]だけ前進する。whileうん...
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=-100)
mR.run_forever(speed_sp=-100)
mL.stop()
mR.stop()
def move_back(t): #時間t[s]だけ後進する
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=100)
mR.run_forever(speed_sp=100)
mL.stop()
mR.stop()
def turn_left(t): #時間t[s]だけ左旋回する
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=100)
mR.run_forever(speed_sp=-100)
mL.stop()
mR.stop()
def turn_right(t): #時間t[s]だけ右旋回する
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=-100)
mR.run_forever(speed_sp=100)
mL.reset()
mR.reset()
def line_trace_right(t,c): #線の右側に沿って動き、コー...
x = time.time()
while time.time() - x < t:
if cs.value() > c:
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
x = time.time()
else:
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
if time.time() - x >t:
mL.stop()
mR.stop()
def line_trace_left(t,c): #線の左側に沿って動き、コー...
x = time.time()
while time.time() - x < t:
if cs.value() > c:
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
x = time.time()
else:
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
if time.time() - x >t:
mL.stop()
mR.stop()
def change_paper(): #実際には使用していないが、プログ...
x = 0
while x < 2:
if cs.value() > 50:
mL.run_forever(speed_sp=100)
mR.run_forever(speed_sp=100)
if cs.value() < 50:
mL.stop()
mR.stop()
x = x + 1
if __name__ == '__main__':
motor_init() #モーターをリセット
sleep(1) #1秒間動作を停止する(以下同様)
hold_out() #何回もデバッグする度にミディアムモーター...
sleep(1)
print(cs.value()) #カラーセンサーの値を表示。これは毎...
sleep(1)
line_trace_left(1,40) #A'からK’まで線の左側に沿って移...
sleep(1)
turn_right(0.55) #ピンポン球の方向を向くために角度を...
sleep(1)
move_back(4.2) #前方にアームを展開するとピンポン球に...
sleep(1)
arm_move(1.5,-400) #アームを展開する
sleep(1)
move_forward(1.6) #ピンポン球の回収地点まで前進する
sleep(1)
catch_up(550,750) #ピンポン球を回収する
sleep(1)
move_forward(5) #前進する。位置調整
sleep(1)
turn_right(1.25) #ピンポン球の射出角度を調整
sleep(1)
arm_move(1,800) #ピンポン球ー打ちー方はじーめ。ピンポ...
sleep(1)
hold_out() #一応ミディアムモーターを開放する
sleep(1)
turn_left(1.7) #左に旋回する。位置調整
sleep(1)
move_forward(0.7) #位置調整
sleep(1)
turn_left(1) #位置調整
sleep(1)
line_trace_right(1,40) #L'からK'まで線の右側に沿って...
sleep(1)
turn_left(0.5) #ロボットが線に平行になるように左旋回...
sleep(1)
move_forward(6) #コース用紙とコース用紙の境目まで移...
sleep(1)
move_forward(4.5) #前進する。ここからパートナーが作成...
sleep(1)
line_trace_left(1,40) #Kの手前から線の左側に沿って動...
sleep(1)
turn_right(0.6) #Lにまっすぐむくように角度を調整する
sleep(1)
move_back(4.2) #ピンポン球にぶつけずにアーム展開をす...
sleep(1)
arm_move(6,-200) #アームを展開する
sleep(1)
move_forward(2.2) #ピンポン球の回収地点まで前進
sleep(1)
catch_up(550,750) #2つ目のピンポン球を回収する
sleep(1)
turn_right(2.7) #位置調整
sleep(1)
move_forward(3) #位置調整
sleep(1)
turn_right(2.5) #位置調整
sleep(1)
move_back(2) #位置調整
sleep(1)
arm_move(1,300) #L'の手前からピンポン球を射出する。
sleep(1)
turn_left(1.5) #もう一方のロボットの邪魔をしないよう...
sleep(1)
move_forward(3) #もう一方のロボットの邪魔をしないよう...
sleep(1)
#ここからもう片方の2人によるプログラムとロボットで残っ...
*感想と反省 [#b3b67aaa]
今回の課題では非常に時間がなかったうえに、バッテリーと出...
終了行:
[[2019a/Member]]
目次
#contents
*課題について [#sabe4919]
詳しくは[[2019a/Mission3]]を参照してください。
#ref(./2019a-mission3.png,60%,コース図面)
我々の班はロボットを2つずつ、別に動かして、容器に入って...
*2つのロボットの連携 [#lbd7c492]
MQTT通信による連携を模索していたのですが、今回の課題は制...
*ロボットの説明 [#k09689a2]
ロボットの改修を最初はしていましたが、結果が出ず、結局、...
#ref(./1919-2.JPG,10%,robot)
ロボット全体↑
#ref(./1919-5.JPG,10%,robot)
回収地点に着く↑
#ref(./1919-4.JPG,10%,robot)
ピンポン球を持ち上げる↑
#ref(./1919-3.JPG,60%,robot)
↑ピンポン球の位置エネルギーとモーターの加速により、カタパ...
*ロボットの出力に関する問題 [#a2acfe1f]
我々のev3は内臓のリチウムイオンバッテリーで動作しており、...
*ライントレース [#q8fc2041]
ロボットを2つに分けてしまったので、今回の課題でもカラー...
#ref(./1919-1.png,50%,ライントレースの図解)
実際のライントレースのサブルーチンは以下のようになります。
def line_trace_left(t,c): #線の左側をライントレース
x = time.time() #スタートの時刻
while time.time() - x < t: #現在時刻−スタート時刻が...
if cs.value() > c: #カラーセンサーの値がcより大き...
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
x = time.time() #スタート時刻を更新する
else: #カラーセンサーの値がcより小...
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
if time.time() - x > t: #現在時刻−スタート時刻がtよ...
mL.stop()
mR.stop()
#ref(./810-5.png,50%,line_trace_left)
def line_trace_right(t,c): #線の右側をライントレース
x = time.time() #スタートの時刻
while time.time() - x < t: #現在時刻−スタート時刻が...
if cs.value() > c: #カラーセンサーの値がcより...
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
x = time.time() #スタート時刻を更新
else: #カラーセンサーの値がcより小さい、つまり...
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
if time.time() - x >t: #現在時刻−スタート時刻がtよ...
mL.stop()
mR.stop()
#ref(./810-6.png,50%,line_trace_right)
(説明)このサブルーチンを簡単に説明すると、1行目のx=time...
*コーナーを検知しない対策 [#dc247ed9]
基本的にはライントレースのコーナー判定時間を短くし、境界...
*パートナーとの作業分担 [#v19cc2da]
今回の課題では時間がなく、二人でそれぞれ別のプログラムを...
*実際のプログラム [#z6f094f7]
#!/usr/bin/env python3 #python3を宣言
from ev3dev.ev3 import * #ev3devをインポートする
from time import sleep #時間はsleep関数を用いる(例)s...
mL = LargeMotor('outD') #左のモーターはDポートから出力...
mR = LargeMotor('outC') #右のモーターはCポートから出力...
mM = MediumMotor('outB') #ミディアムモーターはBから出...
cs = ColorSensor('in3') #カラーセンサーは3番ポートか...
cs.mode = 'COL-REFLECT' #カラーセンサーは反射した光の...
def motor_init(): #モーターをリセットする
mL.reset()
mR.reset()
def arm_move(t,y): #アームを動かす。しかし、これはピン...
x = time.time()
while time.time() - x < t:
mM.run_forever(speed_sp=y)
mM.stop()
sleep(1)
def catch_up(x,t): #ピンポン球を回収し、モーターを固定...
mM.run_timed(speed_sp=x,time_sp=t,stop_action='hold')
sleep(1)
def hold_out(): #上のcatch_upで固定してしまったモータ...
mM.run_timed(speed_sp=100,time_sp=100,stop_action='bra...
sleep(1)
def move_forward(t): #時間t[s]だけ前進する。whileうん...
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=-100)
mR.run_forever(speed_sp=-100)
mL.stop()
mR.stop()
def move_back(t): #時間t[s]だけ後進する
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=100)
mR.run_forever(speed_sp=100)
mL.stop()
mR.stop()
def turn_left(t): #時間t[s]だけ左旋回する
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=100)
mR.run_forever(speed_sp=-100)
mL.stop()
mR.stop()
def turn_right(t): #時間t[s]だけ右旋回する
x = time.time()
while time.time() - x < t:
mL.run_forever(speed_sp=-100)
mR.run_forever(speed_sp=100)
mL.reset()
mR.reset()
def line_trace_right(t,c): #線の右側に沿って動き、コー...
x = time.time()
while time.time() - x < t:
if cs.value() > c:
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
x = time.time()
else:
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
if time.time() - x >t:
mL.stop()
mR.stop()
def line_trace_left(t,c): #線の左側に沿って動き、コー...
x = time.time()
while time.time() - x < t:
if cs.value() > c:
mL.run_forever(speed_sp=-80)
mR.run_forever(speed_sp=40)
x = time.time()
else:
mL.run_forever(speed_sp=40)
mR.run_forever(speed_sp=-80)
if time.time() - x >t:
mL.stop()
mR.stop()
def change_paper(): #実際には使用していないが、プログ...
x = 0
while x < 2:
if cs.value() > 50:
mL.run_forever(speed_sp=100)
mR.run_forever(speed_sp=100)
if cs.value() < 50:
mL.stop()
mR.stop()
x = x + 1
if __name__ == '__main__':
motor_init() #モーターをリセット
sleep(1) #1秒間動作を停止する(以下同様)
hold_out() #何回もデバッグする度にミディアムモーター...
sleep(1)
print(cs.value()) #カラーセンサーの値を表示。これは毎...
sleep(1)
line_trace_left(1,40) #A'からK’まで線の左側に沿って移...
sleep(1)
turn_right(0.55) #ピンポン球の方向を向くために角度を...
sleep(1)
move_back(4.2) #前方にアームを展開するとピンポン球に...
sleep(1)
arm_move(1.5,-400) #アームを展開する
sleep(1)
move_forward(1.6) #ピンポン球の回収地点まで前進する
sleep(1)
catch_up(550,750) #ピンポン球を回収する
sleep(1)
move_forward(5) #前進する。位置調整
sleep(1)
turn_right(1.25) #ピンポン球の射出角度を調整
sleep(1)
arm_move(1,800) #ピンポン球ー打ちー方はじーめ。ピンポ...
sleep(1)
hold_out() #一応ミディアムモーターを開放する
sleep(1)
turn_left(1.7) #左に旋回する。位置調整
sleep(1)
move_forward(0.7) #位置調整
sleep(1)
turn_left(1) #位置調整
sleep(1)
line_trace_right(1,40) #L'からK'まで線の右側に沿って...
sleep(1)
turn_left(0.5) #ロボットが線に平行になるように左旋回...
sleep(1)
move_forward(6) #コース用紙とコース用紙の境目まで移...
sleep(1)
move_forward(4.5) #前進する。ここからパートナーが作成...
sleep(1)
line_trace_left(1,40) #Kの手前から線の左側に沿って動...
sleep(1)
turn_right(0.6) #Lにまっすぐむくように角度を調整する
sleep(1)
move_back(4.2) #ピンポン球にぶつけずにアーム展開をす...
sleep(1)
arm_move(6,-200) #アームを展開する
sleep(1)
move_forward(2.2) #ピンポン球の回収地点まで前進
sleep(1)
catch_up(550,750) #2つ目のピンポン球を回収する
sleep(1)
turn_right(2.7) #位置調整
sleep(1)
move_forward(3) #位置調整
sleep(1)
turn_right(2.5) #位置調整
sleep(1)
move_back(2) #位置調整
sleep(1)
arm_move(1,300) #L'の手前からピンポン球を射出する。
sleep(1)
turn_left(1.5) #もう一方のロボットの邪魔をしないよう...
sleep(1)
move_forward(3) #もう一方のロボットの邪魔をしないよう...
sleep(1)
#ここからもう片方の2人によるプログラムとロボットで残っ...
*感想と反省 [#b3b67aaa]
今回の課題では非常に時間がなかったうえに、バッテリーと出...
ページ名: