2019a/Member/Okina/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
*目次 [#lcf68c24]
#contents
*課題2 [#ld3c6b79]
**課題内容 [#y676ebe3]
黒線に沿い、コースを進み途中の地点でピンポン球を掴みゴー...
**コース [#tb5feb88]
大まかなコースの説明をする。&br;
A→B→C→D(一時停止あり)→E→F→G(一時停止あり)→H→I→J→K→L(ピン...
&ref(ko-su3.png);
*制作したロボット [#u9789d22]
機体は動かしやすいようにシンプルな機構
&ref(aa.jpg);&br;
ボールを捉えやすいようにアームを真ん中へ
&ref(aaa.jpg);&br;
差が減るようにセンサーも真ん中へ
&ref(aaaa.jpg);
*プログラム [#n9756d1c]
**始めの定義 [#ca90c30d]
ev3devのpythonライブラリ、sleep関数諸々を導入するところか...
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outA')
mR = LargeMotor('outB')
mm = MediumMotor('outC')
cs = ColorSensor('in2')
cs.mode = 'COL-REFLECT'
ロボットを動かす定義をしていく、l()は左前に進み、r()は右...
def r():
mL.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
mR.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
def l():
mL.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
mR.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
def f(a):
mL.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
mR.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
def b():
mL.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
mR.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
magaru(m,n,o,p)は90度回転して元の位置に戻る、というもので...
def magaru(m,n,o,p):
mL.run_timed(time_sp=400,speed_sp=1000*m,stop_action...
mR.run_timed(time_sp=400,speed_sp=1000*n,stop_action...
sleep(1)
mL.run_timed(time_sp=350+o*100,speed_sp=-350,stop_ac...
mR.run_timed(time_sp=350+p*100,speed_sp=-350,stop_ac...
sleep(1)
def ziyuu(x,y,X,Y):
mL.run_timed(time_sp=x,speed_sp=y,stop_action='brake')
mR.run_timed(time_sp=X,speed_sp=Y,stop_action='brake')
def armage():
mm.run_to_abs_pos(position_sp=80,speed_sp=100,stop_a...
sleep(0.1)
def armsage():
mm.run_to_abs_pos(position_sp=-80,speed_sp=100,stop_...
sleep(0.1)
**ライントレース [#of609929]
ライントレースに使ったプログラムを説明する。&br;
&ref(図 1.png);
&ref(図 2.png);
~print (cs.value())でカラーセンサーの値を調べたところ赤丸...
なお最初にst=cs.value()と書き、whileの中にne=cs.value()を...
ganbaru()関数は最初にs=0を置き、黒二回計測、つまり交差点...
ganbare()関数は基本的にはganbaru()関数と同じで、BからIに...
def ganbaru():
s=0
st=cs.value()
while s <= 1:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
s=s+1
sleep(1)
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
def ganbare(a):
t=0
st=cs.value()
while t <= a:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
siraberu()
sleep(3)
t=t+1
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
siraberu()関数を説明する。
&ref(図111.png);
図のように黒を二度観測、つまり交差点or”「 ” の形、Tにあ...
図のように交差点であれば左は黒を観測し右は何も観測しない...
&ref(図あうあう.png);
&ref(ううう図.png);
なお出っ張りがない部分は円のところもあり、誤作動がないよ...
これらによって交差点or”「 ” の形、Tに完全に対応させた。
def siraberu():
mR.run_timed(time_sp=400,speed_sp=200,stop_action='...
mL.run_timed(time_sp=400,speed_sp=100,stop_action='...
sleep(0.4)
ss0=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
ss1=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
ss2=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-200,stop_action=...
mL.run_timed(time_sp=400,speed_sp=-100,stop_action=...
sleep(1)
while True:
if ss0 > 65 and ss1 > 70 and ss2 > 65:
sleep(1)
magaru(1,0,0,1)
break
else:
f(300)
break
**実装プログラム [#qcba070e]
プログラム全文は以下に記載する。
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outA')
mR = LargeMotor('outB')
mm = MediumMotor('outC')
cs = ColorSensor('in2')
cs.mode = 'COL-REFLECT'
def r():
mL.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
mR.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
def l():
mL.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
mR.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
def f(a):
mL.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
mR.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
def b():
mL.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
mR.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
def magaru(m,n,o,p):
mL.run_timed(time_sp=400,speed_sp=1000*m,stop_action...
mR.run_timed(time_sp=400,speed_sp=1000*n,stop_action...
sleep(1)
mL.run_timed(time_sp=350+o*100,speed_sp=-350,stop_ac...
mR.run_timed(time_sp=350+p*100,speed_sp=-350,stop_ac...
sleep(1)
def ziyuu(x,y,X,Y):
mL.run_timed(time_sp=x,speed_sp=y,stop_action='brake')
mR.run_timed(time_sp=X,speed_sp=Y,stop_action='brake')
def armage():
mm.run_to_abs_pos(position_sp=80,speed_sp=100,stop_a...
sleep(0.1)
def armsage():
mm.run_to_abs_pos(position_sp=-80,speed_sp=100,stop_...
sleep(0.1)
def siraberu():
mR.run_timed(time_sp=400,speed_sp=200,stop_action='...
mL.run_timed(time_sp=400,speed_sp=100,stop_action='...
sleep(0.4)
ss0=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
ss1=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
ss2=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-200,stop_action=...
mL.run_timed(time_sp=400,speed_sp=-100,stop_action=...
sleep(1)
while True:
if ss0 > 65 and ss1 > 70 and ss2 > 65:
sleep(1)
magaru(1,0,0,1)
break
else:
f(300)
break
def ganbaru():
s=0
st=cs.value()
while s <= 1:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
s=s+1
sleep(1)
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
def ganbare(a):
t=0
st=cs.value()
while t <= a:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
siraberu()
sleep(3)
t=t+1
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
導入と先ほど説明した定義である。
ganbare(6)
sleep(1)
BからHに移動、ここが最も難所で成功率は高くない。
ganbaru()
sleep(1)
HからJに移動
magaru(1,0,0,1)
sleep(1)
90度回転
ganbaru()
sleep(1)
JからKに移動
magaru(0,1,1,0)
sleep(1)
90度回転
f(50)
sleep(1)
armage()
玉を回収する、この部分も誤差が大きい時は回収出来ない。
ganbare(1)
sleep(1)
armsage()
ゴールまで行き、アームを下ろした。
*反省 [#d6316867]
課題達成に必死、自己流の工夫が余りできていない。ロボット...
終了行:
[[2019a/Member]]
*目次 [#lcf68c24]
#contents
*課題2 [#ld3c6b79]
**課題内容 [#y676ebe3]
黒線に沿い、コースを進み途中の地点でピンポン球を掴みゴー...
**コース [#tb5feb88]
大まかなコースの説明をする。&br;
A→B→C→D(一時停止あり)→E→F→G(一時停止あり)→H→I→J→K→L(ピン...
&ref(ko-su3.png);
*制作したロボット [#u9789d22]
機体は動かしやすいようにシンプルな機構
&ref(aa.jpg);&br;
ボールを捉えやすいようにアームを真ん中へ
&ref(aaa.jpg);&br;
差が減るようにセンサーも真ん中へ
&ref(aaaa.jpg);
*プログラム [#n9756d1c]
**始めの定義 [#ca90c30d]
ev3devのpythonライブラリ、sleep関数諸々を導入するところか...
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outA')
mR = LargeMotor('outB')
mm = MediumMotor('outC')
cs = ColorSensor('in2')
cs.mode = 'COL-REFLECT'
ロボットを動かす定義をしていく、l()は左前に進み、r()は右...
def r():
mL.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
mR.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
def l():
mL.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
mR.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
def f(a):
mL.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
mR.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
def b():
mL.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
mR.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
magaru(m,n,o,p)は90度回転して元の位置に戻る、というもので...
def magaru(m,n,o,p):
mL.run_timed(time_sp=400,speed_sp=1000*m,stop_action...
mR.run_timed(time_sp=400,speed_sp=1000*n,stop_action...
sleep(1)
mL.run_timed(time_sp=350+o*100,speed_sp=-350,stop_ac...
mR.run_timed(time_sp=350+p*100,speed_sp=-350,stop_ac...
sleep(1)
def ziyuu(x,y,X,Y):
mL.run_timed(time_sp=x,speed_sp=y,stop_action='brake')
mR.run_timed(time_sp=X,speed_sp=Y,stop_action='brake')
def armage():
mm.run_to_abs_pos(position_sp=80,speed_sp=100,stop_a...
sleep(0.1)
def armsage():
mm.run_to_abs_pos(position_sp=-80,speed_sp=100,stop_...
sleep(0.1)
**ライントレース [#of609929]
ライントレースに使ったプログラムを説明する。&br;
&ref(図 1.png);
&ref(図 2.png);
~print (cs.value())でカラーセンサーの値を調べたところ赤丸...
なお最初にst=cs.value()と書き、whileの中にne=cs.value()を...
ganbaru()関数は最初にs=0を置き、黒二回計測、つまり交差点...
ganbare()関数は基本的にはganbaru()関数と同じで、BからIに...
def ganbaru():
s=0
st=cs.value()
while s <= 1:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
s=s+1
sleep(1)
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
def ganbare(a):
t=0
st=cs.value()
while t <= a:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
siraberu()
sleep(3)
t=t+1
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
siraberu()関数を説明する。
&ref(図111.png);
図のように黒を二度観測、つまり交差点or”「 ” の形、Tにあ...
図のように交差点であれば左は黒を観測し右は何も観測しない...
&ref(図あうあう.png);
&ref(ううう図.png);
なお出っ張りがない部分は円のところもあり、誤作動がないよ...
これらによって交差点or”「 ” の形、Tに完全に対応させた。
def siraberu():
mR.run_timed(time_sp=400,speed_sp=200,stop_action='...
mL.run_timed(time_sp=400,speed_sp=100,stop_action='...
sleep(0.4)
ss0=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
ss1=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
ss2=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-200,stop_action=...
mL.run_timed(time_sp=400,speed_sp=-100,stop_action=...
sleep(1)
while True:
if ss0 > 65 and ss1 > 70 and ss2 > 65:
sleep(1)
magaru(1,0,0,1)
break
else:
f(300)
break
**実装プログラム [#qcba070e]
プログラム全文は以下に記載する。
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outA')
mR = LargeMotor('outB')
mm = MediumMotor('outC')
cs = ColorSensor('in2')
cs.mode = 'COL-REFLECT'
def r():
mL.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
mR.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
def l():
mL.run_timed(time_sp=1,speed_sp=60,stop_action='brak...
mR.run_timed(time_sp=1,speed_sp=550,stop_action='bra...
def f(a):
mL.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
mR.run_timed(time_sp=10+a,speed_sp=150,stop_action='...
def b():
mL.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
mR.run_timed(time_sp=20,speed_sp=-50,stop_action='br...
def magaru(m,n,o,p):
mL.run_timed(time_sp=400,speed_sp=1000*m,stop_action...
mR.run_timed(time_sp=400,speed_sp=1000*n,stop_action...
sleep(1)
mL.run_timed(time_sp=350+o*100,speed_sp=-350,stop_ac...
mR.run_timed(time_sp=350+p*100,speed_sp=-350,stop_ac...
sleep(1)
def ziyuu(x,y,X,Y):
mL.run_timed(time_sp=x,speed_sp=y,stop_action='brake')
mR.run_timed(time_sp=X,speed_sp=Y,stop_action='brake')
def armage():
mm.run_to_abs_pos(position_sp=80,speed_sp=100,stop_a...
sleep(0.1)
def armsage():
mm.run_to_abs_pos(position_sp=-80,speed_sp=100,stop_...
sleep(0.1)
def siraberu():
mR.run_timed(time_sp=400,speed_sp=200,stop_action='...
mL.run_timed(time_sp=400,speed_sp=100,stop_action='...
sleep(0.4)
ss0=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
ss1=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-120,stop_action=...
mL.run_timed(time_sp=400,speed_sp=120,stop_action='...
sleep(0.4)
ss2=cs.value()
sleep(0.5)
mR.run_timed(time_sp=400,speed_sp=120,stop_action='...
mL.run_timed(time_sp=400,speed_sp=-120,stop_action=...
sleep(0.4)
mR.run_timed(time_sp=400,speed_sp=-200,stop_action=...
mL.run_timed(time_sp=400,speed_sp=-100,stop_action=...
sleep(1)
while True:
if ss0 > 65 and ss1 > 70 and ss2 > 65:
sleep(1)
magaru(1,0,0,1)
break
else:
f(300)
break
def ganbaru():
s=0
st=cs.value()
while s <= 1:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
s=s+1
sleep(1)
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
def ganbare(a):
t=0
st=cs.value()
while t <= a:
ne=cs.value()
if st>70 or ne>70:
b()
elif st<10 and ne<10:
siraberu()
sleep(3)
t=t+1
elif ne>60:
l()
elif ne<20:
r()
else:
f(0)
st=ne
導入と先ほど説明した定義である。
ganbare(6)
sleep(1)
BからHに移動、ここが最も難所で成功率は高くない。
ganbaru()
sleep(1)
HからJに移動
magaru(1,0,0,1)
sleep(1)
90度回転
ganbaru()
sleep(1)
JからKに移動
magaru(0,1,1,0)
sleep(1)
90度回転
f(50)
sleep(1)
armage()
玉を回収する、この部分も誤差が大きい時は回収出来ない。
ganbare(1)
sleep(1)
armsage()
ゴールまで行き、アームを下ろした。
*反省 [#d6316867]
課題達成に必死、自己流の工夫が余りできていない。ロボット...
ページ名: