- 追加された行はこの色です。
- 削除された行はこの色です。
*課題3 17T2037H 押見 洋土 [#ref7fa70]
**課題3 [#b449e8b6]
[[課題3:http://yakushi.shinshu-u.ac.jp/robotics/?2017a%2FMission3]]
**ロボット [#pa4bfb32]
**プログラム [#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')
ts=ev3.TouchSensor('in2')
t1=time.time()
t2=time.time()
t3=time.time()
t4=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 us.value()>minimum:#research
mR.run_forever(duty_cycle_sp=50,speed_sp=10)
mL.run_forever(duty_cycle_sp=50,speed_sp=-10)
def catch():#catch the can
global t3
global t4
t3=time.time()
while us.value()>40:
mR.run_forever(duty_cycle_sp=50,speed_sp=-100)
mL.run_forever(duty_cycle_sp=50,speed_sp=-100)
t4=time.time()
else :
mR.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp=100)
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp=100)
time.sleep(1.5)
mT.run_timed(time_sp=1000,duty_cycle_sp=40,speed_sp=100,stop_action='brake')
time.sleep(1)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_sp=100,stop_action='hold')
time.sleep(2)
mT.run_timed(time_sp=2000,duty_cycle_sp=40,speed_sp=-100,stop_action='hold')
def build():#pile the cans
global t3
global t4
t3=time.time()
while us.value()>40:
mR.run_forever(duty_cycle_sp=50,speed_sp=-100)
mL.run_forever(duty_cycle_sp=50,speed_sp=-100)
t4=time.time()-t3
else :
mR.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp=100)
mL.run_timed(time_sp=800,duty_cycle_sp=40,speed_sp=100)
time.sleep(1.5)
mT.run_timed(time_sp=650,duty_cycle_sp=70,speed_sp=40,stop_action='hold')
time.sleep(1.5)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_sp=-100,stop_action='hold')
time.sleep(1.5)
mR.run_timed(time_sp=1200,duty_cycle_sp=40,speed_sp=100)
mL.run_timed(time_sp=1200,duty_cycle_sp=40,speed_sp=100)
time.sleep(1.5)
mT.run_timed(time_sp=2000,duty_cycle_sp=70,speed_sp=30,stop_action='brake')
time.sleep(2)
mA.run_timed(time_sp=2000,duty_cycle_sp=30,speed_sp=100,stop_action='hold')
time.sleep(2)
mT.run_timed(time_sp=710,duty_cycle_sp=40,speed_sp=-100,stop_action='hold')
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)
time.sleep(3)
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,stop_action='brake')
end()
time.sleep(2)
mT.reset()