2017a/Member/oshimin/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*課題3 [#ref7fa70]
#contents
**課題内容 [#b449e8b6]
[[課題3:http://yakushi.shinshu-u.ac.jp/robotics/?2017a%2...
**ロボット [#pa4bfb32]
#ref(DSC_0554.JPG)
EV3班は部品の少なさとmqttの不調でロボットを2つにするこ...
#ref(DSC_0555.JPG)
写真のアームを曲げ伸ばしすることで缶を上げ下げする。そ...
#ref(DSC_0556.JPG)
#ref(DSC_0557.JPG)
アームは数段積めるように縦に長くしている。
**プログラム [#w1c633b1]
#!/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 an...
mR.run_forever(duty_cycle_sp=50,speed_sp=10)
mL.run_forever(duty_cycle_sp=50,speed_sp=-10)
一定の時間缶との距離を旋回しながら測定し、距離が小さく...
反対方向に旋回を始め、最小値より小さい値を感知するか、t...
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_s...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_s...
time.sleep(1.5)
mT.run_timed(time_sp=1000,duty_cycle_sp=40,speed_...
time.sleep(1)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_...
time.sleep(2)
mT.run_timed(time_sp=2000,duty_cycle_sp=40,speed_...
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_s...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_s...
time.sleep(1.5)
mT.run_timed(time_sp=650,duty_cycle_sp=70,speed_s...
time.sleep(1.5)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_...
time.sleep(1.5)
mR.run_timed(time_sp=1200,duty_cycle_sp=40,speed_...
mL.run_timed(time_sp=1200,duty_cycle_sp=40,speed_...
time.sleep(1.5)
mT.run_timed(time_sp=2000,duty_cycle_sp=70,speed_...
time.sleep(2)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_...
time.sleep(2)
mT.run_timed(time_sp=710,duty_cycle_sp=40,speed_s...
はじめはcatchと同じ。缶を次の缶の上に置き、、一度放して...
def end():#get out of the goal
mR.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=2...
mL.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=2...
すべての動作の後に、ゴールから出る。
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のホールドを解く
**結果 [#ecc2fe0c]
一回目:0点 2段目の空き缶を積み上げるところまではいった...
二回目:0点 一度2段持ち上げるところまでいったものの、下...
**反省 [#k180a75a]
ロボット面では缶をつかむアームの部分が傾いていたため、...
#ref(DSC_0556_2.jpg)
プログラム面では缶を探して積むのはサブルーチンで全部対...
**考察 [#nf861eb6]
ロボットのアームの傾きを直せていれば安定して缶を積めて...
今回は私達の班はライントレースをせずにrun_timedで動作を...
for文を用いたため、ループの回数で一個目とそれ以降をif分...
終了行:
*課題3 [#ref7fa70]
#contents
**課題内容 [#b449e8b6]
[[課題3:http://yakushi.shinshu-u.ac.jp/robotics/?2017a%2...
**ロボット [#pa4bfb32]
#ref(DSC_0554.JPG)
EV3班は部品の少なさとmqttの不調でロボットを2つにするこ...
#ref(DSC_0555.JPG)
写真のアームを曲げ伸ばしすることで缶を上げ下げする。そ...
#ref(DSC_0556.JPG)
#ref(DSC_0557.JPG)
アームは数段積めるように縦に長くしている。
**プログラム [#w1c633b1]
#!/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 an...
mR.run_forever(duty_cycle_sp=50,speed_sp=10)
mL.run_forever(duty_cycle_sp=50,speed_sp=-10)
一定の時間缶との距離を旋回しながら測定し、距離が小さく...
反対方向に旋回を始め、最小値より小さい値を感知するか、t...
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_s...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_s...
time.sleep(1.5)
mT.run_timed(time_sp=1000,duty_cycle_sp=40,speed_...
time.sleep(1)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_...
time.sleep(2)
mT.run_timed(time_sp=2000,duty_cycle_sp=40,speed_...
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_s...
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_s...
time.sleep(1.5)
mT.run_timed(time_sp=650,duty_cycle_sp=70,speed_s...
time.sleep(1.5)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_...
time.sleep(1.5)
mR.run_timed(time_sp=1200,duty_cycle_sp=40,speed_...
mL.run_timed(time_sp=1200,duty_cycle_sp=40,speed_...
time.sleep(1.5)
mT.run_timed(time_sp=2000,duty_cycle_sp=70,speed_...
time.sleep(2)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_...
time.sleep(2)
mT.run_timed(time_sp=710,duty_cycle_sp=40,speed_s...
はじめはcatchと同じ。缶を次の缶の上に置き、、一度放して...
def end():#get out of the goal
mR.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=2...
mL.run_timed(time_sp=1000,duty_cycle_sp=50,speed_sp=2...
すべての動作の後に、ゴールから出る。
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のホールドを解く
**結果 [#ecc2fe0c]
一回目:0点 2段目の空き缶を積み上げるところまではいった...
二回目:0点 一度2段持ち上げるところまでいったものの、下...
**反省 [#k180a75a]
ロボット面では缶をつかむアームの部分が傾いていたため、...
#ref(DSC_0556_2.jpg)
プログラム面では缶を探して積むのはサブルーチンで全部対...
**考察 [#nf861eb6]
ロボットのアームの傾きを直せていれば安定して缶を積めて...
今回は私達の班はライントレースをせずにrun_timedで動作を...
for文を用いたため、ループの回数で一個目とそれ以降をif分...
ページ名: