2016b/Member/bicky/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題2 ~ライントレース~ [#ia867925]
-B地点をスタートしてQ付近の3/4円周上でピンポン玉をつかみ...
-なるべく速く正確に動くロボットになるように工夫して、交差...
-可能であればC,Dのゴールエリアライン上からシュートする
#br
今回の課題において大きなポイントはライントレースのコース...
#br
**ライントレースのアプローチ [#ec206763]
+黒いライン上をジグザグに移動する
+黒いラインと模造紙の白色の境目をジグザグに移動する(今回...
+PID制御 等
***解説 [#o08f2bad]
いずれの方法もカラーセンサによってラインを検知している
+&size(20){黒いライン上をジグザグに移動する};
#br
#ref(./1lt.jpg,80%)
#br
メリット:ラインを見失わない&br;デメリット:交差点を検知...
#br
+&size(20){黒いラインと模造紙の白色の境目をジグザグに移動...
#br
#ref(./2.jpg,80%)
#br
メリット:移動が早い、交差点を検知しやすい&br;デメリット...
#br
+&size(20){PID制御};
#br
#ref(./3.jpg,80%)
#br
メリット:直進、カーブでの動きがスムーズになる&br;デメリ...
PID制御とは“比例と積分と微分を使った制御”のことであり、P...
#ref(./pid.jpg,80%)
*ロボット本体の解説 [#i92926bf]
今回ロボット本体の設計を行ったのはbeingさんであり、前回の...
#ref(./catch1.JPG,80%)
#br
**駆動機構 [#l696d499]
#ref(./bottom.JPG,around,80%)
EV3 Lモーター ×2 (税込4,644円/個)
-特徴:重いものをゆっくり 動かすのが得意
-このモーターでロボットの直進、回転を行う
#br
キャスター
#clear
#br
**ライン検知機構 [#ed578a88]
#ref(./cs.JPG,around,80%)
EV3カラーセンサー
-カラーモード(7種類の色(色なしを加えると8種類)を計測)...
(今回は反射光の強さモードを使用する)
#clear
**ボール検知機構 [#q782cc83]
#ref(./us.JPG,around,80%)
EV3超音波センサー
-3cmから250cmまでを計測でき、5cmを計測すると(ボールを検...
#clear
**ボール保持機構(アーム) [#f2e91cec]
#ref(./arm.JPG,around,80%)
EV3 Mモーター ×1(税込3,780円)
-特徴:軽いものを素早く 動かすのが得意
-今回はアームの上げ下げが行えるようになっている
#clear
#br
#ref(./catch_1.JPG,around,80%)
ボール発射ガイド
-ボールの射出の精度を上げるために取り付けてある
#clear
#br
*プログラムの解説 [#j545b986]
#!/usr/bin/env python3 # python3でプログラムを...
from ev3dev.ev3 import *
import ev3dev.ev3 as ev3
import time
arm = ev3.MediumMotor('outA') #ボールを保持するアー...
mr = ev3.LargeMotor('outB') #mr : 右駆動輪
ml = ev3.LargeMotor('outC') #ml : 左駆動輪
us = ev3.UltrasonicSensor('in1') #us : 超音波センサ
gy = ev3.GyroSensor('in2') #gy : ジャイロセ...
cs = ev3.ColorSensor('in3') #カラーセンサ(反...
x = 0 #x ...
lfr = 200 #lfr ...
lfl = 80 #lfl...
###ライントレース###
def line_follow():
while cs.value() >= 50: #カラーセンサが白を...
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
t0 = time.time()
while cs.value() < 50: #カラーセンサが黒を検...
mr.run_forever(speed_sp=-lfl)
ml.run_forever(speed_sp=lfr)
#ref(./line_trace.jpg,80%)
###交差点について(何も指定しない場合、交差点を右折する...
#ライントレース時にカラーセンサが黒色を認識している時間...
#ref(./intersection.jpg,80%)
#交差点を直進
def go_straight(): ...
mr.run_forever(speed_sp=lfl) #こ...
ml.run_forever(speed_sp=-lfr)
time.sleep(1.2)
mr.run_forever(speed_sp=200)
ml.run_forever(speed_sp=210)
time.sleep(0.5)
if cs.value() >= 50: #white
while cs.value() >= 50:
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
t0 = time.time()
else: #black
mr.run_forever(speed_sp=-lfl)
ml.run_forever(speed_sp=lfr)
t0 = time.time
#交差点を左折
def turn_left():
mr.run_forever(speed_sp=lfl)
ml.run_forever(speed_sp=-lfr)
time.sleep(elapsed_time)
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
time.sleep(elapsed_time)
###ボールに対する動作###
def ball_catch(): ...
arm.run_forever(speed_sp=-60)
time.sleep(2)
arm.stop()
def shoot():
#ゴールを狙う
mr.run_forever(speed_sp=lfl)
ml.run_forever(speed_sp=-lfr)
time.sleep(1.4)
mr.stop()
ml.stop()
time.sleep(1)
#助走をするためゴールとの距離を少し開ける
mr.run_forever(speed_sp=-100)
ml.run_forever(speed_sp=-100)
time.sleep(0.6)
#ボールを設置する
arm.run_forever(speed_sp=60)
time.sleep(1)
mr.stop()
ml.stop()
time.sleep(1)
arm.stop()
mr.run_forever(speed_sp=-100)
ml.run_forever(speed_sp=-100)
time.sleep(1)
arm.run_forever(speed_sp=-60)
time.sleep(2)
arm.stop()
#助走する
mr.run_forever(speed_sp=300)
ml.run_forever(speed_sp=300)
time.sleep(1)
mr.stop()
ml.stop()
#射出する
arm.run_forever(speed_sp=300)
time.sleep(0.6)
arm.stop()
#br
shoot()の動作(「ボールを設置する」 からの動作)
#ref(./shoot.gif,80%)
###今回の流れ#############################################
# B -> R(go_straight) -> P(turn_R) -> Q(go_straight) -> ...
# -> Q(go_straight) -> R(turn_R) -> P(go_straight) -> S(...
#######################################################
Sound.play('start.wav') #音声ファイルを...
time.sleep(1)
mr.run_forever(speed_sp=220)
ml.run_forever(speed_sp=220)
time.sleep(1)
###直進時の交差点の誤検知を防ぐ措置###
if cs.value() >= 50: #カラーセンサが白を検知し...
while cs.value() >= 50: #カラーセンサが黒を...
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
t0 = time.time()
else: #カラーセンサが黒...
mr.run_forever(speed_sp=-lfl)
ml.run_forever(speed_sp=lfr)
t0 = time.time() #これによって交差点と認識...
#########################
&size(20){直進時の交差点の誤検知を防ぐ措置を取らない場合};
#ref(./start.jpg,80%)
while True:
t0 = time.time()
line_follow()
elapsed_time = time.time() - t0 #elapsed_time:...
######交差点の判定######
if elapsed_time > 1.18: #elapsed_tim...
x += 1 #交...
mr.stop()
ml.stop()
Sound.play('kousatendesu.wav') #音声ファ...
time.sleep(1.2)
########交差点での動作################
if x == 1 or x == 3 or x == 4 or x == 6: ...
go_straight()
if x == 3: #交...
while True:
###超音波センサの誤検知を防ぐ措置###
us1 = us.value() #稀に一瞬ボール...
us2 = us.value()
us3 = us.value()
###############################
line_follow()
if (us1 + us2 + us3)/3 < 85: #ボ...
break
mr.stop()
ml.stop()
ball_catch()
elif x == 8: #ゴールにたどり着いた時、...
time.sleep(1)
Sound.play('neraimasu.wav') #音声ファイル...
shoot() #...
Sound.play('unicorn.wav') #音声ファイ...
break #...
**うまくいかなかった時の対処法 [#scc0244f]
***交差点での誤検知 [#x7266592]
#ref(./notinter.jpg,80%)
対処法
#br
+ロボットが交差点と判断する時間を調整する
+駆動輪間を狭くする(回転面半径を小さくする=細かく振動し...
***急カーブでの誤検知 [#lf09dc14]
#ref(./wrong.jpg,80%)
対処法
#br
+ロボットが交差点と判断する時間を調整する
+駆動輪間を狭くする(回転面半径を小さくする=細かく振動し...
+毎回誤検知する場合、この場所も交差点とみなす(交差点のカ...
*まとめ [#ubed82b6]
今回の課題ではライトセンサ2個とPID制御によるライントレー...
終了行:
目次
#contents
*課題2 ~ライントレース~ [#ia867925]
-B地点をスタートしてQ付近の3/4円周上でピンポン玉をつかみ...
-なるべく速く正確に動くロボットになるように工夫して、交差...
-可能であればC,Dのゴールエリアライン上からシュートする
#br
今回の課題において大きなポイントはライントレースのコース...
#br
**ライントレースのアプローチ [#ec206763]
+黒いライン上をジグザグに移動する
+黒いラインと模造紙の白色の境目をジグザグに移動する(今回...
+PID制御 等
***解説 [#o08f2bad]
いずれの方法もカラーセンサによってラインを検知している
+&size(20){黒いライン上をジグザグに移動する};
#br
#ref(./1lt.jpg,80%)
#br
メリット:ラインを見失わない&br;デメリット:交差点を検知...
#br
+&size(20){黒いラインと模造紙の白色の境目をジグザグに移動...
#br
#ref(./2.jpg,80%)
#br
メリット:移動が早い、交差点を検知しやすい&br;デメリット...
#br
+&size(20){PID制御};
#br
#ref(./3.jpg,80%)
#br
メリット:直進、カーブでの動きがスムーズになる&br;デメリ...
PID制御とは“比例と積分と微分を使った制御”のことであり、P...
#ref(./pid.jpg,80%)
*ロボット本体の解説 [#i92926bf]
今回ロボット本体の設計を行ったのはbeingさんであり、前回の...
#ref(./catch1.JPG,80%)
#br
**駆動機構 [#l696d499]
#ref(./bottom.JPG,around,80%)
EV3 Lモーター ×2 (税込4,644円/個)
-特徴:重いものをゆっくり 動かすのが得意
-このモーターでロボットの直進、回転を行う
#br
キャスター
#clear
#br
**ライン検知機構 [#ed578a88]
#ref(./cs.JPG,around,80%)
EV3カラーセンサー
-カラーモード(7種類の色(色なしを加えると8種類)を計測)...
(今回は反射光の強さモードを使用する)
#clear
**ボール検知機構 [#q782cc83]
#ref(./us.JPG,around,80%)
EV3超音波センサー
-3cmから250cmまでを計測でき、5cmを計測すると(ボールを検...
#clear
**ボール保持機構(アーム) [#f2e91cec]
#ref(./arm.JPG,around,80%)
EV3 Mモーター ×1(税込3,780円)
-特徴:軽いものを素早く 動かすのが得意
-今回はアームの上げ下げが行えるようになっている
#clear
#br
#ref(./catch_1.JPG,around,80%)
ボール発射ガイド
-ボールの射出の精度を上げるために取り付けてある
#clear
#br
*プログラムの解説 [#j545b986]
#!/usr/bin/env python3 # python3でプログラムを...
from ev3dev.ev3 import *
import ev3dev.ev3 as ev3
import time
arm = ev3.MediumMotor('outA') #ボールを保持するアー...
mr = ev3.LargeMotor('outB') #mr : 右駆動輪
ml = ev3.LargeMotor('outC') #ml : 左駆動輪
us = ev3.UltrasonicSensor('in1') #us : 超音波センサ
gy = ev3.GyroSensor('in2') #gy : ジャイロセ...
cs = ev3.ColorSensor('in3') #カラーセンサ(反...
x = 0 #x ...
lfr = 200 #lfr ...
lfl = 80 #lfl...
###ライントレース###
def line_follow():
while cs.value() >= 50: #カラーセンサが白を...
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
t0 = time.time()
while cs.value() < 50: #カラーセンサが黒を検...
mr.run_forever(speed_sp=-lfl)
ml.run_forever(speed_sp=lfr)
#ref(./line_trace.jpg,80%)
###交差点について(何も指定しない場合、交差点を右折する...
#ライントレース時にカラーセンサが黒色を認識している時間...
#ref(./intersection.jpg,80%)
#交差点を直進
def go_straight(): ...
mr.run_forever(speed_sp=lfl) #こ...
ml.run_forever(speed_sp=-lfr)
time.sleep(1.2)
mr.run_forever(speed_sp=200)
ml.run_forever(speed_sp=210)
time.sleep(0.5)
if cs.value() >= 50: #white
while cs.value() >= 50:
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
t0 = time.time()
else: #black
mr.run_forever(speed_sp=-lfl)
ml.run_forever(speed_sp=lfr)
t0 = time.time
#交差点を左折
def turn_left():
mr.run_forever(speed_sp=lfl)
ml.run_forever(speed_sp=-lfr)
time.sleep(elapsed_time)
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
time.sleep(elapsed_time)
###ボールに対する動作###
def ball_catch(): ...
arm.run_forever(speed_sp=-60)
time.sleep(2)
arm.stop()
def shoot():
#ゴールを狙う
mr.run_forever(speed_sp=lfl)
ml.run_forever(speed_sp=-lfr)
time.sleep(1.4)
mr.stop()
ml.stop()
time.sleep(1)
#助走をするためゴールとの距離を少し開ける
mr.run_forever(speed_sp=-100)
ml.run_forever(speed_sp=-100)
time.sleep(0.6)
#ボールを設置する
arm.run_forever(speed_sp=60)
time.sleep(1)
mr.stop()
ml.stop()
time.sleep(1)
arm.stop()
mr.run_forever(speed_sp=-100)
ml.run_forever(speed_sp=-100)
time.sleep(1)
arm.run_forever(speed_sp=-60)
time.sleep(2)
arm.stop()
#助走する
mr.run_forever(speed_sp=300)
ml.run_forever(speed_sp=300)
time.sleep(1)
mr.stop()
ml.stop()
#射出する
arm.run_forever(speed_sp=300)
time.sleep(0.6)
arm.stop()
#br
shoot()の動作(「ボールを設置する」 からの動作)
#ref(./shoot.gif,80%)
###今回の流れ#############################################
# B -> R(go_straight) -> P(turn_R) -> Q(go_straight) -> ...
# -> Q(go_straight) -> R(turn_R) -> P(go_straight) -> S(...
#######################################################
Sound.play('start.wav') #音声ファイルを...
time.sleep(1)
mr.run_forever(speed_sp=220)
ml.run_forever(speed_sp=220)
time.sleep(1)
###直進時の交差点の誤検知を防ぐ措置###
if cs.value() >= 50: #カラーセンサが白を検知し...
while cs.value() >= 50: #カラーセンサが黒を...
mr.run_forever(speed_sp=lfr)
ml.run_forever(speed_sp=-lfl)
t0 = time.time()
else: #カラーセンサが黒...
mr.run_forever(speed_sp=-lfl)
ml.run_forever(speed_sp=lfr)
t0 = time.time() #これによって交差点と認識...
#########################
&size(20){直進時の交差点の誤検知を防ぐ措置を取らない場合};
#ref(./start.jpg,80%)
while True:
t0 = time.time()
line_follow()
elapsed_time = time.time() - t0 #elapsed_time:...
######交差点の判定######
if elapsed_time > 1.18: #elapsed_tim...
x += 1 #交...
mr.stop()
ml.stop()
Sound.play('kousatendesu.wav') #音声ファ...
time.sleep(1.2)
########交差点での動作################
if x == 1 or x == 3 or x == 4 or x == 6: ...
go_straight()
if x == 3: #交...
while True:
###超音波センサの誤検知を防ぐ措置###
us1 = us.value() #稀に一瞬ボール...
us2 = us.value()
us3 = us.value()
###############################
line_follow()
if (us1 + us2 + us3)/3 < 85: #ボ...
break
mr.stop()
ml.stop()
ball_catch()
elif x == 8: #ゴールにたどり着いた時、...
time.sleep(1)
Sound.play('neraimasu.wav') #音声ファイル...
shoot() #...
Sound.play('unicorn.wav') #音声ファイ...
break #...
**うまくいかなかった時の対処法 [#scc0244f]
***交差点での誤検知 [#x7266592]
#ref(./notinter.jpg,80%)
対処法
#br
+ロボットが交差点と判断する時間を調整する
+駆動輪間を狭くする(回転面半径を小さくする=細かく振動し...
***急カーブでの誤検知 [#lf09dc14]
#ref(./wrong.jpg,80%)
対処法
#br
+ロボットが交差点と判断する時間を調整する
+駆動輪間を狭くする(回転面半径を小さくする=細かく振動し...
+毎回誤検知する場合、この場所も交差点とみなす(交差点のカ...
*まとめ [#ubed82b6]
今回の課題ではライトセンサ2個とPID制御によるライントレー...
ページ名: