[[2018b/Member]]
*ロボットの説明 [#d696e17a]
**ロボットの外見 [#had9efa4]
&ref(2018b/Member/shaymin/Mission3/s_hdnTaVh2.jpg,100%);
**ボールを持ち上げる機構 [#ge0f91ce]
&ref(2018b/Member/shaymin/Mission3/s_8P536Ai6.jpg,100%);
**ボールを缶に乗せる [#t381e9aa]
&ref(2018b/Member/shaymin/Mission3/s_xwclcbeT.jpg,100%);
&ref(2018b/Member/shaymin/Mission3/s_1HURzn1T.jpg,100%);
&ref(2018b/Member/shaymin/Mission3/s_70MwRcJd.jpg,100%);
**ボールを拾いあげる方法 [#feee1b9f]
&ref(2018b/Member/shaymin/Mission3/s_CFfxxwMg.jpg,100%);
&ref(2018b/Member/shaymin/Mission3/s_He8G1L6q.jpg,100%);
&ref(2018b/Member/shaymin/Mission3/s_rQ0CRyaG.jpg,100%);
&ref(2018b/Member/shaymin/Mission3/s_bCs47u-C.jpg,100%);
*プログラム [#gac64291]
#!/usr/bin/env python3
from ev3dev.ev3 import *
import time

ml=LargeMotor('outA')
mr=LargeMotor('outD')
ma=LargeMotor('outB')
cs=ColorSensor('in3')
us=UltrasonicSensor('in4')
gs=GyroSensor('in1')

def stop():
        ml.stop()
        mr.stop()

def linetrace_rin():
        c1=cs.value()
        while c1>13:
                c1=cs.value()
                x=(abs(c1-10)/70)*100
                if x>100:
                        x=100
                l=(x/100)*210-30
                r=150-l
                http://ml.run _forever(speed_sp=l,stop_action='brake')
                http://mr.run _forever(speed_sp=r,stop_action='brake')
        stop()

def linetrace_lin():
        c1=cs.value()
        while c1>13:
                c1=cs.value()
                x=abs((c1-10)/70)*100
                if x>100:
                        x=100
                r=(x/100)*210-30
                l=150-r
                http://ml.run _forever(speed_sp=l,stop_action='brake')
                http://mr.run _forever(speed_sp=r,stop_action='brake')
        stop()

def linetrace_ltime(j):
        c1=cs.value()
        t1=time.time()
        t2=time.time()
        while t2-t1<j:
                c1=cs.value()
                t2=time.time()
                x=abs((c1-10)/70)*100
                if x>100:
                        x=100
                r=(x/100)*210-30
                l=150-r
                http://ml.run _forever(speed_sp=l,stop_action='brake')
                http://mr.run _forever(speed_sp=r,stop_action='brake')
        stop()

def linetrace_lout():
        c1=cs.value()
        while c1<40:
                c1=cs.value()
                x=(abs(c1-10)/70)*100
                if x>100:
                        x=100
                r=(x/100)*120-40
                l=40-r
                http://ml.run _forever(speed_sp=l,stop_action='brake')
                http://mr.run _forever(speed_sp=r,stop_action='brake')
        stop()

def runtime(l,r):
        http://ml.run _timed(time_sp=l*1000,speed_sp=70,stop_action='brake')
        http://mr.run _timed(time_sp=r*1000,speed_sp=70,stop_action='brake')
        time.sleep((l+r)/2)

def angle(l,r,t):
        http://ml.run _to_rel_pos(position_sp=l,speed_sp=115,stop_action='hold')
        http://mr.run _to_rel_pos(position_sp=r,speed_sp=115,stop_action='hold')
        time.sleep(t)

def kaiten_r(s,t):
        g1=gs.value()
        g2=gs.value()
        while g2-g1<s:
                http://ml.run _forever(speed_sp=t,stop_action='hold')
                http://mr.run _forever(speed_sp=-t,stop_action='hold')
                g2=gs.value()
        stop()

def kaiten_l(s,t):
        g1=gs.value()
        g2=gs.value()
        while g1-g2<s:
                http://ml.run _forever(speed_sp=-t,stop_action='hold')
                http://mr.run _forever(speed_sp=t,stop_action='hold')
                g2=gs.value()
        stop()
def g():
        g1=gs.value()
        while g1<10000:
                g1=gs.value()
                print(g1)

def roll(s):
        http://ma.run _to_rel_pos(position_sp=s,speed_sp=80,stop_action='hold')
        time.sleep(3)

def discover_l(s,t):
        u1=us.value()
        g1=gs.value()
        g2=gs.value()
        while g1-g2<s:
                u2=us.value()
                http://ml.run _forever(speed_sp=-70,stop_action='hold')
                http://mr.run _forever(speed_sp=70,stop_action='hold')
                g2=gs.value()
                if u2<u1:
                        u1=u2
                        g3=gs.value()
        http://ml.run _forever(speed_sp=70,stop_action='hold')
        http://mr.run _forever(speed_sp=-70,stop_action='hold')
        g4=gs.value()
        g5=gs.value()
        if u1<=t:
                while g5-g4<g3-g2-6:
                        http://mr.run _forever(speed_sp=-70,stop_action='hold')
                        http://ml.run _forever(speed_sp=70,stop_action='hold')
                        g5=gs.value()
                stop()
                u3=us.value()
                t1=time.time()
                while u3<2550:
                        http://ml.run _forever(speed_sp=100,stop_action='hold')
                        http://mr.run _forever(speed_sp=100,stop_action='hold')
                        u3=us.value()
                        t2=time.time()
                stop()
                roll(220)
                http://ml.run _timed(speed_sp=-100,time_sp=(t2-t1)*1000,stop_action='hold')
                http://mr.run _timed(speed_sp=-100,time_sp=(t2-t1)*1000,stop_action='hold')
                time.sleep(t2-t1)
                g6=gs.value()
                g7=gs.value()
                while g7-g6<=g1-g3-6:
                        http://mr.run _forever(speed_sp=-70,stop_action='hold')
                        http://ml.run _forever(speed_sp=70,stop_action='hold')
                        g7=gs.value()
                stop()
        else:
                while g5-g4<90:
                        http://mr.run _forever(speed_sp=-70,stop_action='hold')
                        http://ml.run _forever(speed_sp=70,stop_action='hold')
                        g5=gs.value()
                stop()

def discover_r(s,t):
        u1=us.value()
        g1=gs.value()
        g2=gs.value()
        while g2-g1<s:
                u2=us.value()
                http://ml.run _forever(speed_sp=70,stop_action='hold')
                http://mr.run _forever(speed_sp=-70,stop_action='hold')
                g2=gs.value()
                if u2<u1:
                        u1=u2
                        g3=gs.value()
        http://ml.run _forever(speed_sp=-70,stop_action='hold')
        http://mr.run _forever(speed_sp=70,stop_action='hold')
        g4=gs.value()
        g5=gs.value()
        if u1<=t:
                while g4-g5<g2-g3-6:
                        http://mr.run _forever(speed_sp=70,stop_action='hold')
                        http://ml.run _forever(speed_sp=-70,stop_action='hold')
                        g5=gs.value()
                stop()
                u3=us.value()
                t1=time.time()
                while u3<2550:
                        http://ml.run _forever(speed_sp=100,stop_action='hold')
                        http://mr.run _forever(speed_sp=100,stop_action='hold')
                        u3=us.value()
                        t2=time.time()
                stop()
                roll(220)
                http://ml.run _timed(speed_sp=-100,time_sp=(t2-t1)*1000,stop_action='hold')
                http://mr.run _timed(speed_sp=-100,time_sp=(t2-t1)*1000,stop_action='hold')
                time.sleep(t2-t1)
                g6=gs.value()
                g7=gs.value()
                while g6-g7<=g3-g1-6:
                        http://mr.run _forever(speed_sp=70,stop_action='hold')
                        http://ml.run _forever(speed_sp=-70,stop_action='hold')
                        g7=gs.value()
                stop()
        else:
                while g4-g5<90:
                        http://mr.run _forever(speed_sp=70,stop_action='hold')
                        http://ml.run _forever(speed_sp=-70,stop_action='hold')
                        g5=gs.value()

def Redball():
        angle(250,250,3)
        kaiten_r(180,110)
        roll(220)
        kaiten_r(195,110)
        linetrace_lin()

def Blueball():
        angle(-20,160,2)
        linetrace_lin()
        angle(-35,-35,1.5)
        kaiten_r(175,110)
        roll(220)

def move():
        kaiten_r(190,110)
        angle(-50,-50,1)
        linetrace_lin()
        linetrace_lout()
        linetrace_lin()
        linetrace_lout()
        linetrace_lin()

def BlueZone():
        linetrace_rin()
        linetrace_rout()
        linetrace_rin()
        angle(0,70,1)
        linetrace_rin()
        angle(70,0,1)
        linetrace_rin()

def discover2():
        kaiten_l(60,100)
        discover_r(90,500)

def start():
        r=int(input("insert numbera"))
        Redball()
        Blueball()
        move()
        if r<=2:
                kaiten_l(90,110)
                discover_l(90,250)
                kaiten_l(95,100)
        if r==3:
                angle(-40,180,2)
                linetrace_lin()
                discover_r(60,250)
                angle(-150,-150,2)
                kaiten_l(195,110)
                linetrace_rin()
                angle(230,-40,2)
        if r==4:
                angle(-40,180,2)
                linetrace_lin()
                discover_l(60,250)
                kaiten_l(195,110)
                linetrace_rin()
                angle(230,-40,2)
        if 5<=r:
                angle(-40,180,2)
                linetrace_lin()
                linetrace_lout()
                linetrace_ltime(3)
                discover_l(60,190)
                angle(-130,-130,3)
                kaiten_l(180,110)
                linetrace_rin()
                linetrace_rout()
                linetrace_rin()
                angle(230,-40,2)
        BlueZone()
        discover2()

def vv():
        u1=gs.value()
        while u1>0:
                u1=gs.value()
                print(u1)
                time.sleep(1)

start()

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS