2018b/Member/miyashi/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題3 [#va54b46a]
細かいルールは省略するが、端的にまとめると
&size(30){ボールを拾って缶に乗せる!};
*課題達成のためのルート [#j10deba6]
&ref(2018b/Member/miyashi/Mission3/s_課題3コース.png,100...
*ロボットの説明 [#of1e3a29]
**本体について [#hfdefae6]
車型ロボットにボールを扱う機構とセンサ類を設置した。以下...
&ref(2018b/Member/miyashi/Mission3/s_DSC_0700.JPG,100%,外...
**ボールを扱う機構について [#jc19a875]
缶にボールを載せるためには、まずボールをロボットが保持す...
&ref(2018b/Member/miyashi/Mission3/s_1549727873635.jpg,10...
&size(30){→};
&ref(2018b/Member/miyashi/Mission3/s_1549727874867.jpg,10...
&size(30){→};
&ref(2018b/Member/miyashi/Mission3/s_1549727876084.jpg,10...
次に、ボールを缶に載せる部分を紹介する。画像にあるように...
&ref(2018b/Member/miyashi/Mission3/s_坂道.png,100%,坂道);
しかし、坂道で下ってきたボールには勢いがあり、当初は缶の...
&ref(2018b/Member/miyashi/Mission3/s_ストッパー.png,100%,...
この機構(可動な壁)があることで、加速されたボールを減速さ...
**没案 [#gfcf025a]
ボールを掴んで載せる機構の没案が以下の画像である。ボール...
&ref(2018b/Member/miyashi/Mission3/s_没案.png,100%,没案の...
この機構は大きく、アームの構造上車体の前に設置する必要が...
**センサ類について [#v8a9ebbc]
使用したのはライントレースに使用するカラーセンサ、缶を発...
&ref(2018b/Member/miyashi/Mission3/s_センサ類.png,100%,カ...
***ジャイロセンサ [#zaa3d421]
課題とロボットの特性上、車体を何回も正確に回転させる必要...
&ref(2018b/Member/miyashi/Mission3/s_1549810118777.jpg,10...
*定義したプログラム その1 [#s9b3182f]
**基本的なプログラム [#o934100a]
車輪を止めるプログラム。適宜、利用した。
def stop():
ml.stop() #左車輪を停止
mr.stop() #右車輪を停止
決められた角度だけ車輪のモーターを回す。前進、後進、回転...
def angle(l,r,t):
ml.run_to_rel_pos(position_sp=l,speed_sp=115,stop...
mr.run_to_rel_pos(position_sp=r,speed_sp=115,stop...
time.sleep(t)
車体後部のベルトコンベアを回すプログラム。ボールを抱える...
def roll(s):
ma.run_to_rel_pos(position_sp=s,speed_sp=80,stop_...
time.sleep(3)
ジャイロセンサによる制御で、車体を決められた角度回転させ...
右回り
def kaiten_r(s,t):
g1=gs.value() #回転前のジャイロセンサの値g1を測る
g2=gs.value() #g2を測る
while g2-g1<s: #角度s(変数)回転するまで車体を...
ml.run_forever(speed_sp=t,stop_action='ho...
mr.run_forever(speed_sp=-t,stop_action='h...
g2=gs.value() #g2を更新
stop() #止める
左回り
def kaiten_l(s,t):
g1=gs.value() #回転前のジャイロセンサの値g1を...
g2=gs.value() #g2を測る
while g1-g2<s: #角度s(変数)回転するまで車体...
ml.run_forever(speed_sp=-t,stop_action='h...
mr.run_forever(speed_sp=t,stop_action='ho...
g2=gs.value() #g2を更新
stop() #止める
**ライントレースのプログラム [#y6003622]
移動時にライントレースを利用する。課題2のレポートで内容...
http://yakushi.shinshu-u.ac.jp/robotics/?2018b%2FMember%2...
def linetrace_rin():
c1=cs.value()
while c1>13: ...
c1=cs.value()
x=(abs(c1-10)/70)*100 ...
if x>100: ...
x=100
l=(x/100)*210-30 ...
r=150-l ...
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop()
def linetrace_rout():
c1=cs.value() #計測値をc1とする。
while c1<40: #c1<40ならば以下を繰り返す。
c1=cs.value() #c1を計測。
x=(abs(c1-10)/70)*100 #xの値を求める。
if x>100: #xの値の最大値を100とする。
x=100
l=(x/100)*120-40 #lの値を決める。
r=40-l #rの値を決める。
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop() #止める。
def linetrace_lin():
c1=cs.value()
while c1>13: ...
c1=cs.value()
x=abs((c1-10)/70)*100 ...
if x>100: ...
x=100
r=(x/100)*210-30 ...
l=150-r ...
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop() ...
def linetrace_lout():
c1=cs.value() #計測値をc1とする。
while c1<40: #c1<40ならば以下を繰り返す。
c1=cs.value() #c1を計測。
x=(abs(c1-10)/70)*100 #xの値を求める。
if x>100: #xの値の最大値を100とす...
x=100
r=(x/100)*120-40 #rの値を求める。
l=40-r #lの値を求める。
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop() #止める。
以上4つのライントレースのプログラムに加え、今回は変数の...
def linetrace_ltime(j):
c1=cs.value() #計測値をc1とする
t1=time.time() #計測開始時刻をt1とする
t2=time.time() #t2を計測
while t2-t1<j: #j秒間経過するまで以下を繰り返す
c1=cs.value() #c1を計測
t2=time.time() #t2を更新
x=abs((c1-10)/70)*100 #xの値を求める
if x>100: #xの最大値を100とする
x=100
r=(x/100)*210-30 #rの値を求める
l=150-r #lの値を求める
ml.run_forever(speed_sp=l,stop_action='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop() #j秒後にライントレースを停止。
**缶の発見とボール落下させるプログラム [#w1430d97]
缶の場所を探査したい場所に到着した時に使用する。まず任意...
その後、缶に向かって前進する。課題の特性上、缶の配置によ...
缶にぶつかったら車体は止まり、ベルトコンベアを回転させ、...
缶まで進んだ分後退し、探査開始時に戻るまで車体角度を調節...
この定義は左回りの探査と右回りの探査の二種類がある。
左回り
def discover_l(s,t):
u1=us.value() #u1を計測
g1=gs.value() #g1を計測
g2=gs.value() #g2を計測
while g1-g2<s: #角度sになるまで左に回る
u2=us.value() #u2を更新
ml.run_forever(speed_sp=-70,stop_action='...
mr.run_forever(speed_sp=70,stop_action='h...
g2=gs.value() #g2を更新
if u2<u1: #最も近い物体がある方向を向い...
u1=u2 #u1を更新
g3=gs.value() #g3を計測
g4=gs.value() #g4を計測
g5=gs.value() #g5を計測
if u1<=t: #t(距離)の中に感があった時
while g5-g4<g3-g2-6: #缶のある方向を向...
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g5=gs.value() #g5を更新
stop() #車体を止める
u3=us.value() #u3を計測
t1=time.time() #t1缶に向かう前の時間を...
while u3<2550: #缶に当たる(センサの値が...
ml.run_forever(speed_sp=100,stop_...
mr.run_forever(speed_sp=100,stop_...
u3=us.value() #u3を更新
t2=time.time() #缶に当たった時...
stop() #止める
roll(220) #コンベアを回転させ、ボールを...
ml.run_timed(speed_sp=-100,time_sp=(t2-t1...
mr.run_timed(speed_sp=-100,time_sp=(t2-t1...
time.sleep(t2-t1) #戻るまで停止
g6=gs.value() #g6を計測
g7=gs.value() #g7を計測
while g7-g6<=g1-g3-6: #本プログラム開始...
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g7=gs.value() #g7を更新
stop() #止める
else: #指定したt(距離)に缶がなかった場合
while g5-g4<90: #直角に戻る
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g5=gs.value() #g5を更新
stop() #止める
右回り 左回りと同様のプログラムのため説明は割愛
def discover_r(s,t):
u1=us.value()
g1=gs.value()
g2=gs.value()
while g2-g1<s:
u2=us.value()
ml.run_forever(speed_sp=70,stop_action='h...
mr.run_forever(speed_sp=-70,stop_action='...
g2=gs.value()
if u2<u1:
u1=u2
g3=gs.value()
g4=gs.value()
g5=gs.value()
if u1<=t:
while g4-g5<g2-g3-6:
mr.run_forever(speed_sp=70,stop_a...
ml.run_forever(speed_sp=-70,stop_...
g5=gs.value()
stop()
u3=us.value()
t1=time.time()
while u3<2550:
ml.run_forever(speed_sp=100,stop_...
mr.run_forever(speed_sp=100,stop_...
u3=us.value()
t2=time.time()
stop()
roll(220)
ml.run_timed(speed_sp=-100,time_sp=(t2-t1...
mr.run_timed(speed_sp=-100,time_sp=(t2-t1...
time.sleep(t2-t1)
g6=gs.value()
g7=gs.value()
while g6-g7<=g3-g1-6:
mr.run_forever(speed_sp=70,stop_a...
ml.run_forever(speed_sp=-70,stop_...
g7=gs.value()
stop()
else:
while g4-g5<90:
mr.run_forever(speed_sp=70,stop_a...
ml.run_forever(speed_sp=-70,stop_...
g5=gs.value()
stop()
discoverは以下の画像のような動きをする。
&ref(2018b/Member/miyashi/Mission3/s_discover1.png,100%,...
&ref(2018b/Member/miyashi/Mission3/s_discover2.png,100%,...
&ref(2018b/Member/miyashi/Mission3/s_discover3.png,100%,...
&ref(2018b/Member/miyashi/Mission3/s_discover4.png,100%,...
*定義したプログラムその2 [#gfc686da]
**道中を細かく分けた定義 [#pf903340]
まずはスタートからGに行き、赤ボールを拾う。
def Redball():
angle(250,250,3) #赤ボールが掬える場所まで進む
kaiten_r(180,110) #180度回転する
roll(220) #コンベアを回転させ、赤ボールを保持する
kaiten_r(195,110) #195度回転する この後、ライン...
linetrace_lin() #交差点Gに到達
次に、青ボールを拾う。
def Blueball():
angle(-20,160,2) #Gの交差点を斜めに越える
linetrace_lin() #ライントレースでHまで到達
angle(-35,-35,1.5) #少し後退する。
kaiten_r(175,110) #175度回転してボールが捕獲可...
roll(220) #ボールを掬う
その後、Eまで到達する。
def move():
kaiten_r(190,110) #車体を戻す
angle(-50,-50,1) #後退してライントレースが確実...
linetrace_lin() #以下のライントレースの繰り返し...
linetrace_lout()
linetrace_lin()
linetrace_lout()
linetrace_lin()
E到達後、ボールを載せに向かう。ここではinputを使用し、サ...
r=int(input("insert numbera"))
if r<=2: #サイコロが1または2のとき
kaiten_l(90,110) #左に90度向く
discover_l(90,250) #左に90度缶を探査し、発見時...
kaiten_l(95,100) #元の位置に戻る(5度は微調整)
if r==3: #サイコロが3のとき
angle(-40,180,2) #交差点Eを斜めに越える
linetrace_lin() #ライントレースでDまで到達
discover_r(60,250) #右に60度缶を探査し、発見時...
angle(-150,-150,2) # 後退する
kaiten_l(195,110) #195度回転
linetrace_rin() #ライントレースでEに到達
angle(230,-40,2) #交差点Eの黒線を越えてマップ...
if r==4: #サイコロが4のとき
angle(-40,180,2) #交差点Eを斜めに越える
linetrace_lin() #ライントレースでDまで到達
discover_l(60,250) #左に60度缶を探査し、発見時...
kaiten_l(195,110) #195度回転する
linetrace_rin() #ライントレースでEに到達
angle(230,-40,2) #交差点Eの黒線を越えてマップ...
if 5<=r: #サイコロが5または6のとき
angle(-40,180,2) #交差点Eを斜めに越える
linetrace_lin() #ライントレースでDまで到達
linetrace_lout() #マップ視点で右を向く
linetrace_ltime(3) #3秒間ライントレースする
discover_l(60,190) #左に60度缶を探査し、発見時...
angle(-130,-130,3) #後退する
kaiten_l(180,110) #180度回転する
linetrace_rin() #以下のライントレースでEまで到...
linetrace_rout()
linetrace_rin()
angle(230,-40,2) #交差点Eの黒線を越えてマップ...
以上の4パターンの動きはいづれも同じ場所(マップ視点で黒線E...
def BlueZone():
linetrace_rin() #以下のライントレースでHまで到達
linetrace_rout()
linetrace_rin()
angle(70,0,1) #交差点Hを超える
linetrace_rin() #ライントレースでKまで到達
この後に青のボールを放つ。ここでは、赤の缶の時のように場...
def discover2():
kaiten_l(60,100) #60度左向きになり、探査準備を...
discover_r(90,500) #右に90度缶を探査し、発見時...
**課題3のロボットの動作をまとめたプログラム [#c8aad90f]
以上のプログラムをまとめたプログラムを定義してある。予め...
def start():
r=int(input("insert numbera"))
Redball()
Blueball()
move()
if r<=2:
kaiten_l(90,110)
discover_l(90,250)
kaiten_l(95,100)
if r==3:
angle(-40,180,2)
linetrace_lin()
discover_r(60,250)
angle(-150,-150,2)
kaiten_l(195,110)
linetrace_rin()
angle(230,-40,2)
if r==4:
angle(-40,180,2)
linetrace_lin()
discover_l(60,250)
kaiten_l(195,110)
linetrace_rin()
angle(230,-40,2)
if 5<=r:
angle(-40,180,2)
linetrace_lin()
linetrace_lout()
linetrace_ltime(3)
discover_l(60,190)
angle(-130,-130,3)
kaiten_l(180,110)
linetrace_rin()
linetrace_rout()
linetrace_rin()
angle(230,-40,2)
BlueZone()
discover2()
実際の作動プログラム
start()
プログラムを作動させると、
insert numbera
と表示され、赤ボールを載せる缶がある位置の番号を入力する...
*課題3を振り返って [#afa9ea10]
**ロボコンについて [#v462ca9f]
ロボコンの結果は優勝だった。とはいえ、正しい缶にボールを...
**反省 [#ief8bd9f]
課題3では、課題1や2に比べて成功率が不安定だった。問題...
ロボット本体について。ライントレースとコンベアにモータを...
また、今回は通信を行っていない。本来ならば通信を行うべき...
*ゼミを振り返って [#g901fc53]
受講前、私は機械・ロボット学科でありながら、ロボットに関...
*その他 [#sf430009]
閲覧回数
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
終了行:
目次
#contents
*課題3 [#va54b46a]
細かいルールは省略するが、端的にまとめると
&size(30){ボールを拾って缶に乗せる!};
*課題達成のためのルート [#j10deba6]
&ref(2018b/Member/miyashi/Mission3/s_課題3コース.png,100...
*ロボットの説明 [#of1e3a29]
**本体について [#hfdefae6]
車型ロボットにボールを扱う機構とセンサ類を設置した。以下...
&ref(2018b/Member/miyashi/Mission3/s_DSC_0700.JPG,100%,外...
**ボールを扱う機構について [#jc19a875]
缶にボールを載せるためには、まずボールをロボットが保持す...
&ref(2018b/Member/miyashi/Mission3/s_1549727873635.jpg,10...
&size(30){→};
&ref(2018b/Member/miyashi/Mission3/s_1549727874867.jpg,10...
&size(30){→};
&ref(2018b/Member/miyashi/Mission3/s_1549727876084.jpg,10...
次に、ボールを缶に載せる部分を紹介する。画像にあるように...
&ref(2018b/Member/miyashi/Mission3/s_坂道.png,100%,坂道);
しかし、坂道で下ってきたボールには勢いがあり、当初は缶の...
&ref(2018b/Member/miyashi/Mission3/s_ストッパー.png,100%,...
この機構(可動な壁)があることで、加速されたボールを減速さ...
**没案 [#gfcf025a]
ボールを掴んで載せる機構の没案が以下の画像である。ボール...
&ref(2018b/Member/miyashi/Mission3/s_没案.png,100%,没案の...
この機構は大きく、アームの構造上車体の前に設置する必要が...
**センサ類について [#v8a9ebbc]
使用したのはライントレースに使用するカラーセンサ、缶を発...
&ref(2018b/Member/miyashi/Mission3/s_センサ類.png,100%,カ...
***ジャイロセンサ [#zaa3d421]
課題とロボットの特性上、車体を何回も正確に回転させる必要...
&ref(2018b/Member/miyashi/Mission3/s_1549810118777.jpg,10...
*定義したプログラム その1 [#s9b3182f]
**基本的なプログラム [#o934100a]
車輪を止めるプログラム。適宜、利用した。
def stop():
ml.stop() #左車輪を停止
mr.stop() #右車輪を停止
決められた角度だけ車輪のモーターを回す。前進、後進、回転...
def angle(l,r,t):
ml.run_to_rel_pos(position_sp=l,speed_sp=115,stop...
mr.run_to_rel_pos(position_sp=r,speed_sp=115,stop...
time.sleep(t)
車体後部のベルトコンベアを回すプログラム。ボールを抱える...
def roll(s):
ma.run_to_rel_pos(position_sp=s,speed_sp=80,stop_...
time.sleep(3)
ジャイロセンサによる制御で、車体を決められた角度回転させ...
右回り
def kaiten_r(s,t):
g1=gs.value() #回転前のジャイロセンサの値g1を測る
g2=gs.value() #g2を測る
while g2-g1<s: #角度s(変数)回転するまで車体を...
ml.run_forever(speed_sp=t,stop_action='ho...
mr.run_forever(speed_sp=-t,stop_action='h...
g2=gs.value() #g2を更新
stop() #止める
左回り
def kaiten_l(s,t):
g1=gs.value() #回転前のジャイロセンサの値g1を...
g2=gs.value() #g2を測る
while g1-g2<s: #角度s(変数)回転するまで車体...
ml.run_forever(speed_sp=-t,stop_action='h...
mr.run_forever(speed_sp=t,stop_action='ho...
g2=gs.value() #g2を更新
stop() #止める
**ライントレースのプログラム [#y6003622]
移動時にライントレースを利用する。課題2のレポートで内容...
http://yakushi.shinshu-u.ac.jp/robotics/?2018b%2FMember%2...
def linetrace_rin():
c1=cs.value()
while c1>13: ...
c1=cs.value()
x=(abs(c1-10)/70)*100 ...
if x>100: ...
x=100
l=(x/100)*210-30 ...
r=150-l ...
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop()
def linetrace_rout():
c1=cs.value() #計測値をc1とする。
while c1<40: #c1<40ならば以下を繰り返す。
c1=cs.value() #c1を計測。
x=(abs(c1-10)/70)*100 #xの値を求める。
if x>100: #xの値の最大値を100とする。
x=100
l=(x/100)*120-40 #lの値を決める。
r=40-l #rの値を決める。
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop() #止める。
def linetrace_lin():
c1=cs.value()
while c1>13: ...
c1=cs.value()
x=abs((c1-10)/70)*100 ...
if x>100: ...
x=100
r=(x/100)*210-30 ...
l=150-r ...
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop() ...
def linetrace_lout():
c1=cs.value() #計測値をc1とする。
while c1<40: #c1<40ならば以下を繰り返す。
c1=cs.value() #c1を計測。
x=(abs(c1-10)/70)*100 #xの値を求める。
if x>100: #xの値の最大値を100とす...
x=100
r=(x/100)*120-40 #rの値を求める。
l=40-r #lの値を求める。
ml.run_forever(speed_sp=l,stop_action='b...
mr.run_forever(speed_sp=r,stop_action='b...
stop() #止める。
以上4つのライントレースのプログラムに加え、今回は変数の...
def linetrace_ltime(j):
c1=cs.value() #計測値をc1とする
t1=time.time() #計測開始時刻をt1とする
t2=time.time() #t2を計測
while t2-t1<j: #j秒間経過するまで以下を繰り返す
c1=cs.value() #c1を計測
t2=time.time() #t2を更新
x=abs((c1-10)/70)*100 #xの値を求める
if x>100: #xの最大値を100とする
x=100
r=(x/100)*210-30 #rの値を求める
l=150-r #lの値を求める
ml.run_forever(speed_sp=l,stop_action='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop() #j秒後にライントレースを停止。
**缶の発見とボール落下させるプログラム [#w1430d97]
缶の場所を探査したい場所に到着した時に使用する。まず任意...
その後、缶に向かって前進する。課題の特性上、缶の配置によ...
缶にぶつかったら車体は止まり、ベルトコンベアを回転させ、...
缶まで進んだ分後退し、探査開始時に戻るまで車体角度を調節...
この定義は左回りの探査と右回りの探査の二種類がある。
左回り
def discover_l(s,t):
u1=us.value() #u1を計測
g1=gs.value() #g1を計測
g2=gs.value() #g2を計測
while g1-g2<s: #角度sになるまで左に回る
u2=us.value() #u2を更新
ml.run_forever(speed_sp=-70,stop_action='...
mr.run_forever(speed_sp=70,stop_action='h...
g2=gs.value() #g2を更新
if u2<u1: #最も近い物体がある方向を向い...
u1=u2 #u1を更新
g3=gs.value() #g3を計測
g4=gs.value() #g4を計測
g5=gs.value() #g5を計測
if u1<=t: #t(距離)の中に感があった時
while g5-g4<g3-g2-6: #缶のある方向を向...
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g5=gs.value() #g5を更新
stop() #車体を止める
u3=us.value() #u3を計測
t1=time.time() #t1缶に向かう前の時間を...
while u3<2550: #缶に当たる(センサの値が...
ml.run_forever(speed_sp=100,stop_...
mr.run_forever(speed_sp=100,stop_...
u3=us.value() #u3を更新
t2=time.time() #缶に当たった時...
stop() #止める
roll(220) #コンベアを回転させ、ボールを...
ml.run_timed(speed_sp=-100,time_sp=(t2-t1...
mr.run_timed(speed_sp=-100,time_sp=(t2-t1...
time.sleep(t2-t1) #戻るまで停止
g6=gs.value() #g6を計測
g7=gs.value() #g7を計測
while g7-g6<=g1-g3-6: #本プログラム開始...
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g7=gs.value() #g7を更新
stop() #止める
else: #指定したt(距離)に缶がなかった場合
while g5-g4<90: #直角に戻る
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g5=gs.value() #g5を更新
stop() #止める
右回り 左回りと同様のプログラムのため説明は割愛
def discover_r(s,t):
u1=us.value()
g1=gs.value()
g2=gs.value()
while g2-g1<s:
u2=us.value()
ml.run_forever(speed_sp=70,stop_action='h...
mr.run_forever(speed_sp=-70,stop_action='...
g2=gs.value()
if u2<u1:
u1=u2
g3=gs.value()
g4=gs.value()
g5=gs.value()
if u1<=t:
while g4-g5<g2-g3-6:
mr.run_forever(speed_sp=70,stop_a...
ml.run_forever(speed_sp=-70,stop_...
g5=gs.value()
stop()
u3=us.value()
t1=time.time()
while u3<2550:
ml.run_forever(speed_sp=100,stop_...
mr.run_forever(speed_sp=100,stop_...
u3=us.value()
t2=time.time()
stop()
roll(220)
ml.run_timed(speed_sp=-100,time_sp=(t2-t1...
mr.run_timed(speed_sp=-100,time_sp=(t2-t1...
time.sleep(t2-t1)
g6=gs.value()
g7=gs.value()
while g6-g7<=g3-g1-6:
mr.run_forever(speed_sp=70,stop_a...
ml.run_forever(speed_sp=-70,stop_...
g7=gs.value()
stop()
else:
while g4-g5<90:
mr.run_forever(speed_sp=70,stop_a...
ml.run_forever(speed_sp=-70,stop_...
g5=gs.value()
stop()
discoverは以下の画像のような動きをする。
&ref(2018b/Member/miyashi/Mission3/s_discover1.png,100%,...
&ref(2018b/Member/miyashi/Mission3/s_discover2.png,100%,...
&ref(2018b/Member/miyashi/Mission3/s_discover3.png,100%,...
&ref(2018b/Member/miyashi/Mission3/s_discover4.png,100%,...
*定義したプログラムその2 [#gfc686da]
**道中を細かく分けた定義 [#pf903340]
まずはスタートからGに行き、赤ボールを拾う。
def Redball():
angle(250,250,3) #赤ボールが掬える場所まで進む
kaiten_r(180,110) #180度回転する
roll(220) #コンベアを回転させ、赤ボールを保持する
kaiten_r(195,110) #195度回転する この後、ライン...
linetrace_lin() #交差点Gに到達
次に、青ボールを拾う。
def Blueball():
angle(-20,160,2) #Gの交差点を斜めに越える
linetrace_lin() #ライントレースでHまで到達
angle(-35,-35,1.5) #少し後退する。
kaiten_r(175,110) #175度回転してボールが捕獲可...
roll(220) #ボールを掬う
その後、Eまで到達する。
def move():
kaiten_r(190,110) #車体を戻す
angle(-50,-50,1) #後退してライントレースが確実...
linetrace_lin() #以下のライントレースの繰り返し...
linetrace_lout()
linetrace_lin()
linetrace_lout()
linetrace_lin()
E到達後、ボールを載せに向かう。ここではinputを使用し、サ...
r=int(input("insert numbera"))
if r<=2: #サイコロが1または2のとき
kaiten_l(90,110) #左に90度向く
discover_l(90,250) #左に90度缶を探査し、発見時...
kaiten_l(95,100) #元の位置に戻る(5度は微調整)
if r==3: #サイコロが3のとき
angle(-40,180,2) #交差点Eを斜めに越える
linetrace_lin() #ライントレースでDまで到達
discover_r(60,250) #右に60度缶を探査し、発見時...
angle(-150,-150,2) # 後退する
kaiten_l(195,110) #195度回転
linetrace_rin() #ライントレースでEに到達
angle(230,-40,2) #交差点Eの黒線を越えてマップ...
if r==4: #サイコロが4のとき
angle(-40,180,2) #交差点Eを斜めに越える
linetrace_lin() #ライントレースでDまで到達
discover_l(60,250) #左に60度缶を探査し、発見時...
kaiten_l(195,110) #195度回転する
linetrace_rin() #ライントレースでEに到達
angle(230,-40,2) #交差点Eの黒線を越えてマップ...
if 5<=r: #サイコロが5または6のとき
angle(-40,180,2) #交差点Eを斜めに越える
linetrace_lin() #ライントレースでDまで到達
linetrace_lout() #マップ視点で右を向く
linetrace_ltime(3) #3秒間ライントレースする
discover_l(60,190) #左に60度缶を探査し、発見時...
angle(-130,-130,3) #後退する
kaiten_l(180,110) #180度回転する
linetrace_rin() #以下のライントレースでEまで到...
linetrace_rout()
linetrace_rin()
angle(230,-40,2) #交差点Eの黒線を越えてマップ...
以上の4パターンの動きはいづれも同じ場所(マップ視点で黒線E...
def BlueZone():
linetrace_rin() #以下のライントレースでHまで到達
linetrace_rout()
linetrace_rin()
angle(70,0,1) #交差点Hを超える
linetrace_rin() #ライントレースでKまで到達
この後に青のボールを放つ。ここでは、赤の缶の時のように場...
def discover2():
kaiten_l(60,100) #60度左向きになり、探査準備を...
discover_r(90,500) #右に90度缶を探査し、発見時...
**課題3のロボットの動作をまとめたプログラム [#c8aad90f]
以上のプログラムをまとめたプログラムを定義してある。予め...
def start():
r=int(input("insert numbera"))
Redball()
Blueball()
move()
if r<=2:
kaiten_l(90,110)
discover_l(90,250)
kaiten_l(95,100)
if r==3:
angle(-40,180,2)
linetrace_lin()
discover_r(60,250)
angle(-150,-150,2)
kaiten_l(195,110)
linetrace_rin()
angle(230,-40,2)
if r==4:
angle(-40,180,2)
linetrace_lin()
discover_l(60,250)
kaiten_l(195,110)
linetrace_rin()
angle(230,-40,2)
if 5<=r:
angle(-40,180,2)
linetrace_lin()
linetrace_lout()
linetrace_ltime(3)
discover_l(60,190)
angle(-130,-130,3)
kaiten_l(180,110)
linetrace_rin()
linetrace_rout()
linetrace_rin()
angle(230,-40,2)
BlueZone()
discover2()
実際の作動プログラム
start()
プログラムを作動させると、
insert numbera
と表示され、赤ボールを載せる缶がある位置の番号を入力する...
*課題3を振り返って [#afa9ea10]
**ロボコンについて [#v462ca9f]
ロボコンの結果は優勝だった。とはいえ、正しい缶にボールを...
**反省 [#ief8bd9f]
課題3では、課題1や2に比べて成功率が不安定だった。問題...
ロボット本体について。ライントレースとコンベアにモータを...
また、今回は通信を行っていない。本来ならば通信を行うべき...
*ゼミを振り返って [#g901fc53]
受講前、私は機械・ロボット学科でありながら、ロボットに関...
*その他 [#sf430009]
閲覧回数
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
ページ名: