2019a/Member/fuji/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]←2019年度前期受講生一覧へ戻る
*今回の課題 [#v100fc77]
&ref(2019a/Member/fuji/Mission3/mission3.png,80%,ロボット);
今回の課題は[[2019a/Mission3]]に掲載されています。
*制作したロボット [#b21f7756]
今回、自分の班は二つのロボットで分担させました。
?トレーに入ったボールを回収するロボット
&ref(2019a/Member/fuji/Mission3/ev3.png,80%,ロボット);
?ライン上に置いてあるボールを回収するロボット
&ref(2019a/Member/fuji/Mission3/ev3_3.png,80%,ロボット);
自分は主に?のロボットを担当しました。前回の[[2019a/Member...
詳しくはこちら→[[2019a/Member/TOY/Mission3]]
*動作についての狙い・戦略 [#t8f0b576]
?のロボット
1,トレーの下にアームをくぐらせ、ボールをトレーごと持つ
&ref(2019a/Member/fuji/Mission3/ev3.png,60%,ロボット); →
&ref(2019a/Member/fuji/Mission3/ev3_2.png,60%,ロボット);
2.アームをさらに持ち上げボールを斜面上で滑らせる
&ref(2019a/Member/fuji/Mission3/ev3_5.png,60%,ロボット);...
&ref(2019a/Member/fuji/Mission3/ev3_6.png,60%,ロボット);...
&ref(2019a/Member/fuji/Mission3/ev3_7.png,60%,ロボット);
?のロボット
ボールを掴み、斜面に滑らせてゴールに入れる
&ref(2019a/Member/fuji/Mission3/ev3_8.png,60%,ロボット);...
&ref(2019a/Member/fuji/Mission3/ev3_10.png,60%,ロボット);
*工夫した点 [#o0b2006c]
&ref(2019a/Member/fuji/Mission3/ev3_4.png,80%,ロボット);
トレーが出来るだけズレないようにストッパーをつけたり、斜...
また、アーム先が重くなり過ぎないように出来るだけ造りをシ...
*プログラム [#l4ef4d2b]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outB')
mR = LargeMotor('outD')
mZ = MediumMotor('outA')
cs = ColorSensor('in1')
cs.mode = 'COL-REFLECT'
def motor_init():
mL.reset()
mR.reset()
mZ.reset()
-アームを下げるプログラム
def down():
mZ.run_timed(time_sp=600,speed_sp=150,stop_action='brak...
sleep(1)
-トレーごとアームを上げるプログラム
def up():
mZ.run_timed(time_sp=685,speed_sp=-160,stop_action='hol...
sleep(1)
-トレーを更に持ち上げ、ボールをゴールに流し込むプログラム
def up2():
mZ.run_timed(time_sp=285,speed_sp=-569,stop_action='hol...
sleep(1)
-トレーを放り投げ、ルールに則るようにトレーを処理するプロ...
def nage():
mZ.run_timed(time_sp=400,speed_sp=-1000,stop_action='br...
sleep(1)
-ライントレースにおける前へ進むプログラム
def go():
mL.run_timed(time_sp=80,speed_sp=150,stop_action='brake')
mR.run_timed(time_sp=80,speed_sp=150,stop_action='brake')
-交差点認識後線を超えたり、人力による調整用の前進
def over(t):
mL.run_timed(time_sp=t,speed_sp=200,stop_action='brake')
mR.run_timed(time_sp=t,speed_sp=200,stop_action='brake')
sleep(1)
-人力による調整用の後進
def back(t):
mL.run_timed(time_sp=t,speed_sp=-200,stop_action='brake')
mR.run_timed(time_sp=t,speed_sp=-200,stop_action='brake')
-ライントレースにおける右折用
def turnl2():
mL.run_timed(time_sp=200,speed_sp=45,stop_action='brake')
mR.run_timed(time_sp=200,speed_sp=-50,stop_action='brak...
sleep(1)
-ライントレースにおける左折用
def turnr2():
mR.run_timed(time_sp=200,speed_sp=75,stop_action='brake')
mL.run_timed(time_sp=200,speed_sp=-45,stop_action='brak...
-左側ライントレースにおける交差点認識後の修正用プログラム
def turnr2X(x):
mR.run_timed(time_sp=x,speed_sp=-75,stop_action='brake')
mL.run_timed(time_sp=x,speed_sp=45,stop_action='brake')
-右側ライントレースにおける交差点認識後の修正用プログラム
def turnr2Y(y):
mR.run_timed(time_sp=y,speed_sp=45,stop_action='brake')
mL.run_timed(time_sp=y,speed_sp=-75,stop_action='brake')
-人力による左折調整用
def turnC(a):
mR.run_timed(time_sp=a,speed_sp=-150,stop_action='brake')
mL.run_timed(time_sp=a,speed_sp=150,stop_action='brake')
sleep(1)
-人力による右折調整用
def turnD(a):
mR.run_timed(time_sp=a,speed_sp=150,stop_action='brake')
mL.run_timed(time_sp=a,speed_sp=-150,stop_action='brake')
sleep(1)
-左側におけるライントレース
def linel():
S = 1
while S > 0: #繰り返し開始
go()
if cs.value() > 15: #白(左)に行き過ぎると
while cs.value() > 15:
turnl2() #黒(右)に向かって進む
if cs.value() < 9: #黒(右)に行き過ぎると
tS = time.time() #時間計測開始
while cs.value() < 9:
turnr2() #白(左)に向かって進む
if time.time()-tS > 0.48: #計測時間が一定以上だ...
turnr2X((time.time()-tS)*1400) #曲がりすぎた分を修正...
S = 0 #繰り返しを終了する
sleep(1)
-右側におけるライントレース
def liner():
S = 1
while S > 0: #繰り返し開始
go()
if cs.value() > 15: #白(右)に行き過ぎると
while cs.value() > 15:
turnr2() #黒(左)に向かって進む
if cs.value() < 9: #黒(左)に行き過ぎると
tS = time.time() #時間計測開始
while cs.value() < 9:
turnl2() #白(右)に向かって進む
if time.time()-tS > 0.48: #計測時間が一定以上だ...
turnr2Y((time.time()-tS)*1400) #曲がりすぎた分を修正...
S = 0 #繰り返しを終了する
sleep(1)
&ref(2019a/Member/fuji/Mission3/line_LI.jpg,100%,道);
図に表すとこのようになります。黄色は左側トレース、緑色は...
-黒い線が見つかるまで直進するプログラム
def running():
while cs.value() > 15:
go()
sleep(1)
-定義を踏まえてのプログラム
motor_init()
sleep(110) #もう一つのロボットとぶつからないように待つ
liner() #Aからスタートし、右側を辿り交差点Cを認識
over(833) #ここからトレーまでの位置を調整する
sleep(1)
turnC(1760)
back(2000)
sleep(3)
down() #アームを下げる
over(2000) #トレーの下にアームを通す
sleep(3)
up() #アームを上げる
sleep(1)
turnC(800) #辺BCに方向転換
over(400)
linel() #CからBへ左側を辿り、Bで交差点認識をする
turnC(900) #線B'D'に向かって方向転換
over(500) #線をまたぐ
running() #線B'D'に着くまで前進
sleep(3)
turnC(1910) #180度方向転換
sleep(4)
back(300) #トレーに近づく
sleep(1)
up2() #トレーへボールを流し込む
sleep(2)
down() #ここでアームを上げ下げをして、流しそびれ...
sleep(1)
up()
over(150) #同じく前進と後進を行い、ボールを確実に処...
sleep(0.5)
back(150)
sleep(1)
turnD(500) #線BDに向かって方向転換
running() #線BDに着くまで前進
linel() #線BDの左側を辿り、Dで交差点認識をする
over(150)
sleep(1)
turnC(1100) #円GHIJに向かって方向転換
down() #ここの二つでトレーを彼方へ飛ばし、ルール...
nage()
*実際にロボコンをやってみた結果 [#q5349f54]
相方のロボットは時間が足らなかったために、完成も遅れ、充...
*反省点 [#d010a92a]
-アームの固定を歯車を利用して行う
アームを歯車で固定しなかったことで、アームが安定せず結果...
-時間の余裕を持つ(テストで仕方ない面もあったが)
自分側は余裕を持って多少はやれたと思うが、相方側がとても...
-ピンポン玉+トレーがロボットにとっては重かった
アームの固定が出来ていなかったことで、モーター一つで上記...
*最後に [#h1d12bd9]
半年間お疲れ様でした。自分にとって納得のいく結果となったm...
訪問者:総計:&counter(total); 今日:&counter(today); 昨日:...
終了行:
[[2019a/Member]]←2019年度前期受講生一覧へ戻る
*今回の課題 [#v100fc77]
&ref(2019a/Member/fuji/Mission3/mission3.png,80%,ロボット);
今回の課題は[[2019a/Mission3]]に掲載されています。
*制作したロボット [#b21f7756]
今回、自分の班は二つのロボットで分担させました。
?トレーに入ったボールを回収するロボット
&ref(2019a/Member/fuji/Mission3/ev3.png,80%,ロボット);
?ライン上に置いてあるボールを回収するロボット
&ref(2019a/Member/fuji/Mission3/ev3_3.png,80%,ロボット);
自分は主に?のロボットを担当しました。前回の[[2019a/Member...
詳しくはこちら→[[2019a/Member/TOY/Mission3]]
*動作についての狙い・戦略 [#t8f0b576]
?のロボット
1,トレーの下にアームをくぐらせ、ボールをトレーごと持つ
&ref(2019a/Member/fuji/Mission3/ev3.png,60%,ロボット); →
&ref(2019a/Member/fuji/Mission3/ev3_2.png,60%,ロボット);
2.アームをさらに持ち上げボールを斜面上で滑らせる
&ref(2019a/Member/fuji/Mission3/ev3_5.png,60%,ロボット);...
&ref(2019a/Member/fuji/Mission3/ev3_6.png,60%,ロボット);...
&ref(2019a/Member/fuji/Mission3/ev3_7.png,60%,ロボット);
?のロボット
ボールを掴み、斜面に滑らせてゴールに入れる
&ref(2019a/Member/fuji/Mission3/ev3_8.png,60%,ロボット);...
&ref(2019a/Member/fuji/Mission3/ev3_10.png,60%,ロボット);
*工夫した点 [#o0b2006c]
&ref(2019a/Member/fuji/Mission3/ev3_4.png,80%,ロボット);
トレーが出来るだけズレないようにストッパーをつけたり、斜...
また、アーム先が重くなり過ぎないように出来るだけ造りをシ...
*プログラム [#l4ef4d2b]
#!/usr/bin/env python3
from ev3dev.ev3 import *
from time import sleep
mL = LargeMotor('outB')
mR = LargeMotor('outD')
mZ = MediumMotor('outA')
cs = ColorSensor('in1')
cs.mode = 'COL-REFLECT'
def motor_init():
mL.reset()
mR.reset()
mZ.reset()
-アームを下げるプログラム
def down():
mZ.run_timed(time_sp=600,speed_sp=150,stop_action='brak...
sleep(1)
-トレーごとアームを上げるプログラム
def up():
mZ.run_timed(time_sp=685,speed_sp=-160,stop_action='hol...
sleep(1)
-トレーを更に持ち上げ、ボールをゴールに流し込むプログラム
def up2():
mZ.run_timed(time_sp=285,speed_sp=-569,stop_action='hol...
sleep(1)
-トレーを放り投げ、ルールに則るようにトレーを処理するプロ...
def nage():
mZ.run_timed(time_sp=400,speed_sp=-1000,stop_action='br...
sleep(1)
-ライントレースにおける前へ進むプログラム
def go():
mL.run_timed(time_sp=80,speed_sp=150,stop_action='brake')
mR.run_timed(time_sp=80,speed_sp=150,stop_action='brake')
-交差点認識後線を超えたり、人力による調整用の前進
def over(t):
mL.run_timed(time_sp=t,speed_sp=200,stop_action='brake')
mR.run_timed(time_sp=t,speed_sp=200,stop_action='brake')
sleep(1)
-人力による調整用の後進
def back(t):
mL.run_timed(time_sp=t,speed_sp=-200,stop_action='brake')
mR.run_timed(time_sp=t,speed_sp=-200,stop_action='brake')
-ライントレースにおける右折用
def turnl2():
mL.run_timed(time_sp=200,speed_sp=45,stop_action='brake')
mR.run_timed(time_sp=200,speed_sp=-50,stop_action='brak...
sleep(1)
-ライントレースにおける左折用
def turnr2():
mR.run_timed(time_sp=200,speed_sp=75,stop_action='brake')
mL.run_timed(time_sp=200,speed_sp=-45,stop_action='brak...
-左側ライントレースにおける交差点認識後の修正用プログラム
def turnr2X(x):
mR.run_timed(time_sp=x,speed_sp=-75,stop_action='brake')
mL.run_timed(time_sp=x,speed_sp=45,stop_action='brake')
-右側ライントレースにおける交差点認識後の修正用プログラム
def turnr2Y(y):
mR.run_timed(time_sp=y,speed_sp=45,stop_action='brake')
mL.run_timed(time_sp=y,speed_sp=-75,stop_action='brake')
-人力による左折調整用
def turnC(a):
mR.run_timed(time_sp=a,speed_sp=-150,stop_action='brake')
mL.run_timed(time_sp=a,speed_sp=150,stop_action='brake')
sleep(1)
-人力による右折調整用
def turnD(a):
mR.run_timed(time_sp=a,speed_sp=150,stop_action='brake')
mL.run_timed(time_sp=a,speed_sp=-150,stop_action='brake')
sleep(1)
-左側におけるライントレース
def linel():
S = 1
while S > 0: #繰り返し開始
go()
if cs.value() > 15: #白(左)に行き過ぎると
while cs.value() > 15:
turnl2() #黒(右)に向かって進む
if cs.value() < 9: #黒(右)に行き過ぎると
tS = time.time() #時間計測開始
while cs.value() < 9:
turnr2() #白(左)に向かって進む
if time.time()-tS > 0.48: #計測時間が一定以上だ...
turnr2X((time.time()-tS)*1400) #曲がりすぎた分を修正...
S = 0 #繰り返しを終了する
sleep(1)
-右側におけるライントレース
def liner():
S = 1
while S > 0: #繰り返し開始
go()
if cs.value() > 15: #白(右)に行き過ぎると
while cs.value() > 15:
turnr2() #黒(左)に向かって進む
if cs.value() < 9: #黒(左)に行き過ぎると
tS = time.time() #時間計測開始
while cs.value() < 9:
turnl2() #白(右)に向かって進む
if time.time()-tS > 0.48: #計測時間が一定以上だ...
turnr2Y((time.time()-tS)*1400) #曲がりすぎた分を修正...
S = 0 #繰り返しを終了する
sleep(1)
&ref(2019a/Member/fuji/Mission3/line_LI.jpg,100%,道);
図に表すとこのようになります。黄色は左側トレース、緑色は...
-黒い線が見つかるまで直進するプログラム
def running():
while cs.value() > 15:
go()
sleep(1)
-定義を踏まえてのプログラム
motor_init()
sleep(110) #もう一つのロボットとぶつからないように待つ
liner() #Aからスタートし、右側を辿り交差点Cを認識
over(833) #ここからトレーまでの位置を調整する
sleep(1)
turnC(1760)
back(2000)
sleep(3)
down() #アームを下げる
over(2000) #トレーの下にアームを通す
sleep(3)
up() #アームを上げる
sleep(1)
turnC(800) #辺BCに方向転換
over(400)
linel() #CからBへ左側を辿り、Bで交差点認識をする
turnC(900) #線B'D'に向かって方向転換
over(500) #線をまたぐ
running() #線B'D'に着くまで前進
sleep(3)
turnC(1910) #180度方向転換
sleep(4)
back(300) #トレーに近づく
sleep(1)
up2() #トレーへボールを流し込む
sleep(2)
down() #ここでアームを上げ下げをして、流しそびれ...
sleep(1)
up()
over(150) #同じく前進と後進を行い、ボールを確実に処...
sleep(0.5)
back(150)
sleep(1)
turnD(500) #線BDに向かって方向転換
running() #線BDに着くまで前進
linel() #線BDの左側を辿り、Dで交差点認識をする
over(150)
sleep(1)
turnC(1100) #円GHIJに向かって方向転換
down() #ここの二つでトレーを彼方へ飛ばし、ルール...
nage()
*実際にロボコンをやってみた結果 [#q5349f54]
相方のロボットは時間が足らなかったために、完成も遅れ、充...
*反省点 [#d010a92a]
-アームの固定を歯車を利用して行う
アームを歯車で固定しなかったことで、アームが安定せず結果...
-時間の余裕を持つ(テストで仕方ない面もあったが)
自分側は余裕を持って多少はやれたと思うが、相方側がとても...
-ピンポン玉+トレーがロボットにとっては重かった
アームの固定が出来ていなかったことで、モーター一つで上記...
*最後に [#h1d12bd9]
半年間お疲れ様でした。自分にとって納得のいく結果となったm...
訪問者:総計:&counter(total); 今日:&counter(today); 昨日:...
ページ名: