2018a/Member/Kondou/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/Member]]
#contents
*課題3について [#n59ea476]
#ref(./2018a-mission2.png,50%,)
フィールドは課題2で使用した紙を使用する.
2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個づつ用意し,...
今回は黄色の缶と緑の缶を使用し、X地点に黄色 緑 黄色、Y...
ロボットに求められる機能は缶を積み上げ、積み下ろす機能と...
*扱うロボットの説明 [#l20bd890]
**全体図 [#n2bb33dc]
#ref(./002.jpg,25%,)
1.超音波センサー
2.ボール
作成したロボットは主に3つのパーツで成り立つ
**アーム部分のパーツ [#w9dd0d68]
#ref(./003.JPG,25%,)
1.缶を掴む際滑り止めとなるゴムのパーツ~
2.この前方のアーム事態につかむ能力はないが、缶を押して...
3.モーターで2つのギアをかいてんさせ、それぞれに取り付け...
**ロボ自体を移動させるパーツ [#c7639184]
#ref(./DSC_0297.JPG,25%,)
二つのタイヤで全身や旋回を行う~
全体を組み立てるとリフトが重く、前方に重心が偏ってしまっ...
**アームを上下に移動させるパーツ [#gfc87e1a]
#ref(./001.JPG,25%,)
モーターでキャタピラを巻き取り、アームを持ち上げる~
1.この部位は、ギアを使うことでもう一列のリフトにも回転...
2.このモーターで巻き上げる
#ref(./DSC_0298.JPG,25%,)
キャタピラ内部のギアを回転させ、巻き取る。~
缶の移動の際に振動が大きく缶を落とすことがあった。そこで...
*缶の積み上げ、および積み下ろし [#z23ccc18]
#ref(./DSC_0003.JPG,25%,)
超音波センサーで感知した缶を整列させる
#ref(./DSC_0286.JPG,25%,)
アームでつかみ、手前の缶を持ち上げる。その後機体を前進さ...
積み下ろしの際はセンサーで缶と適性な距離に接近し、二段目...
*超音波センサーの活用 [#i3e5db66]
今回缶との距離を測るため、または缶の位置を感知するために...
機体の前方と側面に1つずつ設置した。~
缶の位置を探す際に、一定距離以内に缶があると感知するまで...
超音波センサーは缶との接近の精度を高くすることができた
*実行プログラムの説明 [#qbcaca79]
**プログラムの導入 [#xd976cc2]
以下は定義までの導入である
#!/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 //ある缶から一個下の缶までアー...
**定義の挿入 [#ee7436e8]
def motor_init(): //各モーターをリセットする
mL.reset()
mR.reset()
mLif.reset()
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)
**移動用のプログラム [#q7e0dae4]
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)
**缶を超音波センサーで感知するプログラム [#ha51eb25]
def turn_can_search(le,s): //前方の缶を探す
motor_init()
while us1.value() > le: //缶との距離がle以上の時
mL.run_forever(speed_sp=50*s) //缶を探して、左右...
mR.run_forever(speed_sp=-50*s)
turn(20*s) //缶との距離がle以下の時,正面を向くよう...
近距離での精度は非常に高かったが、距離が開くと誤差などが...
**B地点まで進み、缶と向かい合うためのプログラム [#gc7db3...
def start():
motor_init()
run_for_back_pos(600) //適当な位置まで前進
sleep(8)
turn(165) //缶の正面を向くよう旋回
sleep(2)
turn(20)
turn_can_search(250,-1)//左回りに旋回して缶を探す
turn(-5) //向きを調整
**アームの操作に関するプログラム [#t3182e13]
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): //アーム開閉時に調整する(mAの回転角...
mA.reset()
mA.run_to_rel_pos(position_sp=t,speed_sp=50,stop_act...
sleep(1)
**缶の位置を感知するためのプログラム [#k8b43817]
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)
**缶の積み下ろし、積み上げ、運搬を行うプログラム [#j2e8a6...
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()
def collect_can1_can3(): //三段目と左斜め前方に移した一...
motor_init()
turn(-115) //二段目を降ろしてアーム...
down_can2() //二段目にあったアームを...
run_adjust(110) //三段目の缶がアームの中...
sleep(1.5)
arm_close() //アームを閉じて缶をキャ...
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()
def can_approach2(): //Y地点での缶の積み降ろしが終わった...
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() //アームを下げておく
以下は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() //アームを開き缶をリリース(ca...
以下はY地点の黄色の缶をキャッチするためのプログラムであ...
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) //ラインに平行になるよう旋回(...
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(...
以下は、Y地点の緑の缶をX地点に運搬し、3段に積み上げて円...
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) //Y地点の側の缶にある程度近づく
sleep(7)
turn_can_search(300,-1)//左回りに旋回して,缶を探す
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() //アームを開いて三段に積まれ...
缶を掴む際、つかむ位置でバランスが崩れることがあった。リ...
*プログラム全体[#gebc5557]
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地点に運搬し積み上げる
*総括 [#s3663b6f]
授業の中でロボコンを体験出来て貴重な経験になったと思う。
事前のテストではかなりうまくいっており、3段積むことも可能...
その分機体構築においては、求められる機能を達成できるロボ...
を出し合い(キャタピラを使ってリフトを作成する、リフトを2...
この授業の中で機械などを思うように動かす難しさ、チームで...
終了行:
[[2018a/Member]]
#contents
*課題3について [#n59ea476]
#ref(./2018a-mission2.png,50%,)
フィールドは課題2で使用した紙を使用する.
2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個づつ用意し,...
今回は黄色の缶と緑の缶を使用し、X地点に黄色 緑 黄色、Y...
ロボットに求められる機能は缶を積み上げ、積み下ろす機能と...
*扱うロボットの説明 [#l20bd890]
**全体図 [#n2bb33dc]
#ref(./002.jpg,25%,)
1.超音波センサー
2.ボール
作成したロボットは主に3つのパーツで成り立つ
**アーム部分のパーツ [#w9dd0d68]
#ref(./003.JPG,25%,)
1.缶を掴む際滑り止めとなるゴムのパーツ~
2.この前方のアーム事態につかむ能力はないが、缶を押して...
3.モーターで2つのギアをかいてんさせ、それぞれに取り付け...
**ロボ自体を移動させるパーツ [#c7639184]
#ref(./DSC_0297.JPG,25%,)
二つのタイヤで全身や旋回を行う~
全体を組み立てるとリフトが重く、前方に重心が偏ってしまっ...
**アームを上下に移動させるパーツ [#gfc87e1a]
#ref(./001.JPG,25%,)
モーターでキャタピラを巻き取り、アームを持ち上げる~
1.この部位は、ギアを使うことでもう一列のリフトにも回転...
2.このモーターで巻き上げる
#ref(./DSC_0298.JPG,25%,)
キャタピラ内部のギアを回転させ、巻き取る。~
缶の移動の際に振動が大きく缶を落とすことがあった。そこで...
*缶の積み上げ、および積み下ろし [#z23ccc18]
#ref(./DSC_0003.JPG,25%,)
超音波センサーで感知した缶を整列させる
#ref(./DSC_0286.JPG,25%,)
アームでつかみ、手前の缶を持ち上げる。その後機体を前進さ...
積み下ろしの際はセンサーで缶と適性な距離に接近し、二段目...
*超音波センサーの活用 [#i3e5db66]
今回缶との距離を測るため、または缶の位置を感知するために...
機体の前方と側面に1つずつ設置した。~
缶の位置を探す際に、一定距離以内に缶があると感知するまで...
超音波センサーは缶との接近の精度を高くすることができた
*実行プログラムの説明 [#qbcaca79]
**プログラムの導入 [#xd976cc2]
以下は定義までの導入である
#!/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 //ある缶から一個下の缶までアー...
**定義の挿入 [#ee7436e8]
def motor_init(): //各モーターをリセットする
mL.reset()
mR.reset()
mLif.reset()
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)
**移動用のプログラム [#q7e0dae4]
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)
**缶を超音波センサーで感知するプログラム [#ha51eb25]
def turn_can_search(le,s): //前方の缶を探す
motor_init()
while us1.value() > le: //缶との距離がle以上の時
mL.run_forever(speed_sp=50*s) //缶を探して、左右...
mR.run_forever(speed_sp=-50*s)
turn(20*s) //缶との距離がle以下の時,正面を向くよう...
近距離での精度は非常に高かったが、距離が開くと誤差などが...
**B地点まで進み、缶と向かい合うためのプログラム [#gc7db3...
def start():
motor_init()
run_for_back_pos(600) //適当な位置まで前進
sleep(8)
turn(165) //缶の正面を向くよう旋回
sleep(2)
turn(20)
turn_can_search(250,-1)//左回りに旋回して缶を探す
turn(-5) //向きを調整
**アームの操作に関するプログラム [#t3182e13]
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): //アーム開閉時に調整する(mAの回転角...
mA.reset()
mA.run_to_rel_pos(position_sp=t,speed_sp=50,stop_act...
sleep(1)
**缶の位置を感知するためのプログラム [#k8b43817]
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)
**缶の積み下ろし、積み上げ、運搬を行うプログラム [#j2e8a6...
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()
def collect_can1_can3(): //三段目と左斜め前方に移した一...
motor_init()
turn(-115) //二段目を降ろしてアーム...
down_can2() //二段目にあったアームを...
run_adjust(110) //三段目の缶がアームの中...
sleep(1.5)
arm_close() //アームを閉じて缶をキャ...
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()
def can_approach2(): //Y地点での缶の積み降ろしが終わった...
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() //アームを下げておく
以下は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() //アームを開き缶をリリース(ca...
以下はY地点の黄色の缶をキャッチするためのプログラムであ...
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) //ラインに平行になるよう旋回(...
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(...
以下は、Y地点の緑の缶をX地点に運搬し、3段に積み上げて円...
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) //Y地点の側の缶にある程度近づく
sleep(7)
turn_can_search(300,-1)//左回りに旋回して,缶を探す
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() //アームを開いて三段に積まれ...
缶を掴む際、つかむ位置でバランスが崩れることがあった。リ...
*プログラム全体[#gebc5557]
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地点に運搬し積み上げる
*総括 [#s3663b6f]
授業の中でロボコンを体験出来て貴重な経験になったと思う。
事前のテストではかなりうまくいっており、3段積むことも可能...
その分機体構築においては、求められる機能を達成できるロボ...
を出し合い(キャタピラを使ってリフトを作成する、リフトを2...
この授業の中で機械などを思うように動かす難しさ、チームで...
ページ名: