[[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()