2018a/Member/Seiya/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/Member]]
#contents
*課題3の内容 [#of320eb5]
#ref(./2018a-mission2.png,50%)
フィールドは課題2で使用した紙を使用する。2種類の空き缶(A...
*扱うロボットの説明 [#p8844182]
**ロボットの全容 [#wbceff85]
#ref(./DSCPDC_0000_BURST20180806173415582.png,50%)
緑色の丸で囲った部分は超音波センサーである。
また本体は主に3つのパーツで出来ている。
**アーム部分 [#ge57f90a]
#ref(./DSC_0295.png,50%)
1.ラバーパーツが付いていて、2の青い丸で囲まれた部分に挟ま...
2&3.缶を運ぶために挟む部分を二つに分けてある
**タイヤ部分 [#y9cd96aa]
#ref(./DSC_0297.JPG,50%)
モーターを二つ使い、旋回を可能にした。また、エレベーター...
**エレベーター部分 [#acad4135]
#ref(./DSC_0296.JPG,50%)
1,エレベーター部分を動かすモーター
2.左側は右側とは逆に回るようにはぐるまで繋がっている
3.アーム部分を上下させるエレベーター部分
*缶の運搬の戦略 [#v008b1c0]
ここでは缶の大まかな動き方を説明する。
1.円Y内のABAと積まれている缶を上の方にAの缶を二つ集め、下...
2.Aの缶を二つ持ちながら、円Xに移動する
3.円Xも円Y同様に缶をそろぞれ分けながら床に置き、円Xに持っ...
4.円Yに円Xで仕分けたBの缶二つを持って行き、円Yで積み上げる
*実行プログラムの説明 [#w6ceed9b]
**プログラムの定義部分 [#p27db87b]
#!/usr/bin/env python3
from ev3dev.ev3 import * #EV3を扱うモジュールをイ...
from time import sleep #timeモジュールからsleep...
us1 = UltrasonicSensor('in1') #1端子側の超音波センサー...
us2 = UltrasonicSensor('in3') #3端子側の超音波センサー...
mL = LargeMotor('outA') #A端子側の移動用モーター...
mR = LargeMotor('outB') #B端子側の移動用モーター...
mA = MediumMotor('outC') #C端子側のアーム開閉用モ...
mLif = LargeMotor('outD') #D端子側の無限軌道制御用...
以下は各位置での缶をアームでつかんでの積み降ろしをするた...
lif2 = 250 #ある缶から一個上の缶までアーム...
lif3 = 495 #ある缶から二個上の缶までアーム...
dow3 = -520 #ある缶から二個下の缶までアーム...
dow2 = -280 #ある缶から一個下の缶までアーム...
**ロボットの移動のプログラム [#m4e7ac08]
def motor_init(): #各モーターをリセットする
mL.reset()
mR.reset()
mLif.reset()
def turn(t): #右回りを正とし,指定角度 t だけ移...
mL.run_to_rel_pos(position_sp=t,speed_sp=60,stop_act...
mR.run_to_rel_pos(position_sp=-t,speed_sp=60,stop_ac...
sleep(3)
def run_for_back_pos(t): #指定角度 t だけ移動用モーター...
motor_init()
mL.run_to_rel_pos(position_sp=t,speed_sp=60,stop_act...
mR.run_to_rel_pos(position_sp=t,speed_sp=60,stop_act...
sleep(1)
def run_adjust(t): #上述定義を用いて,前進または後...
run_for_back_pos(t)
**アームの開閉時のプログラム [#t4ddfe62]
def arm_open(): #アームを開く
mA.reset()
mA.run_to_rel_pos(position_sp=-20,speed_sp=20,stop_a...
sleep(2)
def arm_close(): #アームを閉じる
mA.reset()
mA.run_to_rel_pos(position_sp=50,speed_sp=50,stop_ac...
sleep(2)
def arm_adjust(t): #アーム開閉時に調整のために用いる(m...
mA.reset()
mA.run_to_rel_pos(position_sp=t,speed_sp=50,stop_act...
sleep(1)
後の缶を降ろす作業の際に,アームのキャッチングの位置によ...
**アームの昇降時のプログラム [#m7ab2294]
def lift_can2(): #アームが,ある缶から一個上の缶...
motor_init()
mLif.run_to_rel_pos(position_sp=lif2,speed_sp=80,sto...
sleep(3)
def lift_can3(): #ある缶から二個上の缶まで上昇する
motor_init()
mLif.run_to_rel_pos(position_sp=lif3,speed_sp=80,sto...
sleep(6)
def down_can2(): #ある缶から一個下の缶まで降下する
motor_init()
mLif.run_to_rel_pos(position_sp=dow2,speed_sp=75,sto...
sleep(5)
def down_can3(): #ある缶から二個下の缶目で降下する
motor_init()
mLif.run_to_rel_pos(position_sp=dow3,speed_sp=75,sto...
sleep(6)
def lift_adjust(t): #上述に定義した値以外で昇降を調整(...
motor_init()
mLif.run_to_rel_pos(position_sp=t,speed_sp=60,stop_a...
sleep(3)
def can_approach(): #缶の積み降ろしの前に,缶を見つけ,...
motor_init()
while us1.value() > 70: #缶との距離が一定値超の時,...
mL.run_forever(speed_sp=80)
mR.run_forever(speed_sp=80)
run_for_back_pos(80) #一定の距離まで近づいたら,...
sleep(2)
def turn_can_search(le,s): #前方にある缶を探して旋回
motor_init()
while us1.value() > le:
mL.run_forever(speed_sp=50*s)
mR.run_forever(speed_sp=-50*s)
turn(20*s) #検知した後,正面を向くよう修正
sleep(2)
今回は超音波センサーを用い、その検知可能範囲の長さを le (...
**始まりから缶を探し向き合うプログラム [#q7f02f22]
def start(): #スターティングポイントよりB地点に向...
motor_init()
run_for_back_pos(600) #↓で旋回して缶の正面になるよ...
sleep(8)
turn(165) #缶の正面を向くよう旋回
sleep(2)
turn(20) #旋回して缶を見つける準備に入る
turn_can_search(250,-1)#左回りに旋回して缶を探す
turn(-5) #方向修正
**缶の積み降ろし&運搬するプログラム [#m8f27d0c]
def lift_down_can3_can2(): #三段目の缶と二段目の缶をアー...
motor_init()
lift_can3() //三段目の缶まで移動
arm_close() //アームを閉じる
lift_adjust(45) //移動の際に下の缶を引っ...
run_adjust(-100) //後退
sleep(2)
turn(-110) //左へ旋回
down_can3() //缶をとりあえず降ろす
lift_adjust(-40) //最下点まで降ろすよう調整
arm_open() //アームを開いて缶をリリ...
run_for_back_pos(250) //左斜め前方まで押して移動
sleep(3.5)
lift_can3() //移動の際に缶を引っ掛け...
lift_adjust(45)
run_for_back_pos(-250) //積まれた缶の前まで下がる
sleep(3.5)
turn(110) //缶の正面へ旋回
arm_adjust(-10) //アームを少し開く(確実...
down_can2() //二段目の缶までアームを...
run_adjust(113) //缶の手前まで接近
sleep(2.5)
arm_close() //アームを閉じて缶をキャ...
lift_adjust(45) //缶を少し持ち上げる
run_for_back_pos(-90) //少し後退 ←この時二段...
turn(110) //右へ旋回
down_can2() //缶を降ろす
arm_open() //アームを開いて缶をリリ...
lift_can2() //アームを上げとく(↓coll...
試行中に何度も缶をキャッチする際に超音波センサーが反応し...
def collect_can1_can3(): //三段目と左斜め前方に移した一...
motor_init()
turn(-115) //二段目を降ろしてアーム...
down_can2() //二段目にあったアームを...
run_adjust(110) //三段目の缶がアームの中...
sleep(1.5)
arm_close() #7up / CClemon //アームを閉じて缶を...
run_for_back_pos(-320) //後退 ←旋回しても,アー...
sleep(6)
lift_can3() //缶をキャッチしたまま上...
turn_can_search(300,-1) //最初に移した缶を探し,...
down_can3() //缶を最下点まで降ろす
arm_open() //アームを開いて缶をリリ...
arm_adjust(-10) //二つの缶が入るようにア...
run_for_back_pos(500) //アームの中に二つの缶が...
sleep(6)
arm_adjust(20) //アームを閉じて缶をまと...
以下は,二つの同種の缶をキャッチした状態から,手前側の固...
def pile_can():
lift_can3() #手前側のキャッチして固定...
run_for_back_pos(130) #残された缶に,積み降ろし...
sleep(3)
lift_adjust(40) #上げる過程で傾いた缶を慣...
lift_adjust(-180) #缶を積む
arm_open() #アームを開いて積まれた缶...
以下は,Y地点での缶の積み降ろしが終わった後,X地点の積み...
def can_approach2():
motor_init()
run_for_back_pos(-15) #C地点辺りで二つの缶を降ろし...
lift_can2() #周辺の缶を後の動作でアーム...
lift_adjust(65) #もう少し上げておく(これが後...
sleep(2)
run_for_back_pos(-275) #B地点辺りまで後退
sleep(6)
turn(100) #旋回してX地点の方向に合わせる
run_for_back_pos(730) #X地点の缶を目指してテキトー...
sleep(11.5)
turn(-80) #旋回して,缶を見つける準備...
turn_can_search(300,1) #右回りに旋回しながら缶を探す
turn(20) #適当な位置に正面を戻す
arm_adjust(-5) #缶を少し開いておく
run_for_back_pos(100) #ある程度の距離まで缶に接近
sleep(3)
down_can2() #アームを下げておく(lift_dow...
(↑ここで利いてくる.一つの...
以下はX地点での缶の積み降ろしと分別を終えた状態から,二つ...
def toward_circleY():
motor_init()
arm_close() #アームをしっかり閉じる
arm_adjust(11)
turn(-360) #Y地点へ向かうため後方へ方向...
sleep(5)
turn(25) #少し旋回
turn(-25) #戻る
pile_can() #二つの缶を二段に積み上げる
down_can2() #積み上げてアームを開いた後,...
lift_adjust(-70) #最下点まで下げておく
sleep(1)
run_for_back_pos(20) #缶を確実につかむため接近
arm_close() #アームを閉じて缶をキャッチ
lift_adjust(20) #缶を少し浮かせ,後の移動で引...
run_for_back_pos(380) #サークル付近にある最初に降ろ...
sleep(7)
arm_adjust(5) #缶をしっかりつかむ
lift_adjust(340) #缶をキャッチしたまま上げて,...
sleep(6) #↓右回りに旋回し,左回りの検...
mL.run_to_rel_pos(position_sp=45,speed_sp=40,stop_ac...
mR.run_to_rel_pos(position_sp=-45,speed_sp=40,stop_a...
sleep(4)
turn_can_search(300,-1)#左回りに旋回して缶を検知する
lift_adjust(-410) #缶を地面まで降ろす
sleep(7)
arm_open() #アームを開き缶をリリース(can...
以下は,二つの缶の二段積みを終えて,移動し、二つの缶をキ...
def can7up_catch():
motor_init()
lift_can3() #移動中,缶に引っ掛けないよう...
lift_adjust(70)
run_for_back_pos(-250) #後退
sleep(4)
turn(130) #旋回
sleep(1.5)
while us2.value() > 160: #側面にある超音波センサーが...
mL.run_forever(speed_sp=60)
mR.run_forever(speed_sp=-60)
turn(40) #外周のラインに対してほぼ垂直...
run_for_back_pos(200) #車体が外周ラインに乗るまで前...
sleep(6)
turn(-170) #ラインに平行になるよう旋回(C...
sleep(2)
arm_adjust(-15) #二つの缶が確実にアームの中に...
sleep(1)
down_can3() #アームを最下点まで下げておく
lift_adjust(-25)
while us1.value() > 70: #缶との距離が一定値超のとき...
mL.run_forever(speed_sp=60)
mR.run_forever(speed_sp=60)
run_for_back_pos(100) #缶との距離が一定値に達したら...
arm_close() #アームを閉じて缶をキャッチ
arm_open() #アームを開く(toward_circleX()...
以下は二つの缶をキャッチした状態より二段に缶を積む上げてX...
def toward_circleX():
motor_init()
arm_close() #アームを閉じる
pile_can() #缶を二段に積み上げる(最後はア...
down_can2() #最下点まで下げておく
lift_adjust(-110)
sleep(1)
run_for_back_pos(20) #下の缶を確実にキャッチできる...
arm_close() #アームを閉じて缶をキャッチ
arm_adjust(8) #缶をしっかりキャッチ
lift_adjust(20) #缶を少し浮かせ,後の移動で引...
run_for_back_pos(-110)#↓で旋回に入ったとき積んだ缶に...
mL.run_to_rel_pos(position_sp=-300,speed_sp=40,stop_...
mR.run_to_rel_pos(position_sp=300,speed_sp=40,stop_a...
sleep(8) #↑X地点のほうへ旋回
arm_adjust(8) #ここまでの過程でアームが緩む...
lift_adjust(320) #缶を上げて,正面の超音波セン...
sleep(5)
turn_can_search(500,1)#右回りに旋回して,缶を探す
turn(20) #方向修正
lift_adjust(-320) #缶を降ろす
sleep(6)
run_for_back_pos(220) #X地点の側の缶にある程度近づく
sleep(7)
turn_can_search(300,-1)#左回りに旋回して,缶を探す(...
turn(-15) #方向修正
while us1.value() > 80: #缶との距離が一定値超の時,...
mL.run_forever(speed_sp=70)
mR.run_forever(speed_sp=70)
pile_can() #缶を積み,三段に積み上げる(...
down_can2() #最下点まで下げておく
lift_adjust(-85)
sleep(1)
arm_close() #三段に積まれた缶をキャッチ
mL.run_to_rel_pos(position_sp=-110,speed_sp=30,stop_...
mR.run_to_rel_pos(position_sp=110,speed_sp=30,stop_a...
sleep(5) #↑三段に積まれた缶をサークル...
arm_open() #アームを開いて三段に積まれた...
**実行するプログラム [#v048ed35]
start() //A地点から前進しB地点で旋回。Y地点の缶の方...
can_approach() //接近する
lift_can3_can2() //Y地点の缶を緑は左、黄色は右に積み下...
collect_can1_can3() //緑の缶を2本整列させる
can_approach2() //X地点に向かう
can_approach() //X地点の缶に近づく
lift_down_can3_can2() //黄色は左、緑は右に缶を積み下ろす
collect_can1_can3() //黄色の缶を整列させる
toward_circleY() //Y地点に黄色の缶を積み上げる
can7up_catch() //緑の缶を掴む
toward_circleX() //緑の缶をX地点に運搬し積み上げる
*反省点とこの授業を終えて [#scac0bf1]
たった一つの関数、たった一つの変数がそれ以降のプログラム...
終了行:
[[2018a/Member]]
#contents
*課題3の内容 [#of320eb5]
#ref(./2018a-mission2.png,50%)
フィールドは課題2で使用した紙を使用する。2種類の空き缶(A...
*扱うロボットの説明 [#p8844182]
**ロボットの全容 [#wbceff85]
#ref(./DSCPDC_0000_BURST20180806173415582.png,50%)
緑色の丸で囲った部分は超音波センサーである。
また本体は主に3つのパーツで出来ている。
**アーム部分 [#ge57f90a]
#ref(./DSC_0295.png,50%)
1.ラバーパーツが付いていて、2の青い丸で囲まれた部分に挟ま...
2&3.缶を運ぶために挟む部分を二つに分けてある
**タイヤ部分 [#y9cd96aa]
#ref(./DSC_0297.JPG,50%)
モーターを二つ使い、旋回を可能にした。また、エレベーター...
**エレベーター部分 [#acad4135]
#ref(./DSC_0296.JPG,50%)
1,エレベーター部分を動かすモーター
2.左側は右側とは逆に回るようにはぐるまで繋がっている
3.アーム部分を上下させるエレベーター部分
*缶の運搬の戦略 [#v008b1c0]
ここでは缶の大まかな動き方を説明する。
1.円Y内のABAと積まれている缶を上の方にAの缶を二つ集め、下...
2.Aの缶を二つ持ちながら、円Xに移動する
3.円Xも円Y同様に缶をそろぞれ分けながら床に置き、円Xに持っ...
4.円Yに円Xで仕分けたBの缶二つを持って行き、円Yで積み上げる
*実行プログラムの説明 [#w6ceed9b]
**プログラムの定義部分 [#p27db87b]
#!/usr/bin/env python3
from ev3dev.ev3 import * #EV3を扱うモジュールをイ...
from time import sleep #timeモジュールからsleep...
us1 = UltrasonicSensor('in1') #1端子側の超音波センサー...
us2 = UltrasonicSensor('in3') #3端子側の超音波センサー...
mL = LargeMotor('outA') #A端子側の移動用モーター...
mR = LargeMotor('outB') #B端子側の移動用モーター...
mA = MediumMotor('outC') #C端子側のアーム開閉用モ...
mLif = LargeMotor('outD') #D端子側の無限軌道制御用...
以下は各位置での缶をアームでつかんでの積み降ろしをするた...
lif2 = 250 #ある缶から一個上の缶までアーム...
lif3 = 495 #ある缶から二個上の缶までアーム...
dow3 = -520 #ある缶から二個下の缶までアーム...
dow2 = -280 #ある缶から一個下の缶までアーム...
**ロボットの移動のプログラム [#m4e7ac08]
def motor_init(): #各モーターをリセットする
mL.reset()
mR.reset()
mLif.reset()
def turn(t): #右回りを正とし,指定角度 t だけ移...
mL.run_to_rel_pos(position_sp=t,speed_sp=60,stop_act...
mR.run_to_rel_pos(position_sp=-t,speed_sp=60,stop_ac...
sleep(3)
def run_for_back_pos(t): #指定角度 t だけ移動用モーター...
motor_init()
mL.run_to_rel_pos(position_sp=t,speed_sp=60,stop_act...
mR.run_to_rel_pos(position_sp=t,speed_sp=60,stop_act...
sleep(1)
def run_adjust(t): #上述定義を用いて,前進または後...
run_for_back_pos(t)
**アームの開閉時のプログラム [#t4ddfe62]
def arm_open(): #アームを開く
mA.reset()
mA.run_to_rel_pos(position_sp=-20,speed_sp=20,stop_a...
sleep(2)
def arm_close(): #アームを閉じる
mA.reset()
mA.run_to_rel_pos(position_sp=50,speed_sp=50,stop_ac...
sleep(2)
def arm_adjust(t): #アーム開閉時に調整のために用いる(m...
mA.reset()
mA.run_to_rel_pos(position_sp=t,speed_sp=50,stop_act...
sleep(1)
後の缶を降ろす作業の際に,アームのキャッチングの位置によ...
**アームの昇降時のプログラム [#m7ab2294]
def lift_can2(): #アームが,ある缶から一個上の缶...
motor_init()
mLif.run_to_rel_pos(position_sp=lif2,speed_sp=80,sto...
sleep(3)
def lift_can3(): #ある缶から二個上の缶まで上昇する
motor_init()
mLif.run_to_rel_pos(position_sp=lif3,speed_sp=80,sto...
sleep(6)
def down_can2(): #ある缶から一個下の缶まで降下する
motor_init()
mLif.run_to_rel_pos(position_sp=dow2,speed_sp=75,sto...
sleep(5)
def down_can3(): #ある缶から二個下の缶目で降下する
motor_init()
mLif.run_to_rel_pos(position_sp=dow3,speed_sp=75,sto...
sleep(6)
def lift_adjust(t): #上述に定義した値以外で昇降を調整(...
motor_init()
mLif.run_to_rel_pos(position_sp=t,speed_sp=60,stop_a...
sleep(3)
def can_approach(): #缶の積み降ろしの前に,缶を見つけ,...
motor_init()
while us1.value() > 70: #缶との距離が一定値超の時,...
mL.run_forever(speed_sp=80)
mR.run_forever(speed_sp=80)
run_for_back_pos(80) #一定の距離まで近づいたら,...
sleep(2)
def turn_can_search(le,s): #前方にある缶を探して旋回
motor_init()
while us1.value() > le:
mL.run_forever(speed_sp=50*s)
mR.run_forever(speed_sp=-50*s)
turn(20*s) #検知した後,正面を向くよう修正
sleep(2)
今回は超音波センサーを用い、その検知可能範囲の長さを le (...
**始まりから缶を探し向き合うプログラム [#q7f02f22]
def start(): #スターティングポイントよりB地点に向...
motor_init()
run_for_back_pos(600) #↓で旋回して缶の正面になるよ...
sleep(8)
turn(165) #缶の正面を向くよう旋回
sleep(2)
turn(20) #旋回して缶を見つける準備に入る
turn_can_search(250,-1)#左回りに旋回して缶を探す
turn(-5) #方向修正
**缶の積み降ろし&運搬するプログラム [#m8f27d0c]
def lift_down_can3_can2(): #三段目の缶と二段目の缶をアー...
motor_init()
lift_can3() //三段目の缶まで移動
arm_close() //アームを閉じる
lift_adjust(45) //移動の際に下の缶を引っ...
run_adjust(-100) //後退
sleep(2)
turn(-110) //左へ旋回
down_can3() //缶をとりあえず降ろす
lift_adjust(-40) //最下点まで降ろすよう調整
arm_open() //アームを開いて缶をリリ...
run_for_back_pos(250) //左斜め前方まで押して移動
sleep(3.5)
lift_can3() //移動の際に缶を引っ掛け...
lift_adjust(45)
run_for_back_pos(-250) //積まれた缶の前まで下がる
sleep(3.5)
turn(110) //缶の正面へ旋回
arm_adjust(-10) //アームを少し開く(確実...
down_can2() //二段目の缶までアームを...
run_adjust(113) //缶の手前まで接近
sleep(2.5)
arm_close() //アームを閉じて缶をキャ...
lift_adjust(45) //缶を少し持ち上げる
run_for_back_pos(-90) //少し後退 ←この時二段...
turn(110) //右へ旋回
down_can2() //缶を降ろす
arm_open() //アームを開いて缶をリリ...
lift_can2() //アームを上げとく(↓coll...
試行中に何度も缶をキャッチする際に超音波センサーが反応し...
def collect_can1_can3(): //三段目と左斜め前方に移した一...
motor_init()
turn(-115) //二段目を降ろしてアーム...
down_can2() //二段目にあったアームを...
run_adjust(110) //三段目の缶がアームの中...
sleep(1.5)
arm_close() #7up / CClemon //アームを閉じて缶を...
run_for_back_pos(-320) //後退 ←旋回しても,アー...
sleep(6)
lift_can3() //缶をキャッチしたまま上...
turn_can_search(300,-1) //最初に移した缶を探し,...
down_can3() //缶を最下点まで降ろす
arm_open() //アームを開いて缶をリリ...
arm_adjust(-10) //二つの缶が入るようにア...
run_for_back_pos(500) //アームの中に二つの缶が...
sleep(6)
arm_adjust(20) //アームを閉じて缶をまと...
以下は,二つの同種の缶をキャッチした状態から,手前側の固...
def pile_can():
lift_can3() #手前側のキャッチして固定...
run_for_back_pos(130) #残された缶に,積み降ろし...
sleep(3)
lift_adjust(40) #上げる過程で傾いた缶を慣...
lift_adjust(-180) #缶を積む
arm_open() #アームを開いて積まれた缶...
以下は,Y地点での缶の積み降ろしが終わった後,X地点の積み...
def can_approach2():
motor_init()
run_for_back_pos(-15) #C地点辺りで二つの缶を降ろし...
lift_can2() #周辺の缶を後の動作でアーム...
lift_adjust(65) #もう少し上げておく(これが後...
sleep(2)
run_for_back_pos(-275) #B地点辺りまで後退
sleep(6)
turn(100) #旋回してX地点の方向に合わせる
run_for_back_pos(730) #X地点の缶を目指してテキトー...
sleep(11.5)
turn(-80) #旋回して,缶を見つける準備...
turn_can_search(300,1) #右回りに旋回しながら缶を探す
turn(20) #適当な位置に正面を戻す
arm_adjust(-5) #缶を少し開いておく
run_for_back_pos(100) #ある程度の距離まで缶に接近
sleep(3)
down_can2() #アームを下げておく(lift_dow...
(↑ここで利いてくる.一つの...
以下はX地点での缶の積み降ろしと分別を終えた状態から,二つ...
def toward_circleY():
motor_init()
arm_close() #アームをしっかり閉じる
arm_adjust(11)
turn(-360) #Y地点へ向かうため後方へ方向...
sleep(5)
turn(25) #少し旋回
turn(-25) #戻る
pile_can() #二つの缶を二段に積み上げる
down_can2() #積み上げてアームを開いた後,...
lift_adjust(-70) #最下点まで下げておく
sleep(1)
run_for_back_pos(20) #缶を確実につかむため接近
arm_close() #アームを閉じて缶をキャッチ
lift_adjust(20) #缶を少し浮かせ,後の移動で引...
run_for_back_pos(380) #サークル付近にある最初に降ろ...
sleep(7)
arm_adjust(5) #缶をしっかりつかむ
lift_adjust(340) #缶をキャッチしたまま上げて,...
sleep(6) #↓右回りに旋回し,左回りの検...
mL.run_to_rel_pos(position_sp=45,speed_sp=40,stop_ac...
mR.run_to_rel_pos(position_sp=-45,speed_sp=40,stop_a...
sleep(4)
turn_can_search(300,-1)#左回りに旋回して缶を検知する
lift_adjust(-410) #缶を地面まで降ろす
sleep(7)
arm_open() #アームを開き缶をリリース(can...
以下は,二つの缶の二段積みを終えて,移動し、二つの缶をキ...
def can7up_catch():
motor_init()
lift_can3() #移動中,缶に引っ掛けないよう...
lift_adjust(70)
run_for_back_pos(-250) #後退
sleep(4)
turn(130) #旋回
sleep(1.5)
while us2.value() > 160: #側面にある超音波センサーが...
mL.run_forever(speed_sp=60)
mR.run_forever(speed_sp=-60)
turn(40) #外周のラインに対してほぼ垂直...
run_for_back_pos(200) #車体が外周ラインに乗るまで前...
sleep(6)
turn(-170) #ラインに平行になるよう旋回(C...
sleep(2)
arm_adjust(-15) #二つの缶が確実にアームの中に...
sleep(1)
down_can3() #アームを最下点まで下げておく
lift_adjust(-25)
while us1.value() > 70: #缶との距離が一定値超のとき...
mL.run_forever(speed_sp=60)
mR.run_forever(speed_sp=60)
run_for_back_pos(100) #缶との距離が一定値に達したら...
arm_close() #アームを閉じて缶をキャッチ
arm_open() #アームを開く(toward_circleX()...
以下は二つの缶をキャッチした状態より二段に缶を積む上げてX...
def toward_circleX():
motor_init()
arm_close() #アームを閉じる
pile_can() #缶を二段に積み上げる(最後はア...
down_can2() #最下点まで下げておく
lift_adjust(-110)
sleep(1)
run_for_back_pos(20) #下の缶を確実にキャッチできる...
arm_close() #アームを閉じて缶をキャッチ
arm_adjust(8) #缶をしっかりキャッチ
lift_adjust(20) #缶を少し浮かせ,後の移動で引...
run_for_back_pos(-110)#↓で旋回に入ったとき積んだ缶に...
mL.run_to_rel_pos(position_sp=-300,speed_sp=40,stop_...
mR.run_to_rel_pos(position_sp=300,speed_sp=40,stop_a...
sleep(8) #↑X地点のほうへ旋回
arm_adjust(8) #ここまでの過程でアームが緩む...
lift_adjust(320) #缶を上げて,正面の超音波セン...
sleep(5)
turn_can_search(500,1)#右回りに旋回して,缶を探す
turn(20) #方向修正
lift_adjust(-320) #缶を降ろす
sleep(6)
run_for_back_pos(220) #X地点の側の缶にある程度近づく
sleep(7)
turn_can_search(300,-1)#左回りに旋回して,缶を探す(...
turn(-15) #方向修正
while us1.value() > 80: #缶との距離が一定値超の時,...
mL.run_forever(speed_sp=70)
mR.run_forever(speed_sp=70)
pile_can() #缶を積み,三段に積み上げる(...
down_can2() #最下点まで下げておく
lift_adjust(-85)
sleep(1)
arm_close() #三段に積まれた缶をキャッチ
mL.run_to_rel_pos(position_sp=-110,speed_sp=30,stop_...
mR.run_to_rel_pos(position_sp=110,speed_sp=30,stop_a...
sleep(5) #↑三段に積まれた缶をサークル...
arm_open() #アームを開いて三段に積まれた...
**実行するプログラム [#v048ed35]
start() //A地点から前進しB地点で旋回。Y地点の缶の方...
can_approach() //接近する
lift_can3_can2() //Y地点の缶を緑は左、黄色は右に積み下...
collect_can1_can3() //緑の缶を2本整列させる
can_approach2() //X地点に向かう
can_approach() //X地点の缶に近づく
lift_down_can3_can2() //黄色は左、緑は右に缶を積み下ろす
collect_can1_can3() //黄色の缶を整列させる
toward_circleY() //Y地点に黄色の缶を積み上げる
can7up_catch() //緑の缶を掴む
toward_circleX() //緑の缶をX地点に運搬し積み上げる
*反省点とこの授業を終えて [#scac0bf1]
たった一つの関数、たった一つの変数がそれ以降のプログラム...
ページ名: