2018b/Member/prague/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題の内容 [#u9b90b8a]
#ref(2018b/Member/prague/Mission3/2018b-mission3.png,100%...
フィールドの説明
フィールドは課題2で使用した紙を使用する。
〇350ml缶(中が入っていても空でよい)は逆さまにして使い、ロ...
〇その番号の次の番号のところにもダミーの缶を置くことがで...
空き缶には色をつけたり文字や記号を書いてもよい。あるいは...
赤と青のボールは、図のように所定の場所に置いておく。その...
**ルール [#y3f0fc85]
基本ルール
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のX地点または(および)Y地点からスタートする。ただし接...
赤いボールを図のピンクのいずれかに置いた缶に、青いボール...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
基本得点の計算方法
ボールを一つ乗せればそれぞれ10点、二つとも乗せればボーナ...
ダミーの缶を設置した上で、正しい缶に乗せれば、それぞれさ...
ボールを目的の缶に当てることができれば、それぞれ4点。
ボールを同じ領域内の間違った缶に乗せた場合は、それぞれ6点。
ボールを同じ領域内の間違った缶に当てた場合は、それぞれ2点。
ボールを違う領域内の缶に乗せた場合は、それぞれ2点。
ボールを違う領域内の缶に当てた場合は、0点。
目的の缶をもとの位置(直径7cmの円)から少し出してしまった...
ダミーの缶がもとの位置から移動しても減点はしない。
技術点の計算方法
以下の動作の精度・スピード・確実性などを含めた技術的な工...
得点の目安:
ボール探し取りにいくまでの動作 (3点)
ボール掴む動作 (3点)
ボールを運ぶ動作 (2点)
ボールを缶に置く動作 (2点)
2台のNXT、EV3の連携の良さ(2点)
自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
その他 (3点)
*ロボット [#a4e79040]
**ロボットの全体図 [#m5f1452e]
#ref(2018b/Member/prague/Mission3/s_mae.jpg,100%,経路1);
#ref(2018b/Member/prague/Mission3/s_usiro.jpg,100%,経路1);
#ref(2018b/Member/prague/Mission3/s_yoko.jpg,100%,ボール...
**ロボットを作る過程 [#u63bad55]
今回の課題を進めるうえでまず作ろうとしたのはベルトコンベ...
#ref(2018b/Member/prague/Mission3/s_folk.jpg,100%,経路1);
しかしこの機構は大きくかさばったり重くてロボットのバラン...
そのあとに考えたのがコンベアを使ってボールをすくい上げ、...
この見た目からもわかるように超音波センサがある方を前とす...
**車体 [#ae8477a6]
車体については全体図からもわかるように説明書でみられるよ...
今回はボールを取るときと、前に進むとききっちりと180度車体...
#ref(2018b/Member/prague/Mission3/jailo.jpg,100%,ジャイロ...
↑ジャイロセンサー
これを使うと車体を回転させたときの角度を測れるようになり...
工夫した点としては、車体の前頭部に付けた2つの角を作った...
#ref(2018b/Member/prague/Mission3/s_tuno.jpg,100%,経路1);
ボールを投げるとき...↓
#ref(2018b/Member/prague/Mission3/s_cancan.jpg,100%,経路1);
このようになる。
**ボールを扱う機構 [#ze37cd98]
#ref(2018b/Member/prague/Mission3/s_korokoro.1.jpg,100%,...
↑図のようにボールが上がっていき転がって缶の上に置かれる
この機構を使う上でまず気を付けなければならないのはどのよ...
#ref(2018b/Member/prague/Mission3/s_belt.jpg,100%,経路1);
図の黄色く囲まれた場所がかきづめの役割を果たす。
またかきづめは二つ付けてあるので1度に赤いボール、青いボー...
これで一回球を置いてからもう一つの球を取りに行く手間を省...
#ref(2018b/Member/prague/Mission3/s_bear.jpg,120%,ボール...
コンベアの図 2つかきづめがある
#ref(2018b/Member/prague/Mission3/s_double.jpg,100%,ボー...
↑ボールが二つのる。コンベアを途中で止めれば、どちらか片方...
また後ろにコンベアを付けることで超音波センサーがボールを...
続いてボールを転がす機構について説明する。基本的には滑り...
あまり硬い防護壁のようなものを作ってしまうと、ロボットが...
#ref(2018b/Member/prague/Mission3/s_can.jpg,100%,ボールの...
*プログラミング [#vec07fde]
#!/usr/bin/env python3
from ev3dev.ev3 import *
import time
ml=LargeMotor('outA') *
mr=LargeMotor('outD')
ma=LargeMotor('outB')
cs=ColorSensor('in3')
us=UltrasonicSensor('in4')
gs=GyroSensor('in1')
def stop(): #ロボットを停止させる
ml.stop()
mr.stop()
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='br...
mr.run_forever(speed_sp=r,stop_action='br...
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='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop()
def linetrace_ltime(j): #ある程度時間がたってから実行す...
c1=cs.value()
t1=time.time()
t2=time.time()
while t2-t1<j:
c1=cs.value()
t2=time.time()
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='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop()
def linetrace_lout(): #左側のライントレース 交差点で止...
c1=cs.value()
while c1<40:
c1=cs.value()
x=(abs(c1-10)/70)*100
if x>100:
x=100
r=(x/100)*120-40
l=40-r
ml.run_forever(speed_sp=l,stop_action='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop()
今回の課題のライントレースでは定義を4つ利用した。
def runtime(l,r): #ロボットの動きを左右で別に動かす
ml.run_timed(time_sp=l*1000,speed_sp=70,stop_acti...
mr.run_timed(time_sp=r*1000,speed_sp=70,stop_acti...
time.sleep((l+r)/2)
def angle(l,r,t): #指定した角度だけタイヤを動かす。lは左...
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 kaiten_r(s,t): #ジャイロセンサーのとる値を使って右回...
g1=gs.value()
g2=gs.value()
while g2-g1<s: #ボールを探す範囲を指定する
ml.run_forever(speed_sp=t,stop_action='ho...
mr.run_forever(speed_sp=-t,stop_action='h...
g2=gs.value()
stop()
def kaiten_l(s,t): #ジャイロセンサーのとる値を使って左...
g1=gs.value()
g2=gs.value()
while g1-g2<s:
ml.run_forever(speed_sp=-t,stop_action='h...
mr.run_forever(speed_sp=t,stop_action='ho...
g2=gs.value()
stop()
def g(): #g1の値をプリントする
g1=gs.value()
while g1<10000:
g1=gs.value()
print(g1)
def roll(s): #ベルトコンベアを動かす際に使われる。
ma.run_to_rel_pos(position_sp=s,speed_sp=80,stop_...
time.sleep(3)
def discover_l(s,t): #缶を探す際に使われる。この場合は右...
u1=us.value()
g1=gs.value()
g2=gs.value()
while g1-g2<s: ジャイロセンサーが缶を探す範囲を向...
u2=us.value()
ml.run_forever(speed_sp=-70,stop_action='...
mr.run_forever(speed_sp=70,stop_action='h...
g2=gs.value()
if u2<u1: #超音波センサーを更新した時、...
u1=u2
g3=gs.value()
ml.run_forever(speed_sp=70,stop_action='hold')
mr.run_forever(speed_sp=-70,stop_action='hold')
g4=gs.value()
g5=gs.value()
if u1<=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()
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 g7-g6<=g1-g3-6: #缶の位置に到達する...
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g7=gs.value()
stop()
else: #測定した時に缶が見つからなかった場合
while g5-g4<90:
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g5=gs.value()
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
u1=u2
g3=gs.value()
ml.run_forever(speed_sp=-70,stop_action='hold')
mr.run_forever(speed_sp=70,stop_action='hold')
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()
def Redball(): #スタートから赤いボールを取るまでの指令の...
angle(250,250,3)
kaiten_r(180,110)
roll(220)
kaiten_r(195,110)
linetrace_lin()
def Blueball(): #スタートから青いボールを取るまでの指令...
angle(-20,160,2)
linetrace_lin()
angle(-35,-35,1.5)
kaiten_r(175,110)
roll(220)
def move(): #青ボールを拾った後、Eに行くまでのロボットの...
kaiten_r(190,110)
angle(-50,-50,1)
linetrace_lin()
linetrace_lout()
linetrace_lin()
linetrace_lout()
linetrace_lin()
def BlueZone(): #赤いボールを乗せてから青いボールを探す...
linetrace_rin()
linetrace_rout()
linetrace_rin()
angle(0,70,1)
linetrace_rin()
angle(70,0,1)
linetrace_rin()
def discover2(): #青ボールを探してから青ボールを投げるま...
kaiten_l(60,100)
discover_r(90,500)
def start(): #今回の課題でさせる命令の定義。この命令一つ...
r=int(input("insert numbera")) #缶がどの位置にあ...
Redball()
Blueball()
move()
if r<=2: #缶が1か2にある場合缶を探すプログラム
kaiten_l(90,110)
discover_l(90,250)
kaiten_l(95,100)
if r==3: #缶が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: #缶が4にある場合缶を探すプログラム
angle(-40,180,2)
linetrace_lin()
discover_l(60,250)
kaiten_l(195,110)
linetrace_rin()
angle(230,-40,2)
if 5<=r: #缶が5か6にある場合缶を探すプログラム
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() #実際に動作をさせるプログラム
*反省 [#v014e287]
今回はテスト期間に制作をしたのでほとんど時間が取れなかっ...
最後の調整の段階では失敗することはほとんどなかったが、本...
おそらく失敗の原因は、2つ配られていたジャイロセンサーの感...
*閲覧回数 [#f0e6620b]
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
終了行:
#contents
*課題の内容 [#u9b90b8a]
#ref(2018b/Member/prague/Mission3/2018b-mission3.png,100%...
フィールドの説明
フィールドは課題2で使用した紙を使用する。
〇350ml缶(中が入っていても空でよい)は逆さまにして使い、ロ...
〇その番号の次の番号のところにもダミーの缶を置くことがで...
空き缶には色をつけたり文字や記号を書いてもよい。あるいは...
赤と青のボールは、図のように所定の場所に置いておく。その...
**ルール [#y3f0fc85]
基本ルール
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のX地点または(および)Y地点からスタートする。ただし接...
赤いボールを図のピンクのいずれかに置いた缶に、青いボール...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
基本得点の計算方法
ボールを一つ乗せればそれぞれ10点、二つとも乗せればボーナ...
ダミーの缶を設置した上で、正しい缶に乗せれば、それぞれさ...
ボールを目的の缶に当てることができれば、それぞれ4点。
ボールを同じ領域内の間違った缶に乗せた場合は、それぞれ6点。
ボールを同じ領域内の間違った缶に当てた場合は、それぞれ2点。
ボールを違う領域内の缶に乗せた場合は、それぞれ2点。
ボールを違う領域内の缶に当てた場合は、0点。
目的の缶をもとの位置(直径7cmの円)から少し出してしまった...
ダミーの缶がもとの位置から移動しても減点はしない。
技術点の計算方法
以下の動作の精度・スピード・確実性などを含めた技術的な工...
得点の目安:
ボール探し取りにいくまでの動作 (3点)
ボール掴む動作 (3点)
ボールを運ぶ動作 (2点)
ボールを缶に置く動作 (2点)
2台のNXT、EV3の連携の良さ(2点)
自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
その他 (3点)
*ロボット [#a4e79040]
**ロボットの全体図 [#m5f1452e]
#ref(2018b/Member/prague/Mission3/s_mae.jpg,100%,経路1);
#ref(2018b/Member/prague/Mission3/s_usiro.jpg,100%,経路1);
#ref(2018b/Member/prague/Mission3/s_yoko.jpg,100%,ボール...
**ロボットを作る過程 [#u63bad55]
今回の課題を進めるうえでまず作ろうとしたのはベルトコンベ...
#ref(2018b/Member/prague/Mission3/s_folk.jpg,100%,経路1);
しかしこの機構は大きくかさばったり重くてロボットのバラン...
そのあとに考えたのがコンベアを使ってボールをすくい上げ、...
この見た目からもわかるように超音波センサがある方を前とす...
**車体 [#ae8477a6]
車体については全体図からもわかるように説明書でみられるよ...
今回はボールを取るときと、前に進むとききっちりと180度車体...
#ref(2018b/Member/prague/Mission3/jailo.jpg,100%,ジャイロ...
↑ジャイロセンサー
これを使うと車体を回転させたときの角度を測れるようになり...
工夫した点としては、車体の前頭部に付けた2つの角を作った...
#ref(2018b/Member/prague/Mission3/s_tuno.jpg,100%,経路1);
ボールを投げるとき...↓
#ref(2018b/Member/prague/Mission3/s_cancan.jpg,100%,経路1);
このようになる。
**ボールを扱う機構 [#ze37cd98]
#ref(2018b/Member/prague/Mission3/s_korokoro.1.jpg,100%,...
↑図のようにボールが上がっていき転がって缶の上に置かれる
この機構を使う上でまず気を付けなければならないのはどのよ...
#ref(2018b/Member/prague/Mission3/s_belt.jpg,100%,経路1);
図の黄色く囲まれた場所がかきづめの役割を果たす。
またかきづめは二つ付けてあるので1度に赤いボール、青いボー...
これで一回球を置いてからもう一つの球を取りに行く手間を省...
#ref(2018b/Member/prague/Mission3/s_bear.jpg,120%,ボール...
コンベアの図 2つかきづめがある
#ref(2018b/Member/prague/Mission3/s_double.jpg,100%,ボー...
↑ボールが二つのる。コンベアを途中で止めれば、どちらか片方...
また後ろにコンベアを付けることで超音波センサーがボールを...
続いてボールを転がす機構について説明する。基本的には滑り...
あまり硬い防護壁のようなものを作ってしまうと、ロボットが...
#ref(2018b/Member/prague/Mission3/s_can.jpg,100%,ボールの...
*プログラミング [#vec07fde]
#!/usr/bin/env python3
from ev3dev.ev3 import *
import time
ml=LargeMotor('outA') *
mr=LargeMotor('outD')
ma=LargeMotor('outB')
cs=ColorSensor('in3')
us=UltrasonicSensor('in4')
gs=GyroSensor('in1')
def stop(): #ロボットを停止させる
ml.stop()
mr.stop()
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='br...
mr.run_forever(speed_sp=r,stop_action='br...
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='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop()
def linetrace_ltime(j): #ある程度時間がたってから実行す...
c1=cs.value()
t1=time.time()
t2=time.time()
while t2-t1<j:
c1=cs.value()
t2=time.time()
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='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop()
def linetrace_lout(): #左側のライントレース 交差点で止...
c1=cs.value()
while c1<40:
c1=cs.value()
x=(abs(c1-10)/70)*100
if x>100:
x=100
r=(x/100)*120-40
l=40-r
ml.run_forever(speed_sp=l,stop_action='br...
mr.run_forever(speed_sp=r,stop_action='br...
stop()
今回の課題のライントレースでは定義を4つ利用した。
def runtime(l,r): #ロボットの動きを左右で別に動かす
ml.run_timed(time_sp=l*1000,speed_sp=70,stop_acti...
mr.run_timed(time_sp=r*1000,speed_sp=70,stop_acti...
time.sleep((l+r)/2)
def angle(l,r,t): #指定した角度だけタイヤを動かす。lは左...
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 kaiten_r(s,t): #ジャイロセンサーのとる値を使って右回...
g1=gs.value()
g2=gs.value()
while g2-g1<s: #ボールを探す範囲を指定する
ml.run_forever(speed_sp=t,stop_action='ho...
mr.run_forever(speed_sp=-t,stop_action='h...
g2=gs.value()
stop()
def kaiten_l(s,t): #ジャイロセンサーのとる値を使って左...
g1=gs.value()
g2=gs.value()
while g1-g2<s:
ml.run_forever(speed_sp=-t,stop_action='h...
mr.run_forever(speed_sp=t,stop_action='ho...
g2=gs.value()
stop()
def g(): #g1の値をプリントする
g1=gs.value()
while g1<10000:
g1=gs.value()
print(g1)
def roll(s): #ベルトコンベアを動かす際に使われる。
ma.run_to_rel_pos(position_sp=s,speed_sp=80,stop_...
time.sleep(3)
def discover_l(s,t): #缶を探す際に使われる。この場合は右...
u1=us.value()
g1=gs.value()
g2=gs.value()
while g1-g2<s: ジャイロセンサーが缶を探す範囲を向...
u2=us.value()
ml.run_forever(speed_sp=-70,stop_action='...
mr.run_forever(speed_sp=70,stop_action='h...
g2=gs.value()
if u2<u1: #超音波センサーを更新した時、...
u1=u2
g3=gs.value()
ml.run_forever(speed_sp=70,stop_action='hold')
mr.run_forever(speed_sp=-70,stop_action='hold')
g4=gs.value()
g5=gs.value()
if u1<=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()
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 g7-g6<=g1-g3-6: #缶の位置に到達する...
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g7=gs.value()
stop()
else: #測定した時に缶が見つからなかった場合
while g5-g4<90:
mr.run_forever(speed_sp=-70,stop_...
ml.run_forever(speed_sp=70,stop_a...
g5=gs.value()
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
u1=u2
g3=gs.value()
ml.run_forever(speed_sp=-70,stop_action='hold')
mr.run_forever(speed_sp=70,stop_action='hold')
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()
def Redball(): #スタートから赤いボールを取るまでの指令の...
angle(250,250,3)
kaiten_r(180,110)
roll(220)
kaiten_r(195,110)
linetrace_lin()
def Blueball(): #スタートから青いボールを取るまでの指令...
angle(-20,160,2)
linetrace_lin()
angle(-35,-35,1.5)
kaiten_r(175,110)
roll(220)
def move(): #青ボールを拾った後、Eに行くまでのロボットの...
kaiten_r(190,110)
angle(-50,-50,1)
linetrace_lin()
linetrace_lout()
linetrace_lin()
linetrace_lout()
linetrace_lin()
def BlueZone(): #赤いボールを乗せてから青いボールを探す...
linetrace_rin()
linetrace_rout()
linetrace_rin()
angle(0,70,1)
linetrace_rin()
angle(70,0,1)
linetrace_rin()
def discover2(): #青ボールを探してから青ボールを投げるま...
kaiten_l(60,100)
discover_r(90,500)
def start(): #今回の課題でさせる命令の定義。この命令一つ...
r=int(input("insert numbera")) #缶がどの位置にあ...
Redball()
Blueball()
move()
if r<=2: #缶が1か2にある場合缶を探すプログラム
kaiten_l(90,110)
discover_l(90,250)
kaiten_l(95,100)
if r==3: #缶が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: #缶が4にある場合缶を探すプログラム
angle(-40,180,2)
linetrace_lin()
discover_l(60,250)
kaiten_l(195,110)
linetrace_rin()
angle(230,-40,2)
if 5<=r: #缶が5か6にある場合缶を探すプログラム
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() #実際に動作をさせるプログラム
*反省 [#v014e287]
今回はテスト期間に制作をしたのでほとんど時間が取れなかっ...
最後の調整の段階では失敗することはほとんどなかったが、本...
おそらく失敗の原因は、2つ配られていたジャイロセンサーの感...
*閲覧回数 [#f0e6620b]
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
ページ名: