2018a/Member/montbell/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#e1e7976c]
#contents
前回の課題
[[2018a/Member/montbell/Mission1]]
*課題?:ライントレーサー [#de3e13ad]
今回の課題は指定されたコースを各チームで作成し、「ミッシ...
&ref(2018a/Member/montbell/Mission2/2018a-mission2.png,70...
(オレンジが順路、緑が缶を拾う位置、紫が缶を置く位置を示...
*躯体本体 [#tea846eb]
**各部名称 [#k85dc485]
&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')
地面の色を判別するセンサ。これを使用し黒い線を判別さ...
**カラーセンサーの取り付け位置について [#a73e0e8e]
私たちは最初カラーセンサを上の写真のⒶの位置に取り付...
また改修後カラーセンサーの固定が甘く時によって値が変化...
**缶をつかむ機構について [#b6810553]
このロボットでは缶に囲いを被せる形で缶のキャッチを行った...
*プログラム [#b79376de]
**交差点の識別方法 [#v3b9b597]
今回の課題の最大の壁は交差点をいかにして認識するでした。...
&ref(2018a/Member/montbell/Mission2/プロトコル.JPG,70%,Mi...
**関数...の前に [#bb49b518]
まず次の文章をプログラムしました。説明は省略します。
#!/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 = 0.491
mR.reset()
mL.reset()
**関数 [#me652ce4]
関数を作成します。
:ロボットを希望する方向へ動かす関数|
与えられた数値だけ動かす
def move_position(R,L):
mR.run_to_rel_pos(position_sp=R, speed_sp=130, stop_...
mL.run_to_rel_pos(position_sp=L, speed_sp=130, stop_...
直進
def move_foward():
mR.run_forever(speed_sp=140, stop_action='brake')
mL.run_forever(speed_sp=140, stop_action='brake')
緩やかに右
def move_right1():
mR.run_forever(speed_sp=60, stop_action='brake')
mL.run_forever(speed_sp=100, stop_action='brake')
右に曲がる
def move_right2():
mR.run_forever(speed_sp=35, stop_action='brake')
mL.run_forever(speed_sp=100, stop_action='brake')
右急カーブ
def move_right3():
mR.run_forever(speed_sp=-55, stop_action='brake')
mL.run_forever(speed_sp=90, stop_action='brake')
緩やかに左
def move_left1():
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=60, stop_action='brake')
左に曲がる
def move_left2():
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=35, stop_action='brake')
左急カーブ
def move_left3():
mR.run_forever(speed_sp=90, stop_action='brake')
mL.run_forever(speed_sp=-55, stop_action='brake')
停止
def stop():
mR.run_timed(time_sp=0, speed_sp=0, stop_action='coa...
mL.run_timed(time_sp=0, speed_sp=0, stop_action='coa...
:アームを動かす関数|
正の値で下げ、負の値で上げる。
def armturn(t):
mA.run_to_rel_pos(position_sp=t, speed_sp=70, stop_a...
sleep(1)
:ラインの右側をトレースする関数|
&ref(2018a/Member/montbell/Mission2/IMG_20180815_212749.p...
ここではカラーセンサの値によってロボットの進み方を7段階...
def toresu_right():
t0 = time.time()
while time.time() - t0 < Itime:
if 75 < cs.value(0):
t0 = time.time()
if 60 < cs.value(0) < 75:
move_left2()
t0 = time.time()
if 50 < cs.value(0) < 60:
move_left1()
t0 = time.time()
if 45 < cs.value(0) < 50:
move_foward()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_right1()
t0 = time.time()
if 35 < cs.value(0) < 40:
move_right2()
if cs.value(0) < 35:
move_right3()
:ラインの左端をトレースする関数|
ラインの右側をトレースする関数と同じプロトコルで進む向き...
def toresu_left():
t0 = time.time()
while time.time() - t0 < Itime:
while 75 < cs.value(0):
move_right3()
t0 = time.time()
while 60 < cs.value(0) < 75:
move_right2()
t0 = time.time()
while 50 < cs.value(0) < 60:
move_right1()
t0 = time.time()
while 45 < cs.value(0) < 50:
move_foward()
t0 = time.time()
while 40 < cs.value(0) < 45:
move_left1()
while 35 < cs.value(0) < 40:
move_left2()
while cs.value(0) < 35:
move_left3()
:ロボットを左トレースに復帰させる関数|
run_to_rel_posを使用しロボットの体勢を整えたうえで黒いラ...
def return_toresu_left(R,L):
mR.run_to_rel_pos(position_sp=R, speed_sp=100, stop_...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_...
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_...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_...
sleep(6.5)
while cs.value(0) > 45:
move_left1()
:ロボットをサークル上で右トレースに復帰させる関数|
交差点LやKなどで使用する。run_to_rel_posで交差点を乗り越...
def return_circle_right():
mR.run_to_rel_pos(position_sp=180, speed_sp=80, stop...
mL.run_to_rel_pos(position_sp=0, speed_sp=80, stop_a...
sleep(4)
while cs.value(0) > 40:
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=0, stop_action='brake')
:ロボットをサークル上で左トレースに復帰させる関数|
ロボットをサークル上で右トレースに復帰させる関数と同じプ...
def return_circle_left():
mL.run_to_rel_pos(position_sp=180, speed_sp=80, stop...
mR.run_to_rel_pos(position_sp=0, speed_sp=80, stop_a...
sleep(4)
while cs.value(0) > 40:
mL.run_forever(speed_sp=100, stop_action='brake')
mR.run_forever(speed_sp=0, stop_action='brake')
:ロボットを白いエリアに出るまで左に急旋回させる関数|
おもに交差点Dで使用するために作成した。交差点から抜け出す...
def return_circle_right_W():
while cs.value(0) < 45:
mR.run_forever(speed_sp=80, stop_action='brake')
mL.run_forever(speed_sp=-30, stop_action='brake')
:ロボットを白いエリアに出るまで右に急旋回させる関数|
上記の関数が非常に役立つことが判明したため作成した。上記...
def return_circle_left_W():
while cs.value(0) < 45:
mR.run_forever(speed_sp=-30, stop_action='brake')
mL.run_forever(speed_sp=80, stop_action='brake')
:トレースする端を切り替える関数|
交差点Gを通過後に、左トレースから右トレースに切り替えるた...
def return_circle_foward_W():
mR.run_to_rel_pos(position_sp=60, speed_sp=80, stop_...
mL.run_to_rel_pos(position_sp=60, speed_sp=80, stop_...
sleep(2)
while cs.value(0) < 45:
mR.run_forever(speed_sp=50, stop_action='brake')
mL.run_forever(speed_sp=50, stop_action='brake')
**実際に走行させるためのプログラム [#w11dd679]
return_toresu_left(360,360) //スタート位置Aを突...
toresu_left()
stop()
sleep(2)
return_toresu_left(0,240) //交差点Cを突破
toresu_left()
stop()
armturn(110) //・・・・・?
sleep(1)
return_circle_right_W()
toresu_left()
stop() //交差点D
sleep(3)
armturn(25) //缶をキャッチ
sleep(1)
return_circle_right_W()
toresu_left()
return_circle_left() //交差点E
toresu_left()
stop()
sleep(3) //交差点F
return_circle_right_W()
toresu_left()
stop() //交差点G
sleep(3)
return_circle_foward_W() //左トレースから右...
toresu_right()
stop()
sleep(1)
return_circle_left_W() //直角カーブ
toresu_right()
toresu_right()
return_circle_right_W() //2個目のヘアピン...
toresu_left()
stop() //交差点H
sleep(3)
return_toresu_left(-290,0)
return_circle_left_W() //・・・・・・・...
toresu_right()
return_circle_left_W() //交差点I
stop()
sleep(3)
toresu_right()
return_circle_right() //交差点L
toresu_right()
return_circle_right() //交差点K
toresu_right()
stop()
sleep(3) //交差点J
move_position(185,-345) //Yに缶を置きに行く
sleep(3)
armturn(-140) //缶をリリース
stop()
sleep(2)
return_toresu_right(-60,-625) //JB間の左トレース...
return_circle_right_W()
toresu_left()
stop()
sleep(3) //交差点B
return_circle_right_W()
toresu_left()
stop()
sleep(1)
move_position(230,1100) //ゾーンAに駐車
sleep(8)
stop()
:?について|
缶をキャッチする際に悩まされたのは交差点Dにおいてロボット...
:?について|
ここでは交差点Hへの進入角度によってはIH間への復帰の際コー...
*最後に [#s74396f3]
今回の課題は予想以上に難しくほとんど予定通りにいかなか...
信頼性のある完成形を作ることができず、本番では交差点の誤...
終了行:
*目次 [#e1e7976c]
#contents
前回の課題
[[2018a/Member/montbell/Mission1]]
*課題?:ライントレーサー [#de3e13ad]
今回の課題は指定されたコースを各チームで作成し、「ミッシ...
&ref(2018a/Member/montbell/Mission2/2018a-mission2.png,70...
(オレンジが順路、緑が缶を拾う位置、紫が缶を置く位置を示...
*躯体本体 [#tea846eb]
**各部名称 [#k85dc485]
&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')
地面の色を判別するセンサ。これを使用し黒い線を判別さ...
**カラーセンサーの取り付け位置について [#a73e0e8e]
私たちは最初カラーセンサを上の写真のⒶの位置に取り付...
また改修後カラーセンサーの固定が甘く時によって値が変化...
**缶をつかむ機構について [#b6810553]
このロボットでは缶に囲いを被せる形で缶のキャッチを行った...
*プログラム [#b79376de]
**交差点の識別方法 [#v3b9b597]
今回の課題の最大の壁は交差点をいかにして認識するでした。...
&ref(2018a/Member/montbell/Mission2/プロトコル.JPG,70%,Mi...
**関数...の前に [#bb49b518]
まず次の文章をプログラムしました。説明は省略します。
#!/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 = 0.491
mR.reset()
mL.reset()
**関数 [#me652ce4]
関数を作成します。
:ロボットを希望する方向へ動かす関数|
与えられた数値だけ動かす
def move_position(R,L):
mR.run_to_rel_pos(position_sp=R, speed_sp=130, stop_...
mL.run_to_rel_pos(position_sp=L, speed_sp=130, stop_...
直進
def move_foward():
mR.run_forever(speed_sp=140, stop_action='brake')
mL.run_forever(speed_sp=140, stop_action='brake')
緩やかに右
def move_right1():
mR.run_forever(speed_sp=60, stop_action='brake')
mL.run_forever(speed_sp=100, stop_action='brake')
右に曲がる
def move_right2():
mR.run_forever(speed_sp=35, stop_action='brake')
mL.run_forever(speed_sp=100, stop_action='brake')
右急カーブ
def move_right3():
mR.run_forever(speed_sp=-55, stop_action='brake')
mL.run_forever(speed_sp=90, stop_action='brake')
緩やかに左
def move_left1():
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=60, stop_action='brake')
左に曲がる
def move_left2():
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=35, stop_action='brake')
左急カーブ
def move_left3():
mR.run_forever(speed_sp=90, stop_action='brake')
mL.run_forever(speed_sp=-55, stop_action='brake')
停止
def stop():
mR.run_timed(time_sp=0, speed_sp=0, stop_action='coa...
mL.run_timed(time_sp=0, speed_sp=0, stop_action='coa...
:アームを動かす関数|
正の値で下げ、負の値で上げる。
def armturn(t):
mA.run_to_rel_pos(position_sp=t, speed_sp=70, stop_a...
sleep(1)
:ラインの右側をトレースする関数|
&ref(2018a/Member/montbell/Mission2/IMG_20180815_212749.p...
ここではカラーセンサの値によってロボットの進み方を7段階...
def toresu_right():
t0 = time.time()
while time.time() - t0 < Itime:
if 75 < cs.value(0):
t0 = time.time()
if 60 < cs.value(0) < 75:
move_left2()
t0 = time.time()
if 50 < cs.value(0) < 60:
move_left1()
t0 = time.time()
if 45 < cs.value(0) < 50:
move_foward()
t0 = time.time()
if 40 < cs.value(0) < 45:
move_right1()
t0 = time.time()
if 35 < cs.value(0) < 40:
move_right2()
if cs.value(0) < 35:
move_right3()
:ラインの左端をトレースする関数|
ラインの右側をトレースする関数と同じプロトコルで進む向き...
def toresu_left():
t0 = time.time()
while time.time() - t0 < Itime:
while 75 < cs.value(0):
move_right3()
t0 = time.time()
while 60 < cs.value(0) < 75:
move_right2()
t0 = time.time()
while 50 < cs.value(0) < 60:
move_right1()
t0 = time.time()
while 45 < cs.value(0) < 50:
move_foward()
t0 = time.time()
while 40 < cs.value(0) < 45:
move_left1()
while 35 < cs.value(0) < 40:
move_left2()
while cs.value(0) < 35:
move_left3()
:ロボットを左トレースに復帰させる関数|
run_to_rel_posを使用しロボットの体勢を整えたうえで黒いラ...
def return_toresu_left(R,L):
mR.run_to_rel_pos(position_sp=R, speed_sp=100, stop_...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_...
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_...
mL.run_to_rel_pos(position_sp=L, speed_sp=100, stop_...
sleep(6.5)
while cs.value(0) > 45:
move_left1()
:ロボットをサークル上で右トレースに復帰させる関数|
交差点LやKなどで使用する。run_to_rel_posで交差点を乗り越...
def return_circle_right():
mR.run_to_rel_pos(position_sp=180, speed_sp=80, stop...
mL.run_to_rel_pos(position_sp=0, speed_sp=80, stop_a...
sleep(4)
while cs.value(0) > 40:
mR.run_forever(speed_sp=100, stop_action='brake')
mL.run_forever(speed_sp=0, stop_action='brake')
:ロボットをサークル上で左トレースに復帰させる関数|
ロボットをサークル上で右トレースに復帰させる関数と同じプ...
def return_circle_left():
mL.run_to_rel_pos(position_sp=180, speed_sp=80, stop...
mR.run_to_rel_pos(position_sp=0, speed_sp=80, stop_a...
sleep(4)
while cs.value(0) > 40:
mL.run_forever(speed_sp=100, stop_action='brake')
mR.run_forever(speed_sp=0, stop_action='brake')
:ロボットを白いエリアに出るまで左に急旋回させる関数|
おもに交差点Dで使用するために作成した。交差点から抜け出す...
def return_circle_right_W():
while cs.value(0) < 45:
mR.run_forever(speed_sp=80, stop_action='brake')
mL.run_forever(speed_sp=-30, stop_action='brake')
:ロボットを白いエリアに出るまで右に急旋回させる関数|
上記の関数が非常に役立つことが判明したため作成した。上記...
def return_circle_left_W():
while cs.value(0) < 45:
mR.run_forever(speed_sp=-30, stop_action='brake')
mL.run_forever(speed_sp=80, stop_action='brake')
:トレースする端を切り替える関数|
交差点Gを通過後に、左トレースから右トレースに切り替えるた...
def return_circle_foward_W():
mR.run_to_rel_pos(position_sp=60, speed_sp=80, stop_...
mL.run_to_rel_pos(position_sp=60, speed_sp=80, stop_...
sleep(2)
while cs.value(0) < 45:
mR.run_forever(speed_sp=50, stop_action='brake')
mL.run_forever(speed_sp=50, stop_action='brake')
**実際に走行させるためのプログラム [#w11dd679]
return_toresu_left(360,360) //スタート位置Aを突...
toresu_left()
stop()
sleep(2)
return_toresu_left(0,240) //交差点Cを突破
toresu_left()
stop()
armturn(110) //・・・・・?
sleep(1)
return_circle_right_W()
toresu_left()
stop() //交差点D
sleep(3)
armturn(25) //缶をキャッチ
sleep(1)
return_circle_right_W()
toresu_left()
return_circle_left() //交差点E
toresu_left()
stop()
sleep(3) //交差点F
return_circle_right_W()
toresu_left()
stop() //交差点G
sleep(3)
return_circle_foward_W() //左トレースから右...
toresu_right()
stop()
sleep(1)
return_circle_left_W() //直角カーブ
toresu_right()
toresu_right()
return_circle_right_W() //2個目のヘアピン...
toresu_left()
stop() //交差点H
sleep(3)
return_toresu_left(-290,0)
return_circle_left_W() //・・・・・・・...
toresu_right()
return_circle_left_W() //交差点I
stop()
sleep(3)
toresu_right()
return_circle_right() //交差点L
toresu_right()
return_circle_right() //交差点K
toresu_right()
stop()
sleep(3) //交差点J
move_position(185,-345) //Yに缶を置きに行く
sleep(3)
armturn(-140) //缶をリリース
stop()
sleep(2)
return_toresu_right(-60,-625) //JB間の左トレース...
return_circle_right_W()
toresu_left()
stop()
sleep(3) //交差点B
return_circle_right_W()
toresu_left()
stop()
sleep(1)
move_position(230,1100) //ゾーンAに駐車
sleep(8)
stop()
:?について|
缶をキャッチする際に悩まされたのは交差点Dにおいてロボット...
:?について|
ここでは交差点Hへの進入角度によってはIH間への復帰の際コー...
*最後に [#s74396f3]
今回の課題は予想以上に難しくほとんど予定通りにいかなか...
信頼性のある完成形を作ることができず、本番では交差点の誤...
ページ名: