2016a/Member/takuya/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#q8878fdb]
#contents
*はじめに [#p3051745]
今回は各地点に置かれた紙コップを指定された場所へと運び、...
*ロボコンのルール説明 [#r1c514f1]
#ref(2016a-mission2.png)
・基本ルール~
◦紙コップは上下どちらにおいてもかまわない~
◦紙コップを重ねる場所は、必ずしも目的地点の輪の中で...
◦最終的に紙コップが自力で立っていること、またロボッ...
◦競技時間はすべてのコップを重ね終わるまで、あるいは...
◦審判の合図の後、5秒以内にロボットをスタートさせ、...
◦EV3のチームはA,B,Cにそれぞれマークした紙コップをそ...
◦EV3のチームはA,B,C,Dのどこからスタートしてもよいが...
◦紙コップに色を塗ったり文字や絵をかいてもよいが、穴...
◦光センサは2セット合わせて2つまで使って良い、その他...
・基本得点の計算方法~
◦EV3は1段目のAのカップ2点、2段目のBのカップ4点、3段...
*ロボットについて [#oe5a289a]
**紙コップを運ぶロボット [#v3afcf6a]
#ref(1.jpg)
MediumMortorを用いて紙コップをつかむはさみの部分をギアを...
#ref(3.jpg)
紙コップを認知するように前面に赤外線センサーを取り付けた...
**ロボットを積み上げるロボット [#jbe10bfe]
#ref(4.jpg)
前から見たロボットである。中央に取り付けた赤外線センサー...
#ref(7.jpg)
下から見た写真である。土台を安定させようと重心を下に持っ...
#ref(6.jpg)
ただ、上に伸ばしすぎたため上部の安定性に欠けてしまった。...
*今回の課題を取り組むために考えたこと [#iea9ca54]
ev3の班が全て参加したので一番最初にロボットを何台使うかと...
出てきた意見としては、~
1.二台を使って紙コップを運び、もう一台を使って積み上げる案~
2.一台で紙コップを運び、もう一台で紙コップを積み上げる案...
私たちは2の意見を採用することにした。1の案ではフィール...
*プログラムの説明 [#wc1dfcd1]
**紙コップを運ぶロボット [#s2118fd7]
#!/usr/bin/python
2行目以降の内容を/usr/bin/pythonへの入力として取り扱う。
import ev3dev.ev3 as ev3
import time
ev3dev.ev3をev3として導入、またtimeという関数を導入する。
ml = ev3.LargeMotor('outB')
mr = ev3.LargeMotor('outA')
mm = ev3.MediumMotor('outC')
cs = ev3.ColorSensor('in1')
de = ev3.InfraredSensor('in2')
右モーターをmr、左モーターをml、はさみの開閉に用いるモー...
def catch():
while de.value() < 50:
if de.value() < 10:
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
mm.run_forever(duty_cycle_sp=50)
time.sleep(4)
mm.run_forever(duty_cycle_sp=0)
ml.run_forever(duty_cycle_sp=-20)
mr.run_forever(duty_cycle_sp=-20)
time.sleep(1.5)
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
ml.run_forever(duty_cycle_sp=-50)
mr.run_forever(duty_cycle_sp=50)
time.sleep(1.6)
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
else:
ml.run_forever(duty_cycle_sp=15)
mr.run_forever(duty_cycle_sp=15)
赤外線センサーが紙コップを感知したら紙コップに近づいて紙...
赤外線センサーと紙コップの距離が5cm以下になったとき、距...
def lineright():
t0 = time.time()
while time.time() - t0 < 0.35:
if cs.value () > 50 :
mr.run_forever(duty_cycle_sp=60)
ml.run_forever(duty_cycle_sp=-30)
t0 = time.time()
else:
mr.run_forever(duty_cycle_sp=-30)
ml.run_forever(duty_cycle_sp=60)
交差点で右折する場合のライントレースの動きを上記のように...
def lineleft():
t0 = time.time()
while time.time() - t0 < 0.35:
if cs.value () > 50 :
mr.run_forever(duty_cycle_sp=-30)
ml.run_forever(duty_cycle_sp=60)
t0 = time.time()
else:
mr.run_forever(duty_cycle_sp=60)
ml.run_forever(duty_cycle_sp=-30)
交差点で左折する場合のライントレースの動きを定義した。
def cross(t,dl,dr):
mr.run_forever(duty_cycle_sp=dr)
ml.run_forever(duty_cycle_sp=dl)
time.sleep(t/1000)
ml.stop()
mr.stop()
上記の定義では、 cross(動作時間、左輪のパワー、右輪のパワ...
ライントレースのプログラミングについては前回の課題2を利...
def toa():
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,0,0)
cross(1000,-18,18)
cross(1000,0,0)
catch()
cross(1400,30,-30)
lineright()
cross(1000,0,0)
cross(1000,-20,20)
cross(1000,10,10)
lineright()
cross(1000,0,0)
cross(1000,-25,25)
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3)
mm.run_forever(duty_cycle_sp=0)
cross(1000,-30,-30)
cross(2000,-40,40)
C地点からD地点へ向かい、紙コップをつかんでD地点に戻るプロ...
def tob():
lineleft()
cross(1000,-10,10)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,0,0)
cross(1000,-17,17)
cross(1000,0,0)
catch()
lineleft()
cross(1000,20,-20)
cross(1000,13,13)
lineleft()
cross(1000,20,-20)
cross(1000,40,13)
lineright()
cross(1000,0,0)
cross(1000,36,-36)
lineright()
cross(1000,0,0)
cross(1000,-20,20)
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3)
mm.run_forever(duty_cycle_sp=0)
cross(1000,-30,-30)
cross(1000,-13,13)
CからBに向かい、紙コップをつかんでC地点に戻るプログラミン...
def toc():
lineright()
cross(1000,-17,17)
cross(1000,30,-30)
cross(1000,10,10)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
catch()
lineright()
cross(1000,0,0)
cross(1000,17,-17)
cross(1000,13,13)
lineright()
cross(1000,0,0)
cross(1000,-22,22)
cross(1000,0,0)
lineright()
cross(1000,0,0)
cross(1000,-25,25)
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3)
mm.run_forever(duty_cycle_sp=0)
cross(1000,-30,-30)
cross(1500,-50,50)
CからAに向かい、紙コップをつかんでC地点に戻るプログラミン...
ここからは上記の定義を用いて実際に動かしたプログラミング...
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3.5)
mm.run_forever(duty_cycle_sp=0)
コップを挟む部分を開く
toa()
tob()
toc()
toa()
tob()
toc()
toa()
tob()
toc()
上記にある定義の通り、A・B・D地点までライントレースをしな...
time.sleep(30)
lineleft()
cross(1000,20,-20)
cross(1000,13,13)
lineleft()
cross(1000,20,-20)
cross(1000,13,13)
cross(1000,-30,-30)
ml.run_forever(duty_cycle_sp=25)
mr.run_forever(duty_cycle_sp=20)
time.sleep(1)
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
**紙コップを積み上げるロボット [#afde5271]
#!/usr/bin/python
2行目以降の内容を/usr/bin/pythonへの入力として取り扱う。
import ev3dev.ev3 as ev3
import time
ev3dev.ev3をev3として導入、またtimeという関数を導入する。
m1 = ev3.LargeMotor('outA')
m2 = ev3.MediumMotor('outB')
m3 = ev3.MediumMotor('outC')
m4 = ev3.LargeMotor('outD')
us = ev3.UltrasonicSensor('in1')
置かれた紙コップを認識する。
def search(p):
t0 = time.time()
while time.time() - t0 < 0.001:
if us.value() > p:
m4.run_forever(duty_cycle_sp=50)
t0 = time.time()
else:
m4.stop()
置かれた紙コップの元まで近寄る、元の位置に戻る
def bring(x,y):
m4.run_forever(duty_cycle_sp=x)
time.sleep(y)
m4.stop()
コンベアーを張る
def close():
m1.run_forever(duty_cycle_sp=-37.5)
time.sleep(0.32)
m1.stop()
コンベアーを動かし紙コップを持ち上げる
def up():
m3.run_forever(duty_cycle_sp=-50)
m2.run_forever(duty_cycle_sp=50)
time.sleep(2.25)
m2.stop()
m3.stop()
同様に紙コップを降ろす
def down():
m3.run_forever(duty_cycle_sp=50)
m2.run_forever(duty_cycle_sp=-50)
time.sleep(1.5)
m2.stop()
m3.stop()
コンベアーの張りを弱くし紙コップを落とす
def open(a,b):
m1.run_forever(duty_cycle_sp=a)
time.sleep(b)
m1.stop()
紙コップを探し、両側のコンベアーの間に紙コップが入るよう...
search(60)
bring(45,0.2)
close()
up()
search(60)
open(20,0.275)
bring(45,0.2)
down()
open(27.5,0.325)
bring(-40,7.5)
*結果 [#e8c5fe58]
正確に紙コップを運び、積み上げることが出来なかった。その...
*反省点 [#o8ea8248]
私たちの班がうまく紙コップを運ぶことが出来なかったのはロ...
終了行:
*目次 [#q8878fdb]
#contents
*はじめに [#p3051745]
今回は各地点に置かれた紙コップを指定された場所へと運び、...
*ロボコンのルール説明 [#r1c514f1]
#ref(2016a-mission2.png)
・基本ルール~
◦紙コップは上下どちらにおいてもかまわない~
◦紙コップを重ねる場所は、必ずしも目的地点の輪の中で...
◦最終的に紙コップが自力で立っていること、またロボッ...
◦競技時間はすべてのコップを重ね終わるまで、あるいは...
◦審判の合図の後、5秒以内にロボットをスタートさせ、...
◦EV3のチームはA,B,Cにそれぞれマークした紙コップをそ...
◦EV3のチームはA,B,C,Dのどこからスタートしてもよいが...
◦紙コップに色を塗ったり文字や絵をかいてもよいが、穴...
◦光センサは2セット合わせて2つまで使って良い、その他...
・基本得点の計算方法~
◦EV3は1段目のAのカップ2点、2段目のBのカップ4点、3段...
*ロボットについて [#oe5a289a]
**紙コップを運ぶロボット [#v3afcf6a]
#ref(1.jpg)
MediumMortorを用いて紙コップをつかむはさみの部分をギアを...
#ref(3.jpg)
紙コップを認知するように前面に赤外線センサーを取り付けた...
**ロボットを積み上げるロボット [#jbe10bfe]
#ref(4.jpg)
前から見たロボットである。中央に取り付けた赤外線センサー...
#ref(7.jpg)
下から見た写真である。土台を安定させようと重心を下に持っ...
#ref(6.jpg)
ただ、上に伸ばしすぎたため上部の安定性に欠けてしまった。...
*今回の課題を取り組むために考えたこと [#iea9ca54]
ev3の班が全て参加したので一番最初にロボットを何台使うかと...
出てきた意見としては、~
1.二台を使って紙コップを運び、もう一台を使って積み上げる案~
2.一台で紙コップを運び、もう一台で紙コップを積み上げる案...
私たちは2の意見を採用することにした。1の案ではフィール...
*プログラムの説明 [#wc1dfcd1]
**紙コップを運ぶロボット [#s2118fd7]
#!/usr/bin/python
2行目以降の内容を/usr/bin/pythonへの入力として取り扱う。
import ev3dev.ev3 as ev3
import time
ev3dev.ev3をev3として導入、またtimeという関数を導入する。
ml = ev3.LargeMotor('outB')
mr = ev3.LargeMotor('outA')
mm = ev3.MediumMotor('outC')
cs = ev3.ColorSensor('in1')
de = ev3.InfraredSensor('in2')
右モーターをmr、左モーターをml、はさみの開閉に用いるモー...
def catch():
while de.value() < 50:
if de.value() < 10:
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
mm.run_forever(duty_cycle_sp=50)
time.sleep(4)
mm.run_forever(duty_cycle_sp=0)
ml.run_forever(duty_cycle_sp=-20)
mr.run_forever(duty_cycle_sp=-20)
time.sleep(1.5)
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
ml.run_forever(duty_cycle_sp=-50)
mr.run_forever(duty_cycle_sp=50)
time.sleep(1.6)
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
else:
ml.run_forever(duty_cycle_sp=15)
mr.run_forever(duty_cycle_sp=15)
赤外線センサーが紙コップを感知したら紙コップに近づいて紙...
赤外線センサーと紙コップの距離が5cm以下になったとき、距...
def lineright():
t0 = time.time()
while time.time() - t0 < 0.35:
if cs.value () > 50 :
mr.run_forever(duty_cycle_sp=60)
ml.run_forever(duty_cycle_sp=-30)
t0 = time.time()
else:
mr.run_forever(duty_cycle_sp=-30)
ml.run_forever(duty_cycle_sp=60)
交差点で右折する場合のライントレースの動きを上記のように...
def lineleft():
t0 = time.time()
while time.time() - t0 < 0.35:
if cs.value () > 50 :
mr.run_forever(duty_cycle_sp=-30)
ml.run_forever(duty_cycle_sp=60)
t0 = time.time()
else:
mr.run_forever(duty_cycle_sp=60)
ml.run_forever(duty_cycle_sp=-30)
交差点で左折する場合のライントレースの動きを定義した。
def cross(t,dl,dr):
mr.run_forever(duty_cycle_sp=dr)
ml.run_forever(duty_cycle_sp=dl)
time.sleep(t/1000)
ml.stop()
mr.stop()
上記の定義では、 cross(動作時間、左輪のパワー、右輪のパワ...
ライントレースのプログラミングについては前回の課題2を利...
def toa():
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,0,0)
cross(1000,-18,18)
cross(1000,0,0)
catch()
cross(1400,30,-30)
lineright()
cross(1000,0,0)
cross(1000,-20,20)
cross(1000,10,10)
lineright()
cross(1000,0,0)
cross(1000,-25,25)
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3)
mm.run_forever(duty_cycle_sp=0)
cross(1000,-30,-30)
cross(2000,-40,40)
C地点からD地点へ向かい、紙コップをつかんでD地点に戻るプロ...
def tob():
lineleft()
cross(1000,-10,10)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,0,0)
cross(1000,-17,17)
cross(1000,0,0)
catch()
lineleft()
cross(1000,20,-20)
cross(1000,13,13)
lineleft()
cross(1000,20,-20)
cross(1000,40,13)
lineright()
cross(1000,0,0)
cross(1000,36,-36)
lineright()
cross(1000,0,0)
cross(1000,-20,20)
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3)
mm.run_forever(duty_cycle_sp=0)
cross(1000,-30,-30)
cross(1000,-13,13)
CからBに向かい、紙コップをつかんでC地点に戻るプログラミン...
def toc():
lineright()
cross(1000,-17,17)
cross(1000,30,-30)
cross(1000,10,10)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
lineright()
cross(1000,-20,20)
cross(1000,13,13)
catch()
lineright()
cross(1000,0,0)
cross(1000,17,-17)
cross(1000,13,13)
lineright()
cross(1000,0,0)
cross(1000,-22,22)
cross(1000,0,0)
lineright()
cross(1000,0,0)
cross(1000,-25,25)
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3)
mm.run_forever(duty_cycle_sp=0)
cross(1000,-30,-30)
cross(1500,-50,50)
CからAに向かい、紙コップをつかんでC地点に戻るプログラミン...
ここからは上記の定義を用いて実際に動かしたプログラミング...
mm.run_forever(duty_cycle_sp=-50)
time.sleep(3.5)
mm.run_forever(duty_cycle_sp=0)
コップを挟む部分を開く
toa()
tob()
toc()
toa()
tob()
toc()
toa()
tob()
toc()
上記にある定義の通り、A・B・D地点までライントレースをしな...
time.sleep(30)
lineleft()
cross(1000,20,-20)
cross(1000,13,13)
lineleft()
cross(1000,20,-20)
cross(1000,13,13)
cross(1000,-30,-30)
ml.run_forever(duty_cycle_sp=25)
mr.run_forever(duty_cycle_sp=20)
time.sleep(1)
ml.run_forever(duty_cycle_sp=0)
mr.run_forever(duty_cycle_sp=0)
**紙コップを積み上げるロボット [#afde5271]
#!/usr/bin/python
2行目以降の内容を/usr/bin/pythonへの入力として取り扱う。
import ev3dev.ev3 as ev3
import time
ev3dev.ev3をev3として導入、またtimeという関数を導入する。
m1 = ev3.LargeMotor('outA')
m2 = ev3.MediumMotor('outB')
m3 = ev3.MediumMotor('outC')
m4 = ev3.LargeMotor('outD')
us = ev3.UltrasonicSensor('in1')
置かれた紙コップを認識する。
def search(p):
t0 = time.time()
while time.time() - t0 < 0.001:
if us.value() > p:
m4.run_forever(duty_cycle_sp=50)
t0 = time.time()
else:
m4.stop()
置かれた紙コップの元まで近寄る、元の位置に戻る
def bring(x,y):
m4.run_forever(duty_cycle_sp=x)
time.sleep(y)
m4.stop()
コンベアーを張る
def close():
m1.run_forever(duty_cycle_sp=-37.5)
time.sleep(0.32)
m1.stop()
コンベアーを動かし紙コップを持ち上げる
def up():
m3.run_forever(duty_cycle_sp=-50)
m2.run_forever(duty_cycle_sp=50)
time.sleep(2.25)
m2.stop()
m3.stop()
同様に紙コップを降ろす
def down():
m3.run_forever(duty_cycle_sp=50)
m2.run_forever(duty_cycle_sp=-50)
time.sleep(1.5)
m2.stop()
m3.stop()
コンベアーの張りを弱くし紙コップを落とす
def open(a,b):
m1.run_forever(duty_cycle_sp=a)
time.sleep(b)
m1.stop()
紙コップを探し、両側のコンベアーの間に紙コップが入るよう...
search(60)
bring(45,0.2)
close()
up()
search(60)
open(20,0.275)
bring(45,0.2)
down()
open(27.5,0.325)
bring(-40,7.5)
*結果 [#e8c5fe58]
正確に紙コップを運び、積み上げることが出来なかった。その...
*反省点 [#o8ea8248]
私たちの班がうまく紙コップを運ぶことが出来なかったのはロ...
ページ名: