class TestMotor(unittest.TestCase): get_input('Attach a motor on port A then continue') def __init__(self, *args, **kwargs): super(TestMotor, self).__init__(*args, **kwargs) self.d = Motor(port=Motor.PORT.A) def setUp(self): self.d.reset() def test_run(self): self.d.run_mode = 'forever' self.d.regulation_mode = True self.d.pulses_per_second_sp = 200 self.d.start() time.sleep(5) self.d.stop() def test_run_forever(self): self.d.run_forever(50, regulation_mode=False) time.sleep(5) self.d.stop() self.d.run_forever(200, regulation_mode=True) time.sleep(5) self.d.stop() def test_run_time_limited(self): self.d.run_time_limited(time_sp=10000, speed_sp=80, regulation_mode=False, stop_mode=Motor.STOP_MODE.COAST, ramp_up_sp=1000, ramp_down_sp=1000) time.sleep(12) def test_run_position_limited(self): self.d.position = 0 self.d.run_position_limited(position_sp=360, speed_sp=800, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=1000, ramp_down_sp=1000) time.sleep(5) def test_run_position_limited_relative(self): self.d.position_mode = Motor.POSITION_MODE.RELATIVE self.d.run_position_limited(position_sp=160, speed_sp=800, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=1000, ramp_down_sp=1000) time.sleep(5)
class MyMotor(object): def __init__(self,port): self.motor=Motor(port=port) self.motor.reset() def reset(self): self.motor.reset() def run(self,duty): self.motor.run_forever(duty, speed_regulation=False) def stop(self): self.motor.stop() def position(self): return self.motor.position
class TestMotor(unittest.TestCase): get_input('Attach a motor on port A then continue') def __init__(self,*args, **kwargs): super(TestMotor, self).__init__(*args, **kwargs) self.d=Motor(port=Motor.PORT.A) def setUp(self): self.d.reset() def test_run(self): self.d.run_mode = 'forever' self.d.regulation_mode = True self.d.pulses_per_second_sp = 200 self.d.start() time.sleep(5) self.d.stop() def test_run_forever(self): self.d.run_forever(50, regulation_mode=False) time.sleep(5) self.d.stop() self.d.run_forever(200, regulation_mode=True) time.sleep(5) self.d.stop() def test_run_time_limited(self): self.d.run_time_limited(time_sp=10000, speed_sp=80, regulation_mode=False, stop_mode=Motor.STOP_MODE.COAST, ramp_up_sp=1000, ramp_down_sp=1000) time.sleep(12) def test_run_position_limited(self): self.d.position=0 self.d.run_position_limited(position_sp=360, speed_sp=800, stop_mode=Motor.STOP_MODE.BRAKE , ramp_up_sp=1000, ramp_down_sp=1000) time.sleep(5) def test_run_position_limited_relative (self): self.d.position_mode=Motor.POSITION_MODE.RELATIVE self.d.run_position_limited(position_sp=160, speed_sp=800, stop_mode=Motor.STOP_MODE.BRAKE , ramp_up_sp=1000, ramp_down_sp=1000) time.sleep(5)
# Create a random secrey key so we can use sessions app.config['SECRET_KEY'] = os.urandom(12) from ev3.ev3dev import Tone alarm = Tone() #head = None#Motor(port=Motor.PORT.A) right_wheel = None left_wheel = None button = None ir_sensor = None color_sensor = None try: right_wheel = Motor(port=Motor.PORT.B) left_wheel = Motor(port=Motor.PORT.C) button = TouchSensor() #ir_sensor = InfraredSensor() color_sensor = ColorSensor() alarm.play(200) except Exception as e: alarm.play(200) alarm.play(200) raise e right_wheel.position = 0 left_wheel.position = 0 right_wheel.reset() left_wheel.reset() from web import views
__author__ = 'stas Zytkiewicz [email protected]' from ev3.ev3dev import Motor for p in (Motor.PORT.A, Motor.PORT.B, Motor.PORT.C, Motor.PORT.D): try: m = Motor(port=p) m.stop() m.reset() except Exception, info: print info else: print "Motor %s stopped" % p
class Mover(): # Moving motors left=None; right=None; # Sensors gyro=None; # Paras Rrio=2.15; # 60/28=2.14285 # Configs angle=240; rmp_sp=200; run_sp=500; # running speed t_sp=400; # turning speed def __init__(self): self.left=Motor(port=Motor.PORT.B); self.right=Motor(port=Motor.PORT.C); self.left.reset(); self.right.reset(); self.gyro=GyroSensor(); def readAngle(self,RESET=0): if(RESET==1): self.gyro.rate; return self.gyro.ang; def reset(self): self.left.reset(); self.right.reset(); def runForward(self): self.reset(); self.left.setup_forever(self.run_sp,speed_regulation = True); self.right.setup_forever(self.run_sp,speed_regulation = True); self.left.start(); self.right.start(); def runBackward(self): self.reset(); self.left.setup_forever(-self.run_sp,speed_regulation = True); self.right.setup_forever(-self.run_sp,speed_regulation = True); self.left.start(); self.right.start(); def stop(self): self.left.stop(); self.right.stop(); def turnRightbyAngle(self, ang): angtruth = 0; angtmp = ang; # adjust loop while (abs(angtmp)>3): angtruth=self.oneAngleTurnRight(angtmp); angtmp=angtmp-angtruth; #print "Diff: "+str(angtmp); def oneAngleTurnRight(self, ang): before=self.readAngle(RESET=1); #print "Before right turn: "+str(before); self.reset(); self.left.position=0; self.left.setup_position_limited(position_sp=int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp); self.right.position=0; self.right.setup_position_limited(position_sp=-int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp); self.left.start(); self.right.start(); time.sleep(2); self.stop(); after=self.readAngle(); #print "After right turn: "+str(after); return after - before; def turnLeftbyAngle(self, ang): angtruth = 0; angtmp = ang; # adjust loop while (abs(angtmp)>3): angtruth=self.oneAngleTurnLeft(angtmp); angtmp=angtmp+angtruth; print "Diff: "+str(angtmp); def oneAngleTurnLeft(self, ang): before=self.readAngle(RESET=1); print "Before right turn: "+str(before); self.reset(); self.right.position=0; self.right.setup_position_limited(position_sp=int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp); self.left.position=0; self.left.setup_position_limited(position_sp=-int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp); self.right.start(); self.left.start(); time.sleep(2); self.stop(); after=self.readAngle(); print "After right turn: "+str(after); return after - before;
class Mover(): # Moving motors left = None right = None # Sensors gyro = None # Paras Rrio = 2.15 # 60/28=2.14285 # Configs angle = 240 rmp_sp = 200 run_sp = 500 # running speed t_sp = 400 # turning speed def __init__(self): self.left = Motor(port=Motor.PORT.B) self.right = Motor(port=Motor.PORT.C) self.left.reset() self.right.reset() self.gyro = GyroSensor() def readAngle(self, RESET=0): if (RESET == 1): self.gyro.rate return self.gyro.ang def reset(self): self.left.reset() self.right.reset() def runForward(self): self.reset() self.left.setup_forever(self.run_sp, speed_regulation=True) self.right.setup_forever(self.run_sp, speed_regulation=True) self.left.start() self.right.start() def runBackward(self): self.reset() self.left.setup_forever(-self.run_sp, speed_regulation=True) self.right.setup_forever(-self.run_sp, speed_regulation=True) self.left.start() self.right.start() def stop(self): self.left.stop() self.right.stop() def turnRightbyAngle(self, ang): angtruth = 0 angtmp = ang # adjust loop while (abs(angtmp) > 3): angtruth = self.oneAngleTurnRight(angtmp) angtmp = angtmp - angtruth #print "Diff: "+str(angtmp); def oneAngleTurnRight(self, ang): before = self.readAngle(RESET=1) #print "Before right turn: "+str(before); self.reset() self.left.position = 0 self.left.setup_position_limited(position_sp=int(ang * self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.position = 0 self.right.setup_position_limited(position_sp=-int(ang * self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.start() self.right.start() time.sleep(2) self.stop() after = self.readAngle() #print "After right turn: "+str(after); return after - before def turnLeftbyAngle(self, ang): angtruth = 0 angtmp = ang # adjust loop while (abs(angtmp) > 3): angtruth = self.oneAngleTurnLeft(angtmp) angtmp = angtmp + angtruth print "Diff: " + str(angtmp) def oneAngleTurnLeft(self, ang): before = self.readAngle(RESET=1) print "Before right turn: " + str(before) self.reset() self.right.position = 0 self.right.setup_position_limited(position_sp=int(ang * self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.position = 0 self.left.setup_position_limited(position_sp=-int(ang * self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.start() self.left.start() time.sleep(2) self.stop() after = self.readAngle() print "After right turn: " + str(after) return after - before
class Driver(): # Wheel motors left=None right=None # Sensors gyro=None # Paras Rrio=2.15 # R_robot/R_wheel: 60/28=2.14285 Wper=175.93 # perimeter of the powering wheels: 175.92919 mm # Configs angle=240 rmp_sp=200 run_sp=500 # running speed t_sp=400 # turning speed t_accuracy=2 # turning accuracy for Gyro, in degree r_accuracy=5 # running accuracy for Motor position, in degree adjust_sp = [100, 50] def __init__(self): self.left=Motor(port=Motor.PORT.B) self.right=Motor(port=Motor.PORT.C) self.reset() self.gyro=Gyro() def reset(self): self.left.reset() self.right.reset() def runForward(self): self.reset() self.left.setup_forever(self.run_sp,speed_regulation = True) self.right.setup_forever(self.run_sp,speed_regulation = True) self.left.start() self.right.start() def forwardbyDistance(self, dist): # distance must be in cm, and positive if (dist == 0): return angle = int(abs(dist*10)/self.Wper*360) self.forwardbyAngle(angle) #self.forwardbySecond() def forwardbyAngle(self, angle): angtruth = [0, 0] angtmp = [angle, angle] # moving and adjusting loop loop_counter = 0; while(abs(angtmp[0])>=self.r_accuracy and abs(angtmp[1]) >=self.r_accuracy): angtruth = self.oneAngleForward(angtmp[0], angtmp[1]) angtmp[0]=angtmp[0]-angtruth[0] angtmp[1]=angtmp[1]-angtruth[1] print "fore New angtmp: "+ str(angtmp) def oneAngleForward(self, left_ang, right_ang): # run the main movement self.reset() self.left.setup_position_limited(position_sp=left_ang, speed_sp=self.run_sp, stop_mode=Motor.STOP_MODE.HOLD, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.setup_position_limited(position_sp=right_ang, speed_sp=self.run_sp, stop_mode=Motor.STOP_MODE.HOLD, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.start() self.right.start() time.sleep(10) # need to figure out how much needed self.stop() # adjust using low speed mode for v_adj in self.adjust_sp: self.left.setup_position_limited(position_sp=left_ang, speed_sp=v_adj, stop_mode=Motor.STOP_MODE.HOLD, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.setup_position_limited(position_sp=right_ang, speed_sp=v_adj, stop_mode=Motor.STOP_MODE.HOLD, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.start() self.right.start() time.sleep(1) return [self.left.position, self.right.position] def forwardbySecond(self, sec): self.reset(); self.left.setup_time_limited(time_sp=sec, speed_sp=self.run_sp, speed_regulation=True) self.right.setup_time_limited(time_sp=sec, speed_sp=self.run_sp, speed_regulation=True) self.left.start() self.right.start() time.sleep(sec) self.stop() def runBackward(self): self.reset() self.left.setup_forever(-self.run_sp,speed_regulation=True) self.right.setup_forever(-self.run_sp,speed_regulation=True) self.left.start() self.right.start() def backwardbyDistance(self, dist): # distance must be in cm, and positive if (dist == 0): return angle = -int(abs(dist*10)/self.Wper*360) self.backwardbyAngle(angle) def backwardbyAngle(self, angle): angtruth = [0, 0] angtmp = [angle, angle] # moving and adjusting loop while(abs(angtmp[0])>=self.r_accuracy and abs(angtmp[1]) >=self.r_accuracy): angtruth = self.oneAngleForward(angtmp[0], angtmp[1]) angtmp[0] = angtmp[0]+angtruth[0] angtmp[1] = angtmp[1]+angtruth[1] print "back New angtmp: "+ str(angtmp) def oneAngleBackward(self, left_ang, right_ang): self.reset() self.left.setup_position_limited(position_sp=-left_ang, speed_sp=self.run_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.setup_position_limited(position_sp=-right_ang, speed_sp=self.run_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.start() self.right.start() time.sleep(10) self.stop() # adjust using low speed mode for v_adj in self.adjust_sp: self.left.setup_position_limited(position_sp=-left_ang, speed_sp=v_adj, stop_mode=Motor.STOP_MODE.HOLD, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.setup_position_limited(position_sp=-right_ang, speed_sp=v_adj, stop_mode=Motor.STOP_MODE.HOLD, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.start() self.right.start() time.sleep(1) return [self.left.position, self.right.position] def turnRightbyAngle(self, ang): angtruth = 0 angtmp = ang # moving and adjusting loop while (abs(angtmp)>self.t_accuracy): angtruth=self.oneAngleTurnRight(angtmp) angtmp=angtmp-angtruth #print "Diff: "+str(angtmp) def oneAngleTurnRight(self, ang): before=self.gyro.readAngle() #print "Before right turn: "+str(before) self.reset() self.left.setup_position_limited(position_sp=int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.setup_position_limited(position_sp=-int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.start() self.right.start() time.sleep(2) self.stop() after=self.gyro.readAngle() #print "After right turn: "+str(after) return after - before def turnLeftbyAngle(self, ang): angtruth = 0 angtmp = ang # moving and adjusting loop while (abs(angtmp)>self.t_accuracy): angtruth=self.oneAngleTurnLeft(angtmp) angtmp=angtmp+angtruth print "Diff: "+str(angtmp) def oneAngleTurnLeft(self, ang): before=self.gyro.readAngle() #print "Before right turn: "+str(before) self.reset() self.right.setup_position_limited(position_sp=int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.left.setup_position_limited(position_sp=-int(ang*self.Rrio), speed_sp=self.t_sp, stop_mode=Motor.STOP_MODE.BRAKE, ramp_up_sp=self.rmp_sp, ramp_down_sp=self.rmp_sp) self.right.start() self.left.start() time.sleep(2) self.stop() after=self.gyro.readAngle() #print "After right turn: "+str(after) return after - before def stop(self): self.left.stop() self.right.stop()
app.config['SECRET_KEY'] = os.urandom(12) from ev3.ev3dev import Tone alarm = Tone() #head = None#Motor(port=Motor.PORT.A) right_wheel = None left_wheel = None button = None ir_sensor = None color_sensor = None try: right_wheel = Motor(port=Motor.PORT.B) left_wheel = Motor(port=Motor.PORT.C) button = TouchSensor() #ir_sensor = InfraredSensor() color_sensor = ColorSensor() alarm.play(200) except Exception as e: alarm.play(200) alarm.play(200) raise e right_wheel.position = 0 left_wheel.position = 0 right_wheel.reset() left_wheel.reset() from web import views