2019a/Member/Kaguya/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&size(30){目次};
#contents(level=1)
*課題 [#t776b413]
今回の課題は黒い線の上をトレースする「ライントレーサー」...
&size(21){A地点から出発 → Lでピンポン玉をキャッチ → Mで...
&ref(map.png);
黒線をトレースする方法はいろいろあるが、センサー一つでと...
そこで今回自分がとった方法は&size(25){「黒い部分の量で判...
だが、結論から言うと&size(25){この方法は};(少なくとも自分...
この方法を試そうとしている人がいるのなら、自分の反省から...
*ロボットの機構・仕組み[#c845bf86]
&ref(zentai2.png);
これがロボットの全体像。~
前からコンピュータ部分を縦にして使ってみたかったので、こ...
しかし、カッコ良くはなったが、重心の調整が難しくなったの...
?:ロボットを移動させるためのモーター。フィールドを縦横無...
?:黒線をスキャンするためのセンサー。ライントレースの要。~
?:ボールを捕まえるためのアーム。凄まじいパワーでボールを...
**?:移動モーター [#if3f7cdd]
&ref(idou.jpg);
何の面白みのない説明書通りの移動モーター。~
左右が独立していて、その場で回転、曲がったりもできる。~
バランスをとるために中間部分にベアリングがついてる。
**?:カラーセンサー [#s9ecbadc]
&ref(sensa.png);
上でかいたように今回使う方法は黒い部分の量による判定であ...
なので、カラーセンサーを少し高めの位置に付け、広い範囲を...
&ref(sensapos.jpg);
センサーは本体を回して黒線を見つけるために、二つのモータ...
**?:アーム [#d84335af]
&ref(arm.jpg);
ミディアムモーターで床スレスレに付けた棒を動かす。~
反時計回りでボールを掴み、素早く時計回りで弾く。
*プログラム [#hc7a9c7e]
**インポートと接続のなにか [#oe62e549]
#!/usr/bin/env python3~
from ev3dev.ev3 import *~
from time import sleep~
mR = LargeMotor('outA')~
mL = LargeMotor('outC')~
cs = ColorSensor('in2')~
mA = MediumMotor('outD')~
特になし
**よく使う動作の定義 [#m0d59a75]
def migi(a):
sleep(1)
mR.run_timed(speed_sp=100, time_sp=a, stop_actio...
def hidari(b):
sleep(1)
mL.run_timed(speed_sp=100, time_sp=b, stop_actio...
右、左へ曲がる
def bihidari(c):
mR.run_timed(time_sp=c, speed_sp=100, stop_actio...
mL.run_timed(time_sp=c, speed_sp=-100, stop_acti...
def bimigi(d):
mR.run_timed(time_sp=d, speed_sp=-100, stop_acti...
mL.run_timed(time_sp=d, speed_sp=100, stop_actio...
右、左へ本体が回転
def koutai(e):
mR.run_timed(speed_sp=-100, time_sp=e, stop_acti...
mL.run_timed(speed_sp=-100, time_sp=e, stop_acti...
def zensin(f):
mR.run_timed(speed_sp=100, time_sp=f, stop_actio...
mL.run_timed(speed_sp=100, time_sp=f, stop_actio...
sleep(1)
時間を指定して前進、後退。
def zensin_forever(g):
mR.run_forever(speed_sp=g, stop_action='brake')
mL.run_forever(speed_sp=g, stop_action='brake')
速さを指定して前進。
**ライントレースのコアとなるプログラム [#i285c278]
n = 1
q = 1
def Trace_Method():
while True:
if 4 <= cs.value() <= 5:
zensin_forever(100)
if 4 <= cs.value() <= 5:
zensin_forever(100)
sleep(0.01)
elif cs.value() >= 6:
q = 0
while cs.value() >= 6:
i = 0
while cs.value() >= 6 an...
bimigi(150)
sleep(0.1)
i += 1
i = 0
while cs.value() >=6 and...
bihidari(150)
sleep(0.1)
i += 1
i = 0
while cs.value() >=6 and...
bimigi(150)
sleep(0.1)
i += 1
q += 1
elif cs.value() <= 3:
mL.stop()
mR.stop()
break
本体を動かし、黒線を探すためのメソッド。
ややこしいのでざっくりと説明すると、扇形に動き、黒線を見...
一見簡単な動きに思えるがこれを実現するのは大変だった。
**各交差点での動作 [#k8633bba]
&ref(map_kai1.png);
?~
def main():
Trace_Method()
print(1)
sleep(1)
zensin(2500)
?~
Trace_Method()
print(2)
sleep(1)
zensin(1000)
sleep(0.5)
bimigi(500)
sleep(0.5)
?
Trace_Method()
print(3)
sleep(1)
bimigi(1000)
sleep(1.3)
zensin(1500)
Trace_Method()
print(4)
sleep(1)
bimigi(1000)
sleep(1)
zensin(500)
Trace_Method()
print(5)
Trace_Method()
print(5)
sleep(1)
bimigi(1000)
sleep(1)
zensin(500)
?
Trace_Method()
print(6)
sleep(1)
bihidari(500)
sleep(1)
zensin(1000)
Trace_Method()
print(7)
sleep(1)
bihidari(1000)
sleep(0.5)
zensin(1000)
Trace_Method()
print(8)
sleep(1)
bimigi(500)
sleep(0.5)
zensin(1000)
?
Trace_Method()
print(9)
sleep(1)
bihidari(500)
sleep(1)
zensin(500)
bihidari(750)
sleep(1)
zensin(2000)
?
Trace_Method()
sleep(1)
bihidari(1500)
sleep(1.7)
zensin(2300)
sleep(2.3)
sleep(1)
sleep(2.3)
sleep(1)
mA.reset()
mA.run_to_rel_pos(position_sp=-30,speed_sp=100,s...
sleep(1)
bimigi(3000)
sleep(2.7)
zensin(2500)
sleep(1)
*問題及びその反省 [#le29da98]
判定を黒の多さで判別するということは、自作したコースの線...
カーブはどうしてもマジックで書かなければならないので、ど...
ので、判定ミスが多かった。~
結論、この方法は良くない。
終了行:
&size(30){目次};
#contents(level=1)
*課題 [#t776b413]
今回の課題は黒い線の上をトレースする「ライントレーサー」...
&size(21){A地点から出発 → Lでピンポン玉をキャッチ → Mで...
&ref(map.png);
黒線をトレースする方法はいろいろあるが、センサー一つでと...
そこで今回自分がとった方法は&size(25){「黒い部分の量で判...
だが、結論から言うと&size(25){この方法は};(少なくとも自分...
この方法を試そうとしている人がいるのなら、自分の反省から...
*ロボットの機構・仕組み[#c845bf86]
&ref(zentai2.png);
これがロボットの全体像。~
前からコンピュータ部分を縦にして使ってみたかったので、こ...
しかし、カッコ良くはなったが、重心の調整が難しくなったの...
?:ロボットを移動させるためのモーター。フィールドを縦横無...
?:黒線をスキャンするためのセンサー。ライントレースの要。~
?:ボールを捕まえるためのアーム。凄まじいパワーでボールを...
**?:移動モーター [#if3f7cdd]
&ref(idou.jpg);
何の面白みのない説明書通りの移動モーター。~
左右が独立していて、その場で回転、曲がったりもできる。~
バランスをとるために中間部分にベアリングがついてる。
**?:カラーセンサー [#s9ecbadc]
&ref(sensa.png);
上でかいたように今回使う方法は黒い部分の量による判定であ...
なので、カラーセンサーを少し高めの位置に付け、広い範囲を...
&ref(sensapos.jpg);
センサーは本体を回して黒線を見つけるために、二つのモータ...
**?:アーム [#d84335af]
&ref(arm.jpg);
ミディアムモーターで床スレスレに付けた棒を動かす。~
反時計回りでボールを掴み、素早く時計回りで弾く。
*プログラム [#hc7a9c7e]
**インポートと接続のなにか [#oe62e549]
#!/usr/bin/env python3~
from ev3dev.ev3 import *~
from time import sleep~
mR = LargeMotor('outA')~
mL = LargeMotor('outC')~
cs = ColorSensor('in2')~
mA = MediumMotor('outD')~
特になし
**よく使う動作の定義 [#m0d59a75]
def migi(a):
sleep(1)
mR.run_timed(speed_sp=100, time_sp=a, stop_actio...
def hidari(b):
sleep(1)
mL.run_timed(speed_sp=100, time_sp=b, stop_actio...
右、左へ曲がる
def bihidari(c):
mR.run_timed(time_sp=c, speed_sp=100, stop_actio...
mL.run_timed(time_sp=c, speed_sp=-100, stop_acti...
def bimigi(d):
mR.run_timed(time_sp=d, speed_sp=-100, stop_acti...
mL.run_timed(time_sp=d, speed_sp=100, stop_actio...
右、左へ本体が回転
def koutai(e):
mR.run_timed(speed_sp=-100, time_sp=e, stop_acti...
mL.run_timed(speed_sp=-100, time_sp=e, stop_acti...
def zensin(f):
mR.run_timed(speed_sp=100, time_sp=f, stop_actio...
mL.run_timed(speed_sp=100, time_sp=f, stop_actio...
sleep(1)
時間を指定して前進、後退。
def zensin_forever(g):
mR.run_forever(speed_sp=g, stop_action='brake')
mL.run_forever(speed_sp=g, stop_action='brake')
速さを指定して前進。
**ライントレースのコアとなるプログラム [#i285c278]
n = 1
q = 1
def Trace_Method():
while True:
if 4 <= cs.value() <= 5:
zensin_forever(100)
if 4 <= cs.value() <= 5:
zensin_forever(100)
sleep(0.01)
elif cs.value() >= 6:
q = 0
while cs.value() >= 6:
i = 0
while cs.value() >= 6 an...
bimigi(150)
sleep(0.1)
i += 1
i = 0
while cs.value() >=6 and...
bihidari(150)
sleep(0.1)
i += 1
i = 0
while cs.value() >=6 and...
bimigi(150)
sleep(0.1)
i += 1
q += 1
elif cs.value() <= 3:
mL.stop()
mR.stop()
break
本体を動かし、黒線を探すためのメソッド。
ややこしいのでざっくりと説明すると、扇形に動き、黒線を見...
一見簡単な動きに思えるがこれを実現するのは大変だった。
**各交差点での動作 [#k8633bba]
&ref(map_kai1.png);
?~
def main():
Trace_Method()
print(1)
sleep(1)
zensin(2500)
?~
Trace_Method()
print(2)
sleep(1)
zensin(1000)
sleep(0.5)
bimigi(500)
sleep(0.5)
?
Trace_Method()
print(3)
sleep(1)
bimigi(1000)
sleep(1.3)
zensin(1500)
Trace_Method()
print(4)
sleep(1)
bimigi(1000)
sleep(1)
zensin(500)
Trace_Method()
print(5)
Trace_Method()
print(5)
sleep(1)
bimigi(1000)
sleep(1)
zensin(500)
?
Trace_Method()
print(6)
sleep(1)
bihidari(500)
sleep(1)
zensin(1000)
Trace_Method()
print(7)
sleep(1)
bihidari(1000)
sleep(0.5)
zensin(1000)
Trace_Method()
print(8)
sleep(1)
bimigi(500)
sleep(0.5)
zensin(1000)
?
Trace_Method()
print(9)
sleep(1)
bihidari(500)
sleep(1)
zensin(500)
bihidari(750)
sleep(1)
zensin(2000)
?
Trace_Method()
sleep(1)
bihidari(1500)
sleep(1.7)
zensin(2300)
sleep(2.3)
sleep(1)
sleep(2.3)
sleep(1)
mA.reset()
mA.run_to_rel_pos(position_sp=-30,speed_sp=100,s...
sleep(1)
bimigi(3000)
sleep(2.7)
zensin(2500)
sleep(1)
*問題及びその反省 [#le29da98]
判定を黒の多さで判別するということは、自作したコースの線...
カーブはどうしてもマジックで書かなければならないので、ど...
ので、判定ミスが多かった。~
結論、この方法は良くない。
ページ名: