2016a/Member/kiku/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
#contents
*内容 [#n9a47e72]
今回の課題はライントレースをすることである。~
ルート内には複数の交差点があり、交差点を判別すると音を鳴...
今回自分がたどるルートは地点B→地点R→右折→地点Q→直進→地点Q...
#ref(line01.jpg)
*ロボットについて [#eef3a4a8]
今回使用したロボットはとてもシンプルなロボットに光センサ...
#ref(robot2-1-1.jpg)
ロボットの中心がラインの中心に重なるように光センサーの設...
#ref(robot2-2-1.jpg)
光センターはラインを判別しやすいように、できる限り地面に...
*プログラム [#o746260a]
#!/usr/bin/python
# -*- coding: utf-8 -*-
import ev3dev.ev3 as ev3
**ロボットを動かすための設定をする。 [#t7a09902]
MR = ev3.LargeMotor('outA') #右側のモーターを出力ポート...
ML = ev3.LargeMotor('outB') #左側のモーターを出力ポート...
cs = ev3.ColorSensor('in1') #光センサーのデータを入力ポ...
S = ev3.Sound()
**定義する [#pc425198]
ロボットを停止させるプログラムを st() のみで表せるよう...
def st():
MR.stop() #右側のモーターを停止
ML.stop() #左側のモーターを停止
***ラインをトレースするために [#ueb8ef18]
今回ロボットがラインをトレースするために作成したプログラ...
ロボットには黒のラインの左端の境界部分をトレースするプロ...
仕組みは事前に光センサーでライン上の黒い部分・境界線上の...
計測した明るさを用いてロボットは自分の位置を把握し、黒い...
白い部分にいると判断したら進路を少し右にとり進行方向を調...
また交差点を判別するためにロボットは自分が何秒以上黒いラ...
具体的にはロボットは動き始めたら時間の計測を始め、~
ロボットは自分が白い部分、もしくは境界線上にいると判断し...
黒いライン上にいると判断したときのみ計測を継続し、~
計測した時間が一定時間を超えると停止するようにプログラム...
ライントレースのプログラムは複雑なため、複数回書くと間違...
line(a) で表すための設定をする。
def line(a):
t0 = time.time() #動き始めてからの時間を計測する
while time.time() - t0 < a: #計測を始めてからの時...
if cs.value() > 30: #センサーが感知し...
MR.run_forever(duty_cycle_sp=-30)
ML.run_forever(duty_cycle_sp=20)...
t0 = time.time() 計測をリセット...
elif cs.value() >= 10: #光センサーが感知...
MR.run_forever(duty_cycle_sp=35)
ML.run_forever(duty_cycle_sp=35)...
t0 = time.time() #計測をリセッ...
else:
MR.run_forever(duty_cycle_sp=20)
ML.run_forever(duty_cycle_sp=-30)
ロボットが前後左右に動くプログラムを run(r,l,t) で表す...
def run(r,l,t):
MR.run_forever(duty_cycle_sp=r) #右側モーター...
ML.run_forever(duty_cycle_sp=l) #左側モーター...
time.sleep(t) #t秒間動き続ける
MR.stop() #右側モーターを停止
ML.stop() #左側モーターを停止
ロボットが交差点を右折するためのプログラムを R(b) で表...
def R(b):
MR.run_forever(duty_cycle_sp=-30) #右側モーター...
ML.run_forever(duty_cycle_sp=20) #左側モーター...
time.sleep(1) #1秒間動き続ける
MR.stop() #右側モーターを停止
ML.stop() #左側モーターを停止
MR.run_forever(duty_cycle_sp=30) #右側モーター...
ML.run_forever(duty_cycle_sp=30) #左側モーター...
time.sleep(b) #b秒間動き続ける
MR.stop() #右側モーターを停止
ML.stop() #左側モーターを停止
**実際に走行するためのプログラム [#fda4688e]
line(0.22) #地点Rまでライントレース
S.beep() #交差点を判別しビープ音をならす
R(0.75) #右に旋回
line(0.245) #地点Qまでライントレース
S.beep() #交差点を判別しビープ音をならす
run(-30,20,0.22)
run(50,50,0.5) #直進する
line(0.22) #地点Qまでライントレース
S.beep() #交差点を判別しビープ音を鳴らす
run(-30,20,0.22)
run(50,50,0.3) #直進する
line(0.22) #地点Pまでライントレース
S.beep() #交差点を判別しビープ音をならす
R(0.75) #右に旋回する
line(0.22) #地点Sまでライントレース
S.beep() #交差点を判別しビープ音をならす
R(0.75) #右に旋回する
line(0.22) #地点Cまでライントレース
S.beep() #地点Cの枠を認識しビープ音を鳴らす
run(-30,20,0.22)
run(50,50,0.3) #直進する
run(100,100,1)
st() #停止
*結果・考察 [#vd19bc09]
今回ルートをトレースするのにかかった時間は50.05秒です。~
はじめプログラム内の定義を行う部分でスペースの空け方を間...
今回の課題で一番難しかった部分は交差点を判別し、右に旋回...
はじめは全く交差点を判別できませんでした。~
そこで計測する時間を細かく設定することにより交差点を判別...
また、急カーブの部分でもロボットが交差点と誤認することが...
また右に旋回するときもロボットがラインを判別できず、その...
終了行:
[[2016a/Member]]
#contents
*内容 [#n9a47e72]
今回の課題はライントレースをすることである。~
ルート内には複数の交差点があり、交差点を判別すると音を鳴...
今回自分がたどるルートは地点B→地点R→右折→地点Q→直進→地点Q...
#ref(line01.jpg)
*ロボットについて [#eef3a4a8]
今回使用したロボットはとてもシンプルなロボットに光センサ...
#ref(robot2-1-1.jpg)
ロボットの中心がラインの中心に重なるように光センサーの設...
#ref(robot2-2-1.jpg)
光センターはラインを判別しやすいように、できる限り地面に...
*プログラム [#o746260a]
#!/usr/bin/python
# -*- coding: utf-8 -*-
import ev3dev.ev3 as ev3
**ロボットを動かすための設定をする。 [#t7a09902]
MR = ev3.LargeMotor('outA') #右側のモーターを出力ポート...
ML = ev3.LargeMotor('outB') #左側のモーターを出力ポート...
cs = ev3.ColorSensor('in1') #光センサーのデータを入力ポ...
S = ev3.Sound()
**定義する [#pc425198]
ロボットを停止させるプログラムを st() のみで表せるよう...
def st():
MR.stop() #右側のモーターを停止
ML.stop() #左側のモーターを停止
***ラインをトレースするために [#ueb8ef18]
今回ロボットがラインをトレースするために作成したプログラ...
ロボットには黒のラインの左端の境界部分をトレースするプロ...
仕組みは事前に光センサーでライン上の黒い部分・境界線上の...
計測した明るさを用いてロボットは自分の位置を把握し、黒い...
白い部分にいると判断したら進路を少し右にとり進行方向を調...
また交差点を判別するためにロボットは自分が何秒以上黒いラ...
具体的にはロボットは動き始めたら時間の計測を始め、~
ロボットは自分が白い部分、もしくは境界線上にいると判断し...
黒いライン上にいると判断したときのみ計測を継続し、~
計測した時間が一定時間を超えると停止するようにプログラム...
ライントレースのプログラムは複雑なため、複数回書くと間違...
line(a) で表すための設定をする。
def line(a):
t0 = time.time() #動き始めてからの時間を計測する
while time.time() - t0 < a: #計測を始めてからの時...
if cs.value() > 30: #センサーが感知し...
MR.run_forever(duty_cycle_sp=-30)
ML.run_forever(duty_cycle_sp=20)...
t0 = time.time() 計測をリセット...
elif cs.value() >= 10: #光センサーが感知...
MR.run_forever(duty_cycle_sp=35)
ML.run_forever(duty_cycle_sp=35)...
t0 = time.time() #計測をリセッ...
else:
MR.run_forever(duty_cycle_sp=20)
ML.run_forever(duty_cycle_sp=-30)
ロボットが前後左右に動くプログラムを run(r,l,t) で表す...
def run(r,l,t):
MR.run_forever(duty_cycle_sp=r) #右側モーター...
ML.run_forever(duty_cycle_sp=l) #左側モーター...
time.sleep(t) #t秒間動き続ける
MR.stop() #右側モーターを停止
ML.stop() #左側モーターを停止
ロボットが交差点を右折するためのプログラムを R(b) で表...
def R(b):
MR.run_forever(duty_cycle_sp=-30) #右側モーター...
ML.run_forever(duty_cycle_sp=20) #左側モーター...
time.sleep(1) #1秒間動き続ける
MR.stop() #右側モーターを停止
ML.stop() #左側モーターを停止
MR.run_forever(duty_cycle_sp=30) #右側モーター...
ML.run_forever(duty_cycle_sp=30) #左側モーター...
time.sleep(b) #b秒間動き続ける
MR.stop() #右側モーターを停止
ML.stop() #左側モーターを停止
**実際に走行するためのプログラム [#fda4688e]
line(0.22) #地点Rまでライントレース
S.beep() #交差点を判別しビープ音をならす
R(0.75) #右に旋回
line(0.245) #地点Qまでライントレース
S.beep() #交差点を判別しビープ音をならす
run(-30,20,0.22)
run(50,50,0.5) #直進する
line(0.22) #地点Qまでライントレース
S.beep() #交差点を判別しビープ音を鳴らす
run(-30,20,0.22)
run(50,50,0.3) #直進する
line(0.22) #地点Pまでライントレース
S.beep() #交差点を判別しビープ音をならす
R(0.75) #右に旋回する
line(0.22) #地点Sまでライントレース
S.beep() #交差点を判別しビープ音をならす
R(0.75) #右に旋回する
line(0.22) #地点Cまでライントレース
S.beep() #地点Cの枠を認識しビープ音を鳴らす
run(-30,20,0.22)
run(50,50,0.3) #直進する
run(100,100,1)
st() #停止
*結果・考察 [#vd19bc09]
今回ルートをトレースするのにかかった時間は50.05秒です。~
はじめプログラム内の定義を行う部分でスペースの空け方を間...
今回の課題で一番難しかった部分は交差点を判別し、右に旋回...
はじめは全く交差点を判別できませんでした。~
そこで計測する時間を細かく設定することにより交差点を判別...
また、急カーブの部分でもロボットが交差点と誤認することが...
また右に旋回するときもロボットがラインを判別できず、その...
ページ名: