2018b/Member/prague/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題2の内容 [#fb0bb097]
今回の課題はライントレースで決められた場所を走らせ、その...
第1コース
#ref(2018b/Member/prague/Mission2/robo street1.png,100%,...
ロボットを長方形X内におき、Aをスタート
1,Bを右折
2,Kで一時停止して左折
3,Jを直進
4,Iを直進
5,Hを左折
6,Gで一時停止して左折
7,Eで一時停止して右折
8,Lを経て正方形Y内に入って停止
(一時停止の指定がある場所は、1秒間停止すること)
ボールはロボットが弧KJIH上にある時にQ地点の空き缶に当てる。
第2コース
#ref(2018b/Member/prague/Mission2/robo street2.png,100%,...
ロボットを正方形Y内におき、Lをスタート
1,Eを一時停止して直進
2,Iを一時停止して左折
3,Hを直進
4,Kを直進
5,Jを左折
6,Cを一時停止して右折
7,Eを一時停止して直進
8,Gを一時停止して直進
長方形X内に入って停止
(一時停止の指定がある場所は、1秒間停止すること)
ボールはロボットが弧IHKJ上にある時にP地点の空き缶に当てる。
*機体について [#ga36b92c]
**機体の全体図[#n28e5578]
#ref(2018b/Member/prague/Mission2/robobo.png,8%,機体の全...
#ref(2018b/Member/prague/Mission2/s_robo zentaizu .png,10...
基本的には説明書で作った車体を利用して作成してある。
**機体の特徴 [#fb1be886]
***車体部分 [#z82b9af6]
#ref(2018b/Member/prague/Mission2/syatai.png,10%,横からの...
今回はライントレースということで色を読み取って機体を黒線...
#ref(2018b/Member/prague/Mission2/s_ultrasonic.png,100%,...
電源が付くと...
#ref(2018b/Member/prague/Mission2/s_ultrasonic light.png,...
今回の課題ではカラーセンサーが読み取る値が非常に重要にな...
今回大きな課題となったのは配線である。モーターが3つ、セ...
***放出部分 [#z5a87b02]
このロボットではボールを転がす形で投げるような設計にした...
#ref(2018b/Member/prague/Mission2/s_throwing .png,100%,動...
この状態から・・・
#ref(2018b/Member/prague/Mission2/s_threw1.png,60%,動かし...
このように動く。
ここの部分は車体より上に作る必要があったのだが、ある程度...
*プログラミング [#t681e04a]
**出力や動かし方の定義 [#a96840ed]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outA') #左タイヤの出力の定義
mR = LargeMotor('outB') #右タイヤの出力の定義
mi = MediumMotor('outD') #放出部分の出力の定義
s1 = TouchSensor('in3') #タッチセンサの出力の定義
s2 = ColorSensor('in4') #カラーセンサの出力の定義
U1 = UltrasonicSensor('in2') #超音波センサの出力の定義
def laf(t): #left and forwardの略。ライントレースの際に...
mL.run_timed(time_sp=30,speed_sp=120+20*t,stop_ac...
mR.run_timed(time_sp=30,speed_sp=120-20*t,stop_ac...
def raf(t): #right and forwardの略。lafの逆向き
mL.run_timed(time_sp=30,speed_sp=120-20*t,stop_ac...
mR.run_timed(time_sp=30,speed_sp=120+20*t,stop_ac...
def tl(t): #turn leftの略 lafと似ているがより大きく回転...
mL.run_timed(time_sp=20,speed_sp=-150*t,stop_acti...
mR.run_timed(time_sp=20,speed_sp=150*t,stop_actio...
def tr(t): #turn lightの略 tlの逆向きに表す
mL.run_timed(time_sp=20,speed_sp=100*t,stop_actio...
mR.run_timed(time_sp=20,speed_sp=-100*t,stop_acti...
def fd(): #まっすぐに進ませる定義。左右で同じだけ進ませ...
mL.run_timed(time_sp=20,speed_sp=150,stop_action=...
mR.run_timed(time_sp=20,speed_sp=150,stop_action=...
def roll(t,s): #車体を回転させる。スピードを固定して回る...
mL.run_to_rel_pos(position_sp=t,speed_sp=150,stop...
mR.run_to_rel_pos(position_sp=s,speed_sp=150,stop...
基本的なロボットの動かし方は以下のとおりである。
#ref(2018b/Member/prague/Mission2/sikumi.png,100%,トレー...
以下はボールを投げる際に利用した定義である。
def throwing(s,t): #ボールを投げる際につかわれる
mi.run_timed(time_sp=s,speed_sp=t,stop_action='br...
def turn(s,t): #缶を探すときに車を回す
mL.run_timed(time_sp=s,speed_sp=t,stop_action='br...
mR.run_timed(time_sp=s,speed_sp=-t,stop_action='b...
**動作部 [#z5c47cb3]
ここからは実際にロボットを動かすプログラミングである。
roll(150,150) #前にロボットを動かす
sleep(3) #3秒止まる
w=0 #変数wの定義
b=0 #変数bの定義
i=0 #変数iの定義
***道の左に沿ってロボをトレースさせるプログラム [#y0f429f8]
while s1.value() == 0: #タッチセンサーが押されていないと...
t0 = time.time()
if i == 0: #i=0の時の数える時間
s=0.2
elif i == 3: #i=3の時の数える時間
s=1.0
elif i == 6: #i=6の時の数える時間
s=3
elif i == 7: #i=7の時の数える時間
s=1.1
elif i == 8: #i=8の時の数える時間
s=6.5
elif i == 9: #i=9の時の数える時間
s=0.7
else: #その他での数える時間
s=0.8
while i <= 9:
if time.time()-t0 <= 7*s: #交差点を出発し...
b=0
if 65 < s2.value(): #道から大きく外れたと...
tl(-1)
w=w+1
b=0
if 55 < s2.value() <= 65: #道から少し外れ...
laf(1)
w=w+1
b=0
if 50 < s2.value() <= 55: #黒と白のちょう...
fd()
w=0
b=0
if 40 < s2.value() <= 50: #道の中に少しだ...
raf(1)
b=b+0.6
if s2.value() <= 40: #道に深く入り込んだ...
tr(-1)
b=b+1 #変数bに1を足す
w=0 #変数wを0に戻す
elif b>33: #交差点を認識した時の命令
i=i+1 #iに1を足す
print(i) #コマンドプロンプトにiの...
break #命令を終わらせる
ルート2では左沿いでのみトレースを行ったので1つだけしか...
***交差点を認知した回数と動作の指定 [#d6f6e8e1]
if i == 1: #iが1の時の命令
sleep(2) #2秒休み
roll(30,-30)
sleep(1) #1秒休み
roll(50,50)
sleep(2) #2秒休み
if i == 3: #iが3の時の命令 ここは缶を探すコマン...
roll(200,0)
sleep(2) #2秒休み
I=0
while s1.value()==0: #ここから缶を見つけ...
u = 100000
t0=time.time()
print(I)
turn(12000,70)
while time.time()-t0<= 12: #命令...
if u >=U1.value(): #この...
u = U1.value()
t1 = time.time()
print(u)
else:
continue #この行...
sleep(0.5) #0.5秒休み
t2=time.time() #缶を探してから止...
sleep(1) #1秒休み
print(t1)
print(t2)
t3=t2-t1
print(t3)
turn(t3*(1040+10*i),-70)
sleep(t3*1.2) #t3の1.2倍だけ秒休み
if u+20>U1.value(): #缶の方向を向...
throwing(1000,50)
sleep(3) #3秒休み
throwing(1000,-50)
break
elif I == 3: #2回探せなかったとき...
throwing(1000,50)
sleep(3) #3秒休み
throwing(1000,-50)
break
else: #缶が見つからなかったときも...
I=I+2
sleep(2) #2秒休み
roll(-30,-30)
sleep(3) #3秒休み
if i == 4: #iが4の時の命令
roll(200,0)
sleep(2) #2秒休み
if i == 6: #iが6の時の命令
roll(-10,-10)
sleep(2) #2秒休み
roll(420,-20)
sleep(6) #6秒休み
if 8 <= i <= 9: #iが8,9の時の命令
roll(30,-30)
sleep(1) #1秒休み
roll(70,70)
sleep(2) #2秒休み
if i == 10: #iが10の時の命令
roll(50,-50)
sleep(1) #1秒休み
roll(250,250)
break #実行を終了させる
ここは主に交差点を認知してからどう動くか、また止まるタイ...
ここで変数w,b,iというものが存在しているが、これは順に白の...
このwとbというのは交差点をみわけるために使われた。wは今回...
このことから新しい変数s,iを作成した。
sという変数は時間を表す。このsは交差点を認知した瞬間か...
iは前述のとおり交差点の個数を数えるもの。交差点から交差...
*考察と反省 [#m4a19783]
今回ライントレースをやってみて一番難しいと感じたところ...
反省点としてまず挙げられるのは、ロボットの進ませ方であ...
今回ボールを投げるところでは一回転して缶を見つけてから...
*閲覧回数 [#f0e6620b]
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
終了行:
#contents
*課題2の内容 [#fb0bb097]
今回の課題はライントレースで決められた場所を走らせ、その...
第1コース
#ref(2018b/Member/prague/Mission2/robo street1.png,100%,...
ロボットを長方形X内におき、Aをスタート
1,Bを右折
2,Kで一時停止して左折
3,Jを直進
4,Iを直進
5,Hを左折
6,Gで一時停止して左折
7,Eで一時停止して右折
8,Lを経て正方形Y内に入って停止
(一時停止の指定がある場所は、1秒間停止すること)
ボールはロボットが弧KJIH上にある時にQ地点の空き缶に当てる。
第2コース
#ref(2018b/Member/prague/Mission2/robo street2.png,100%,...
ロボットを正方形Y内におき、Lをスタート
1,Eを一時停止して直進
2,Iを一時停止して左折
3,Hを直進
4,Kを直進
5,Jを左折
6,Cを一時停止して右折
7,Eを一時停止して直進
8,Gを一時停止して直進
長方形X内に入って停止
(一時停止の指定がある場所は、1秒間停止すること)
ボールはロボットが弧IHKJ上にある時にP地点の空き缶に当てる。
*機体について [#ga36b92c]
**機体の全体図[#n28e5578]
#ref(2018b/Member/prague/Mission2/robobo.png,8%,機体の全...
#ref(2018b/Member/prague/Mission2/s_robo zentaizu .png,10...
基本的には説明書で作った車体を利用して作成してある。
**機体の特徴 [#fb1be886]
***車体部分 [#z82b9af6]
#ref(2018b/Member/prague/Mission2/syatai.png,10%,横からの...
今回はライントレースということで色を読み取って機体を黒線...
#ref(2018b/Member/prague/Mission2/s_ultrasonic.png,100%,...
電源が付くと...
#ref(2018b/Member/prague/Mission2/s_ultrasonic light.png,...
今回の課題ではカラーセンサーが読み取る値が非常に重要にな...
今回大きな課題となったのは配線である。モーターが3つ、セ...
***放出部分 [#z5a87b02]
このロボットではボールを転がす形で投げるような設計にした...
#ref(2018b/Member/prague/Mission2/s_throwing .png,100%,動...
この状態から・・・
#ref(2018b/Member/prague/Mission2/s_threw1.png,60%,動かし...
このように動く。
ここの部分は車体より上に作る必要があったのだが、ある程度...
*プログラミング [#t681e04a]
**出力や動かし方の定義 [#a96840ed]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outA') #左タイヤの出力の定義
mR = LargeMotor('outB') #右タイヤの出力の定義
mi = MediumMotor('outD') #放出部分の出力の定義
s1 = TouchSensor('in3') #タッチセンサの出力の定義
s2 = ColorSensor('in4') #カラーセンサの出力の定義
U1 = UltrasonicSensor('in2') #超音波センサの出力の定義
def laf(t): #left and forwardの略。ライントレースの際に...
mL.run_timed(time_sp=30,speed_sp=120+20*t,stop_ac...
mR.run_timed(time_sp=30,speed_sp=120-20*t,stop_ac...
def raf(t): #right and forwardの略。lafの逆向き
mL.run_timed(time_sp=30,speed_sp=120-20*t,stop_ac...
mR.run_timed(time_sp=30,speed_sp=120+20*t,stop_ac...
def tl(t): #turn leftの略 lafと似ているがより大きく回転...
mL.run_timed(time_sp=20,speed_sp=-150*t,stop_acti...
mR.run_timed(time_sp=20,speed_sp=150*t,stop_actio...
def tr(t): #turn lightの略 tlの逆向きに表す
mL.run_timed(time_sp=20,speed_sp=100*t,stop_actio...
mR.run_timed(time_sp=20,speed_sp=-100*t,stop_acti...
def fd(): #まっすぐに進ませる定義。左右で同じだけ進ませ...
mL.run_timed(time_sp=20,speed_sp=150,stop_action=...
mR.run_timed(time_sp=20,speed_sp=150,stop_action=...
def roll(t,s): #車体を回転させる。スピードを固定して回る...
mL.run_to_rel_pos(position_sp=t,speed_sp=150,stop...
mR.run_to_rel_pos(position_sp=s,speed_sp=150,stop...
基本的なロボットの動かし方は以下のとおりである。
#ref(2018b/Member/prague/Mission2/sikumi.png,100%,トレー...
以下はボールを投げる際に利用した定義である。
def throwing(s,t): #ボールを投げる際につかわれる
mi.run_timed(time_sp=s,speed_sp=t,stop_action='br...
def turn(s,t): #缶を探すときに車を回す
mL.run_timed(time_sp=s,speed_sp=t,stop_action='br...
mR.run_timed(time_sp=s,speed_sp=-t,stop_action='b...
**動作部 [#z5c47cb3]
ここからは実際にロボットを動かすプログラミングである。
roll(150,150) #前にロボットを動かす
sleep(3) #3秒止まる
w=0 #変数wの定義
b=0 #変数bの定義
i=0 #変数iの定義
***道の左に沿ってロボをトレースさせるプログラム [#y0f429f8]
while s1.value() == 0: #タッチセンサーが押されていないと...
t0 = time.time()
if i == 0: #i=0の時の数える時間
s=0.2
elif i == 3: #i=3の時の数える時間
s=1.0
elif i == 6: #i=6の時の数える時間
s=3
elif i == 7: #i=7の時の数える時間
s=1.1
elif i == 8: #i=8の時の数える時間
s=6.5
elif i == 9: #i=9の時の数える時間
s=0.7
else: #その他での数える時間
s=0.8
while i <= 9:
if time.time()-t0 <= 7*s: #交差点を出発し...
b=0
if 65 < s2.value(): #道から大きく外れたと...
tl(-1)
w=w+1
b=0
if 55 < s2.value() <= 65: #道から少し外れ...
laf(1)
w=w+1
b=0
if 50 < s2.value() <= 55: #黒と白のちょう...
fd()
w=0
b=0
if 40 < s2.value() <= 50: #道の中に少しだ...
raf(1)
b=b+0.6
if s2.value() <= 40: #道に深く入り込んだ...
tr(-1)
b=b+1 #変数bに1を足す
w=0 #変数wを0に戻す
elif b>33: #交差点を認識した時の命令
i=i+1 #iに1を足す
print(i) #コマンドプロンプトにiの...
break #命令を終わらせる
ルート2では左沿いでのみトレースを行ったので1つだけしか...
***交差点を認知した回数と動作の指定 [#d6f6e8e1]
if i == 1: #iが1の時の命令
sleep(2) #2秒休み
roll(30,-30)
sleep(1) #1秒休み
roll(50,50)
sleep(2) #2秒休み
if i == 3: #iが3の時の命令 ここは缶を探すコマン...
roll(200,0)
sleep(2) #2秒休み
I=0
while s1.value()==0: #ここから缶を見つけ...
u = 100000
t0=time.time()
print(I)
turn(12000,70)
while time.time()-t0<= 12: #命令...
if u >=U1.value(): #この...
u = U1.value()
t1 = time.time()
print(u)
else:
continue #この行...
sleep(0.5) #0.5秒休み
t2=time.time() #缶を探してから止...
sleep(1) #1秒休み
print(t1)
print(t2)
t3=t2-t1
print(t3)
turn(t3*(1040+10*i),-70)
sleep(t3*1.2) #t3の1.2倍だけ秒休み
if u+20>U1.value(): #缶の方向を向...
throwing(1000,50)
sleep(3) #3秒休み
throwing(1000,-50)
break
elif I == 3: #2回探せなかったとき...
throwing(1000,50)
sleep(3) #3秒休み
throwing(1000,-50)
break
else: #缶が見つからなかったときも...
I=I+2
sleep(2) #2秒休み
roll(-30,-30)
sleep(3) #3秒休み
if i == 4: #iが4の時の命令
roll(200,0)
sleep(2) #2秒休み
if i == 6: #iが6の時の命令
roll(-10,-10)
sleep(2) #2秒休み
roll(420,-20)
sleep(6) #6秒休み
if 8 <= i <= 9: #iが8,9の時の命令
roll(30,-30)
sleep(1) #1秒休み
roll(70,70)
sleep(2) #2秒休み
if i == 10: #iが10の時の命令
roll(50,-50)
sleep(1) #1秒休み
roll(250,250)
break #実行を終了させる
ここは主に交差点を認知してからどう動くか、また止まるタイ...
ここで変数w,b,iというものが存在しているが、これは順に白の...
このwとbというのは交差点をみわけるために使われた。wは今回...
このことから新しい変数s,iを作成した。
sという変数は時間を表す。このsは交差点を認知した瞬間か...
iは前述のとおり交差点の個数を数えるもの。交差点から交差...
*考察と反省 [#m4a19783]
今回ライントレースをやってみて一番難しいと感じたところ...
反省点としてまず挙げられるのは、ロボットの進ませ方であ...
今回ボールを投げるところでは一回転して缶を見つけてから...
*閲覧回数 [#f0e6620b]
総計:&counter(total); 今日:&counter(today); 昨日:&counter...
ページ名: