2018a/Member/yokouchi/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*課題2〜ライントレース・空き缶運び〜 [#k849e100]
#contents
**課題内容 [#d5344306]
次のコースの黒い線に沿って動き、350mlの空き缶(黄色で表示)...
**コース紹介 [#sabd6b8d]
今回、自分が挑戦するコースは図のようである。
#ref(2018a/Member/yokouchi/Mission2/Inked2018a-mission2_L...
もう少し詳しく説明を加える。
+Aをスタート
+Bを右折
+Jで一時停止の後、Yの空き缶をキャッチしてJに戻る
+JからKに向かい、Kを直進
+Lを直進
+Iを左折
+Hで一時停止の後、左折
+Gで一時停止の後、右折
+Fで一時停止の後、右折
+Eを直進
+Dで一時停止の後、空き缶をXに置いてDに戻り、Cに向かう
+Cで一時停止の後、直進
+Bを直進
+Aで停止
※なお一時停止の指定がある場所は、1秒間停止
**今回使用するロボット [#e3215a92]
今回は、ライントレースが主な動きになってくるため、あまり...
この写真は缶をつかむ部分である。MediumMotorを用いて缶を確...
#ref(2018a/Member/yokouchi/Mission2/WIN_20180719_23_54_54...
光センサーの位置はアームの都合上、中央に取り付けることは...
そのため、左側にあることを意識したプログラミングをしなけ...
超音波センサーは、写真の通りアームの中央に取り付けた。超...
#ref(2018a/Member/yokouchi/Mission2/WIN_20180719_23_55_01...
**プログラムの概要 [#meb15068]
***プログラムの導入 [#r727f9d8]
今回、Python言語を用いてプログラミングを行った。
以下は導入部分である。
#!/usr/bin/env python3
from ev3dev.ev3 import *
import time
from time import sleep
ml = LargeMotor('outA') -左駆動輪をmlとおく
mr = LargeMotor('outB') -右駆動輪をmrとおく
arm = MediumMotor('outC') -缶を掴む腕の部分をarmとおく
cs = ColorSensor('in1') -カラーセンサーをcsとおく
us = UltrasonicSensor('in2') -超音波センサーをusとおく
***定義 [#x09aae04]
-まず初めにアームの開閉の動作の定義である。beforeを開く動...
def before_catch(): -缶を掴む前、アームを開く
arm.run_forever(speed_sp=-60)
time.sleep(2)
arm.stop()
def after_catch(): -缶を掴むため、アームを閉じる
arm.run_forever(speed_sp=60)
time.sleep(1.8)
arm.stop()
-続いて、主となるライントレースの部分
def line_trace():
t = time.time()
while time.time() - t < 0.5:
if cs.value() > 50: -白を検知した時...
ml.run_forever(speed_sp=-40)
mr.run_forever(speed_sp=80)
t = time.time()
else: -黒を検知した時...
ml.run_forever(speed_sp=80)
mr.run_forever(speed_sp=-40)
def curve():
t = time.time()
while time.time() - t < 0.5:
if cs.value() > 50:
ml.run_forever(speed_sp=-20)
mr.run_forever(speed_sp=40)
t = time.time()
else:
ml.run_forever(speed_sp=40)
mr.run_forever(speed_sp=-20)
上のものは、直線用であり、下のものは、曲線用である。
スピードを遅くしたことにより、急なカーブにも対応できた。
-次に交差点で必要な曲がるときの動作
def turn_left(): -左に曲がる
motor_init()
ml.run_forever(speed_sp=-40)
mr.run_forever(speed_sp=80)
sleep(2)
ml.stop()
mr.stop()
def turn_right(): -右に曲がる
motor_init()
ml.run_forever(speed_sp=80)
mr.run_forever(speed_sp=-40)
sleep(2)
ml.stop()
mr.stop()
-缶を置くとき
def can_put(): -缶を置く動作。まず、奧場所に近づき、先...
ml.run_forever(speed_sp=40)
mr.run_forever(speed_sp=40)
sleep(1.2)
before_catch()
ml.run_forever(speed_sp=-40)
mr.run_forever(speed_sp=-40)
sleep(2)
ml.stop()
mr.stop()
**交差点部分 [#z0dcfb1f]
def cross():
t = time.time()
while time.time() - t <= 0.3: -検知時間が0.3秒より...
line_trace()
if time.time() - t > 0.3: -検知時間が0.3秒より...
ml.stop()
mr.stop()
sleep(1)
交差点の検知はどうやるのかかなり悩んだ。
しかし、交差点の時には、ジグザグで検知している際、真ん中...
そして、止まらせることで次の動作に移るようにした。
**反省・感想 [#pe205c04]
今回は前回と違い、プログラミングが主なウエイトを占める課...
交差点の検知の仕方などの工夫する部分など、いかに明瞭でわ...
また、時間が足りなかったため、関数を定義するところまでし...
しかし、まだ自分として、理解できていない部分、基本が身に...
一番の反省は、プログラミングを甘く見ていたことである。す...
次の課題は4人組のものなので今回の反省を踏まえつつ、パート...
終了行:
*課題2〜ライントレース・空き缶運び〜 [#k849e100]
#contents
**課題内容 [#d5344306]
次のコースの黒い線に沿って動き、350mlの空き缶(黄色で表示)...
**コース紹介 [#sabd6b8d]
今回、自分が挑戦するコースは図のようである。
#ref(2018a/Member/yokouchi/Mission2/Inked2018a-mission2_L...
もう少し詳しく説明を加える。
+Aをスタート
+Bを右折
+Jで一時停止の後、Yの空き缶をキャッチしてJに戻る
+JからKに向かい、Kを直進
+Lを直進
+Iを左折
+Hで一時停止の後、左折
+Gで一時停止の後、右折
+Fで一時停止の後、右折
+Eを直進
+Dで一時停止の後、空き缶をXに置いてDに戻り、Cに向かう
+Cで一時停止の後、直進
+Bを直進
+Aで停止
※なお一時停止の指定がある場所は、1秒間停止
**今回使用するロボット [#e3215a92]
今回は、ライントレースが主な動きになってくるため、あまり...
この写真は缶をつかむ部分である。MediumMotorを用いて缶を確...
#ref(2018a/Member/yokouchi/Mission2/WIN_20180719_23_54_54...
光センサーの位置はアームの都合上、中央に取り付けることは...
そのため、左側にあることを意識したプログラミングをしなけ...
超音波センサーは、写真の通りアームの中央に取り付けた。超...
#ref(2018a/Member/yokouchi/Mission2/WIN_20180719_23_55_01...
**プログラムの概要 [#meb15068]
***プログラムの導入 [#r727f9d8]
今回、Python言語を用いてプログラミングを行った。
以下は導入部分である。
#!/usr/bin/env python3
from ev3dev.ev3 import *
import time
from time import sleep
ml = LargeMotor('outA') -左駆動輪をmlとおく
mr = LargeMotor('outB') -右駆動輪をmrとおく
arm = MediumMotor('outC') -缶を掴む腕の部分をarmとおく
cs = ColorSensor('in1') -カラーセンサーをcsとおく
us = UltrasonicSensor('in2') -超音波センサーをusとおく
***定義 [#x09aae04]
-まず初めにアームの開閉の動作の定義である。beforeを開く動...
def before_catch(): -缶を掴む前、アームを開く
arm.run_forever(speed_sp=-60)
time.sleep(2)
arm.stop()
def after_catch(): -缶を掴むため、アームを閉じる
arm.run_forever(speed_sp=60)
time.sleep(1.8)
arm.stop()
-続いて、主となるライントレースの部分
def line_trace():
t = time.time()
while time.time() - t < 0.5:
if cs.value() > 50: -白を検知した時...
ml.run_forever(speed_sp=-40)
mr.run_forever(speed_sp=80)
t = time.time()
else: -黒を検知した時...
ml.run_forever(speed_sp=80)
mr.run_forever(speed_sp=-40)
def curve():
t = time.time()
while time.time() - t < 0.5:
if cs.value() > 50:
ml.run_forever(speed_sp=-20)
mr.run_forever(speed_sp=40)
t = time.time()
else:
ml.run_forever(speed_sp=40)
mr.run_forever(speed_sp=-20)
上のものは、直線用であり、下のものは、曲線用である。
スピードを遅くしたことにより、急なカーブにも対応できた。
-次に交差点で必要な曲がるときの動作
def turn_left(): -左に曲がる
motor_init()
ml.run_forever(speed_sp=-40)
mr.run_forever(speed_sp=80)
sleep(2)
ml.stop()
mr.stop()
def turn_right(): -右に曲がる
motor_init()
ml.run_forever(speed_sp=80)
mr.run_forever(speed_sp=-40)
sleep(2)
ml.stop()
mr.stop()
-缶を置くとき
def can_put(): -缶を置く動作。まず、奧場所に近づき、先...
ml.run_forever(speed_sp=40)
mr.run_forever(speed_sp=40)
sleep(1.2)
before_catch()
ml.run_forever(speed_sp=-40)
mr.run_forever(speed_sp=-40)
sleep(2)
ml.stop()
mr.stop()
**交差点部分 [#z0dcfb1f]
def cross():
t = time.time()
while time.time() - t <= 0.3: -検知時間が0.3秒より...
line_trace()
if time.time() - t > 0.3: -検知時間が0.3秒より...
ml.stop()
mr.stop()
sleep(1)
交差点の検知はどうやるのかかなり悩んだ。
しかし、交差点の時には、ジグザグで検知している際、真ん中...
そして、止まらせることで次の動作に移るようにした。
**反省・感想 [#pe205c04]
今回は前回と違い、プログラミングが主なウエイトを占める課...
交差点の検知の仕方などの工夫する部分など、いかに明瞭でわ...
また、時間が足りなかったため、関数を定義するところまでし...
しかし、まだ自分として、理解できていない部分、基本が身に...
一番の反省は、プログラミングを甘く見ていたことである。す...
次の課題は4人組のものなので今回の反省を踏まえつつ、パート...
ページ名: