2017a/Member/nami/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
#contents
*課題3 空き缶収集&積み上げロボット [#m61c9551]
空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる
#ref(2017a/Member/nami/Mission3/kadai3.png,100%,課題3)
*ロボットについて [#ka68e832]
#ref(2017a/Member/nami/Mission3/ev3_1.JPG,100%,ev31)
アームは平行四辺形にしてアームを水平にできるようにした。...
#ref(2017a/Member/nami/Mission3/ev3_2.JPG,100%,ev32)
#ref(2017a/Member/nami/Mission3/ev3_3.JPG,100%,ev33)
#ref(2017a/Member/nami/Mission3/ev3_4.JPG,100%,ev34)
*プログラミングについて [#de18aaa6]
**プログラム [#v624c815]
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import ev3dev.ev3 as ev3
import time
mR=ev3.LargeMotor('outA') #右モーター
mL=ev3.LargeMotor('outB') #左モーター
mT=ev3.LargeMotor('outC') #アーム
mA=ev3.LargeMotor('outD') #ハンド
us=ev3.UltrasonicSensor('in1') #超音波センサー
t1=time.time() #缶の探索の片方への旋回時間
t2=time.time() #探索開始から感知するまでの時間
minimum=10000 #缶との距離の最小値
def search():#seach for cans while spinning
global t1
global t2
global minimum
while time.time()-t1<5:#search around
mR.run_forever(duty_cycle_sp=50,speed_sp=-10)
mL.run_forever(duty_cycle_sp=50,speed_sp=10)
if minimum>=us.value():#not minimum
minimum=us.value()
if minimum<us.value():#minimum
t2=time.time()
while time.time()-t1>=5 and time.time()-t1<=5.5+t2 and...
mR.run_forever(duty_cycle_sp=50,speed_sp=10)
mL.run_forever(duty_cycle_sp=50,speed_sp=-10)
一定の時間缶との距離を旋回しながら測定し、距離が小さくな...
反対方向に旋回を始め、最小値より小さい値を感知するか、t2...
def catch():#catch the can
while us.value()>40:
mR.run_forever(duty_cycle_sp=50,speed_sp=-100
mL.run_forever(duty_cycle_sp=50,speed_sp=-100)
else :
mR.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
time.sleep(1.5)
mT.run_timed(time_sp=1000,duty_cycle_sp=40,speed_s...
time.sleep(1)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_s...
time.sleep(2)
mT.run_timed(time_sp=2000,duty_cycle_sp=40,speed_s...
searchで缶の真正面を向いているため、まっすぐ走って一定の...
def build():#pile the cans
while us.value()>40:
mR.run_forever(duty_cycle_sp=50,speed_sp=-100)
mL.run_forever(duty_cycle_sp=50,speed_sp=-100)
else :
mR.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
time.sleep(1.5)
mT.run_timed(time_sp=650,duty_cycle_sp=70,speed_sp...
time.sleep(1.5)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_s...
time.sleep(1.5)
mR.run_timed(time_sp=1200,duty_cycle_sp=40,speed_s...
mL.run_timed(time_sp=1200,duty_cycle_sp=40,speed_s...
time.sleep(1.5)
mT.run_timed(time_sp=2000,duty_cycle_sp=70,speed_s...
time.sleep(2)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_s...
time.sleep(2)
mT.run_timed(time_sp=710,duty_cycle_sp=40,speed_sp...
はじめはcatchと同じ。缶を次の缶の上に置き、、一度放して位...
def end():#get out of the goal
mR.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=200)
mL.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=200)
すべての動作の後に、ゴールから出る。
for loop in [0]:
search()
mR.stop()
mL.stop()
time.sleep(2)
catch()
time.sleep(2)
一個目はcatchなのでループを変えておく。
for loop in [0]:
t1=time.time()
search()
mR.stop()
mL.stop()
time.sleep(2)
build()
time.sleep(2)
二個目以降のループ。
mR.run_timed(time_sp=3000,duty_cycle_sp=50,speed_sp=-55)
mL.run_timed(time_sp=3000,duty_cycle_sp=50,speed_sp=-120)
time.sleep(3)
mR.run_timed(time_sp=1500,duty_cycle_sp=50,speed_sp=-200)
mL.run_timed(time_sp=1500,duty_cycle_sp=50,speed_sp=-200)
time.sleep(3)
mR.stop()
mL.stop()
位置の調節
mA.run_timed(time_sp=1000,duty_cycle_sp=30,speed_sp=-40)
time.sleep(3)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_sp=-110...
end()
time.sleep(2)
ゆっくり缶を放す。その後ゴールから出る。
mT.reset()
mTのホールドを解く
*結果 [#cf7e96a8]
0点(空き缶が詰めるが枠に入らなかったり、枠に入るが空き...
*反省点 [#yeac5d3f]
やはり今回の一番の問題は時間がなかったという事だと思う4...
終了行:
[[2017a/Member]]
#contents
*課題3 空き缶収集&積み上げロボット [#m61c9551]
空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる
#ref(2017a/Member/nami/Mission3/kadai3.png,100%,課題3)
*ロボットについて [#ka68e832]
#ref(2017a/Member/nami/Mission3/ev3_1.JPG,100%,ev31)
アームは平行四辺形にしてアームを水平にできるようにした。...
#ref(2017a/Member/nami/Mission3/ev3_2.JPG,100%,ev32)
#ref(2017a/Member/nami/Mission3/ev3_3.JPG,100%,ev33)
#ref(2017a/Member/nami/Mission3/ev3_4.JPG,100%,ev34)
*プログラミングについて [#de18aaa6]
**プログラム [#v624c815]
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import ev3dev.ev3 as ev3
import time
mR=ev3.LargeMotor('outA') #右モーター
mL=ev3.LargeMotor('outB') #左モーター
mT=ev3.LargeMotor('outC') #アーム
mA=ev3.LargeMotor('outD') #ハンド
us=ev3.UltrasonicSensor('in1') #超音波センサー
t1=time.time() #缶の探索の片方への旋回時間
t2=time.time() #探索開始から感知するまでの時間
minimum=10000 #缶との距離の最小値
def search():#seach for cans while spinning
global t1
global t2
global minimum
while time.time()-t1<5:#search around
mR.run_forever(duty_cycle_sp=50,speed_sp=-10)
mL.run_forever(duty_cycle_sp=50,speed_sp=10)
if minimum>=us.value():#not minimum
minimum=us.value()
if minimum<us.value():#minimum
t2=time.time()
while time.time()-t1>=5 and time.time()-t1<=5.5+t2 and...
mR.run_forever(duty_cycle_sp=50,speed_sp=10)
mL.run_forever(duty_cycle_sp=50,speed_sp=-10)
一定の時間缶との距離を旋回しながら測定し、距離が小さくな...
反対方向に旋回を始め、最小値より小さい値を感知するか、t2...
def catch():#catch the can
while us.value()>40:
mR.run_forever(duty_cycle_sp=50,speed_sp=-100
mL.run_forever(duty_cycle_sp=50,speed_sp=-100)
else :
mR.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
time.sleep(1.5)
mT.run_timed(time_sp=1000,duty_cycle_sp=40,speed_s...
time.sleep(1)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_s...
time.sleep(2)
mT.run_timed(time_sp=2000,duty_cycle_sp=40,speed_s...
searchで缶の真正面を向いているため、まっすぐ走って一定の...
def build():#pile the cans
while us.value()>40:
mR.run_forever(duty_cycle_sp=50,speed_sp=-100)
mL.run_forever(duty_cycle_sp=50,speed_sp=-100)
else :
mR.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp...
time.sleep(1.5)
mT.run_timed(time_sp=650,duty_cycle_sp=70,speed_sp...
time.sleep(1.5)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_s...
time.sleep(1.5)
mR.run_timed(time_sp=1200,duty_cycle_sp=40,speed_s...
mL.run_timed(time_sp=1200,duty_cycle_sp=40,speed_s...
time.sleep(1.5)
mT.run_timed(time_sp=2000,duty_cycle_sp=70,speed_s...
time.sleep(2)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_s...
time.sleep(2)
mT.run_timed(time_sp=710,duty_cycle_sp=40,speed_sp...
はじめはcatchと同じ。缶を次の缶の上に置き、、一度放して位...
def end():#get out of the goal
mR.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=200)
mL.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=200)
すべての動作の後に、ゴールから出る。
for loop in [0]:
search()
mR.stop()
mL.stop()
time.sleep(2)
catch()
time.sleep(2)
一個目はcatchなのでループを変えておく。
for loop in [0]:
t1=time.time()
search()
mR.stop()
mL.stop()
time.sleep(2)
build()
time.sleep(2)
二個目以降のループ。
mR.run_timed(time_sp=3000,duty_cycle_sp=50,speed_sp=-55)
mL.run_timed(time_sp=3000,duty_cycle_sp=50,speed_sp=-120)
time.sleep(3)
mR.run_timed(time_sp=1500,duty_cycle_sp=50,speed_sp=-200)
mL.run_timed(time_sp=1500,duty_cycle_sp=50,speed_sp=-200)
time.sleep(3)
mR.stop()
mL.stop()
位置の調節
mA.run_timed(time_sp=1000,duty_cycle_sp=30,speed_sp=-40)
time.sleep(3)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_sp=-110...
end()
time.sleep(2)
ゆっくり缶を放す。その後ゴールから出る。
mT.reset()
mTのホールドを解く
*結果 [#cf7e96a8]
0点(空き缶が詰めるが枠に入らなかったり、枠に入るが空き...
*反省点 [#yeac5d3f]
やはり今回の一番の問題は時間がなかったという事だと思う4...
ページ名: