예제 #1
0
    def __init__(self):
        # Initialize the EV3 Brick.
        self.ev3 = EV3Brick()
        self.ev3.speaker.set_speech_options(voice='f3')

        # large motors
        self.left_motor = Motor(Port.A,
                                positive_direction=Direction.COUNTERCLOCKWISE,
                                gears=None)
        self.right_motor = Motor(Port.B,
                                 positive_direction=Direction.COUNTERCLOCKWISE,
                                 gears=None)

        # small (medium) motors
        self.small_motor_left = Motor(Port.C,
                                      positive_direction=Direction.CLOCKWISE,
                                      gears=None)
        self.small_motor_right = Motor(Port.D,
                                       positive_direction=Direction.CLOCKWISE,
                                       gears=None)

        # gyro sensor
        self.gyro_sensor = GyroSensor(Port.S3, Direction.CLOCKWISE)

        # Initialize the drive base.
        self.drive_base = DriveBase(self.left_motor,
                                    self.right_motor,
                                    wheel_diameter=93.5,
                                    axle_track=120)
        return
예제 #2
0
 def __initSensors(self):
     '''Sub-method for initializing Sensors.'''
     self.logger.debug(self, "Starting sensor initialisation...")
     try:
         self.__gyro = GyroSensor(self.__conf2port[self.__config['gyroSensorPort']], Direction.CLOCKWISE if not self.__config['gyroInverted'] else Direction.COUNTERCLOCKWISE) if self.__config['gyroSensorPort'] != 0 else 0
         self.logger.debug(self, 'Gyrosensor initialized sucessfully on port %s' % self.__config['gyroSensorPort'])
     except Exception as exception:
         self.__gyro = 0
         self.logger.error(self, "Failed to initialize the Gyro-Sensor - Are u sure it's connected to Port %s?" % exception, exception)
     try:
         self.__rLight = ColorSensor(
             self.__conf2port[self.__config['rightLightSensorPort']]) if self.__config['rightLightSensorPort'] != 0 else 0
         self.logger.debug(self, 'Colorsensor initialized sucessfully on port %s' % self.__config['rightLightSensorPort'])
     except Exception as exception:
         self.logger.error(self, "Failed to initialize the right Color-Sensor - Are u sure it's connected to Port %s?" % exception, exception)
     try:
         self.__lLight = ColorSensor(
             self.__conf2port[self.__config['leftLightSensorPort']]) if self.__config['leftLightSensorPort'] != 0 else 0
         self.logger.debug(self, 'Colorsensor initialized sucessfully on port %s' % self.__config['leftLightSensorPort'])
     except Exception as exception:
         self.logger.error(self, "Failed to initialize the left Color-Sensor - Are u sure it's connected to Port %s?" % exception, exception)
     try:
         self.__touch = TouchSensor(self.__conf2port[self.__config['backTouchSensor']]) if self.__config['backTouchSensor'] != 0 else 0
         self.logger.debug(self, 'Touchsensor initialized sucessfully on port %s' % self.__config['backTouchSensor'])
     except Exception as exception:
         self.logger.error(self, "Failed to initialize the Touch-Sensor - Are u sure it's connected to Port %s?" % exception, exception)
     self.logger.debug(self, "Sensor initialisation done")
예제 #3
0
    def __init__(self):
        self.brick = EV3Brick()
        self.frontMotor = Motor(Port.D)
        self.rearMotor = Motor(Port.A)
        self.leftMotor = Motor(Port.C)
        self.rightMotor = Motor(Port.B)

        if path.exists('sensorpoints.py'):
            import sensorpoints
            self.leftSensor = LightSensor(Port.S3, sensorpoints.leftLow,
                                          sensorpoints.leftHigh)
            self.rightSensor = LightSensor(Port.S2, sensorpoints.rightLow,
                                           sensorpoints.rightHigh)

        else:
            self.leftSensor = LightSensor(Port.S3, 10, 105)
            self.rightSensor = LightSensor(Port.S2, 20, 160)

        self.gyroSensor = GyroSensor(Port.S1)
        wait(100)
        self.gyroSensor.speed()
        self.gyroSensor.angle()
        wait(500)
        self.gyroSensor.reset_angle(0.0)
        wait(200)
예제 #4
0
	def __init__(self, robot):
		self.robot = robot
		try:
			self.gyro = GyroSensor(Port.S2, Direction.CLOCKWISE)
		except:
			self.gyro = None
			print("No Gyro Sensor plugged into Port 2. Cannot run Greyden's Skills. :-(")
			print()
예제 #5
0
 def __init__(self, left_motor_port, right_motor_port, med_motor_port,
              gyro_port, wheel_diameter, wheel_base):
     self.left_motor = Motor(left_motor_port)
     self.right_motor = Motor(right_motor_port)
     # self.med_motor = Motor(med_motor_port)
     self.robot = DriveBase(self.left_motor, self.right_motor,
                            wheel_diameter, wheel_base)
     self.gyro = GyroSensor(gyro_port)
예제 #6
0
 def fall_check(self):
     fall_gyro = GyroSensor(Port.S4, Direction.CLOCKWISE)
     while True:
         real_angle = fall_gyro.angle()
         if real_angle > 45 or real_angle < -45:
             self.brick.speaker.beep()
         else:
             wait(30)
         print(real_angle)
def run():
    motor_b = Motor(Port.B)
    motor_c = Motor(Port.C)
    Gyro = GyroSensor(Port.S1)
    while Gyro.angle() <= 65:
        motor_c.run(900)
        motor_b.run(-900)
    motor_c.stop(Stop.BRAKE)
    motor_b.stop(Stop.BRAKE)
예제 #8
0
class Robot():

    #robot hardware
    brick = EV3Brick()

    wheel_left = Motor(Port.A)
    wheel_right = Motor(Port.B)

    arm_left = Motor(Port.D)
    arm_right = Motor(Port.C)

    gyro = GyroSensor(Port.S1, Direction.COUNTERCLOCKWISE)
    color_left = ColorSensor(Port.S2)
    color_right = ColorSensor(Port.S3)

    chassis = DriveBase(wheel_left,
                        wheel_right,
                        wheel_diameter=49.5,
                        axle_track=150)

    @classmethod
    def reset_settings(cls):
        cls.chassis.stop()
        cls.chassis.settings(115, 460, 88, 352)

    @classmethod
    def settings(cls,
                 straight_speed=None,
                 straight_acceleration=None,
                 turn_rate=None,
                 turn_acceleration=None):
        cls.chassis.stop()  #Settings can only be changed while stopped
        current_settings = cls.chassis.settings()
        cls.chassis.settings(
            straight_speed if straight_speed is not None else
            current_settings[0], straight_acceleration
            if straight_acceleration is not None else current_settings[1],
            turn_rate if turn_rate is not None else current_settings[2],
            turn_acceleration
            if turn_acceleration is not None else current_settings[3])

    @classmethod
    def brake(cls):
        cls.chassis.stop()
        cls.wheel_left.brake()
        cls.wheel_right.brake()

    @classmethod
    def reset_gyro(cls):
        cls.gyro.reset_angle(0)

        cls.gyro.angle()
        cls.gyro.speed()
        cls.gyro.angle()

        wait(10)
예제 #9
0
 def rotate_180_by_gyro(self):
     gyro_sensor = GyroSensor(Port.S4)
     gyro_sensor.reset_angle(0)
     self.left_motor.run(self.TRUCK_SPEED)
     self.right_motor.run(-self.TRUCK_SPEED)
     while (gyro_sensor.angle() < 135):
         print("Angle: ", gyro_sensor.angle())
         wait(1)
     self.stop()
     wait(4000)
예제 #10
0
def turn(angle, max_speed, gyro_port, drive_base):
    gyro = GyroSensor(gyro_port, Direction.COUNTERCLOCKWISE)
    ev3 = EV3Brick()
    ev3.screen.clear()

    initial_error = gyro.angle() - angle

    while abs(gyro.angle() - angle) > 2:
        error = gyro.angle() - angle
        speed = max_speed * (error / initial_error)
        ev3.screen.print(gyro.angle(), error, speed)
        drive_base.drive(0, speed)
        wait(10)
예제 #11
0
def main():
    # sound test
    log.info('test beep')
    brick.sound.beep()

    # color sensor test
    sensor_color = ColorSensor(ROBOT['sensor_color_port'])
    log.debug('color sensor: color=%s' % sensor_color.color())

    # gyro sensor test
    sensor_gyro = GyroSensor(ROBOT['sensor_gyro_port'])
    log.debug('gyro sensor: speed=%d, angle=%d' %
              (sensor_gyro.speed(), sensor_gyro.angle()))
예제 #12
0
 def __init__(self,
              left_motor=Motor(Port.A),
              right_motor=Motor(Port.B),
              attachment_motor=(Motor(Port.C)),
              wheel_diameter=56,
              axle_track=145):
     #wheel_diameter=43, axle_track=110):
     self.left_motor = left_motor
     self.right_motor = right_motor
     self.attachment_motor = attachment_motor
     self.color_sensor = ColorSensor(Port.S2)
     self.gyro_sensor = GyroSensor(Port.S1)
     super().__init__(left_motor, right_motor, wheel_diameter, axle_track)
def run():
    motor_b = Motor(Port.B)
    motor_c = Motor(Port.C)
    Gyro = GyroSensor(Port.S1)
    Gyro.reset_angle(0)
    motor_b.run_angle(500, 720, Stop.BRAKE, False)
    motor_c.run_angle(500, 720, Stop.BRAKE, True)
    wait(10)
    while Gyro.angle() <= 180:
        motor_c.run(100)
        motor_b.run(-100)
    wait(10)
    motor_b.run_angle(500, 720, Stop.BRAKE, False)
    motor_c.run_angle(500, 720, Stop.BRAKE, True)
예제 #14
0
파일: tests.py 프로젝트: pmargani/EV3Python
def test_gyro_drift(port=Port.S4):

    gyro = GyroSensor(port)

    printMsg("Checking for drift.")
    numTests = 5
    drifting = False
    for i in range(numTests):
        angle = gyro.angle()
        printMsg("Test %i/%i = %d" % (i + 1, numTests, angle))
        if angle != 0:
            drifting = True
            break  # no need to keep testing
        wait(1000)

    return drifting
예제 #15
0
def get_robot():
    # Initialize two motors and a drive base
    wheel_diameter_mm=54
    axle_track_mm=152

    crane_motor=Motor(Port.A)
    left_motor=Motor(Port.C)
    right_motor=Motor(Port.B)
    robot = DriveBase(left_motor, right_motor, wheel_diameter_mm, axle_track_mm)
    #robot.drive(2000, 0)

    gyro=GyroSensor(Port.S1)
    calibrate_gyro(gyro)
    color_sensor_left = ColorSensor(Port.S3)
    color_sensor_right = None #ColorSensor(Port.S2)
    # Initialize the Ultrasonic Sensor. 
    # obstacle_sensor = UltrasonicSensor(Port.S4)
    return robot, crane_motor, left_motor, right_motor,color_sensor_left, color_sensor_right, gyro
예제 #16
0
def init_brick():
    # Create your objects here.
    ev3 = EV3Brick()

    # Initilize our motors
    left_motor = Motor(Port.A)
    right_motor = Motor(Port.D)
    front_motor_1 = Motor(Port.C)
    front_motor_2 = Motor(Port.B)

    left_motor.reset_angle(0)
    right_motor.reset_angle(0)
    front_motor_1.reset_angle(0)
    front_motor_2.reset_angle(0)

    # Initialize the color sensor.
    left_sensor = ColorSensor(Port.S4)
    right_sensor = ColorSensor(Port.S1)

    # Speeds
    right_sensor = ColorSensor(Port.S1)
    left_sensor = ColorSensor(Port.S4)
    ARM_MOTOR_SPEED = 400
    WHEEL_DIAMETER = 92
    AXLE_TRACK = 130
    DRIVE_SPEED_FAST = 350
    DRIVE_SPEED_NORMAL = 200
    DRIVE_SPEED_SLOW = 100
    DRIVE_EXTRA_SLOW = 30
    CIRCUMFERENCE = 3.14 * WHEEL_DIAMETER  # Diameter = 100mm, Circumference = 314.10mm = 1 rotation
    # Initialize the Gyro sensor
    gyro = GyroSensor(Port.S2)
    gyro.reset_angle(0)

    # All parameters are in millimeters
    robot = DriveBase(left_motor,
                      right_motor,
                      wheel_diameter=config.WHEEL_DIAMETER,
                      axle_track=config.AXLE_TRACK)

    # Set the straight speed and turn rate
    robot.settings(straight_speed=config.DRIVE_SPEED_NORMAL,
                   turn_rate=config.TURN_RATE)
예제 #17
0
    def __init__(self):
        """Class that represents the robot
        """
        try:

            self.state = "Port 1: Right Color"
            self.right_color = ColorSensor(Port.S1)

            self.state = "Port 2: Center Color"
            self.center_color = ColorSensor(Port.S2)

            self.state = "Port 3: Left Color"
            self.left_color = ColorSensor(Port.S3)

            self.state = "Port 4: Gyro"
            self.gyro = GyroSensor(Port.S4, Direction.COUNTERCLOCKWISE)

            self.state = "Port A: Left Motor"
            self.left_motor = Motor(Port.A)

            self.state = "Port B: Right Motor"
            self.right_motor = Motor(Port.B)

            self.state = "Port C: Linear Gear"
            self.linear_attachment_motor = Motor(Port.C)

            self.state = "Port D: Block Dropper"
            self.dropper_attachment_motor = Motor(Port.D)

            self.wheel_diameter = 55
            self.axle_track = 123
            self.drive_base = DriveBase(self.left_motor, self.right_motor,
                                        self.wheel_diameter, self.axle_track)
            self.state = "OK"
            self.clock = StopWatch()
            self.dance_clock = 0
            self.sign = 1
        except:
            brick.screen.clear()
            big_font = Font(size=18)
            brick.screen.set_font(big_font)
            brick.screen.draw_text(0, 20, "Error!")
            brick.screen.draw_text(0, 40, self.state)
예제 #18
0
파일: robot.py 프로젝트: pmargani/EV3Python
    def __init__(self,
                 port,
                 left_motor,
                 right_motor,
                 wheel_radius,
                 axis_radius,
                 debug=False):

        self.port = port

        self.left_motor = left_motor
        self.right_motor = right_motor
        self.wheel_radius = wheel_radius
        self.axis_radius = axis_radius

        self.debug = debug

        # either connect to real hardware, or our dummy sim class
        self.gyro = GyroSensor(self.port)
        self.degrees = int(0)
예제 #19
0
def gameLoop(blocks_to_deliver):
    global brick_state


    leftMotor = Motor(Port.B)
    rightMotor = Motor(Port.C)
    wheels = DriveBase(Motor(Port.B), Motor(Port.C), 56, 114)
    uSensor = UltrasonicSensor(Port.S4)
    cSensor = ColorSensor(Port.S3)
    gSensor = GyroSensor(Port.S2)

    ts = TouchSensor(Port.S1)
    while not ts.pressed():
        # brick.sound.file(SoundFile.MOTOR_IDLE, 1000)

        if blocks_delivered >= blocks_to_deliver:
            brick_state = Status.WAIT
        
        if brick_state == Status.WAIT:
            return
        elif brick_state == Status.SEARCHING:
            print('STATE: SEARCHING')
            t = threading.Thread(target=searchLuggage, args=(wheels, cSensor, gSensor))
            t.start()
            brick_state = Status.COMPUTING
        elif brick_state == Status.CARRYING_LUGGAGE:
            print('STATE: CARRYING_LUGGAGE')
            t = threading.Thread(target=deliverLuggage, args=(wheels, cSensor, ))
            t.start()
            brick_state = Status.COMPUTING
        elif brick_state == Status.PICKING_UP:
            print('STATE: PICKING_UP')
            t = threading.Thread(target=doLuggage, args=(wheels, cSensor, True, ))
            t.start()
            brick_state = Status.COMPUTING
        elif brick_state == Status.DEPOSITING:
            print('STATE: DEPOSITING')
            t = threading.Thread(target=doLuggage, args=(wheels, cSensor,False, ))
            t.start()
            brick_state = Status.COMPUTING
예제 #20
0
 def __init__(self,
              speed_initializing,
              max_speed_execution,
              solution,
              black_ref=100,
              white_ref=0,
              robot_center_parameter=80,
              robot_rotation_parameter=0,
              orientation="N",
              motor_rigth=Motor(Port.B),
              motor_left=Motor(Port.C),
              sensor_rigth=ColorSensor(Port.S2),
              sensor_left=ColorSensor(Port.S1),
              sensor_stop=ColorSensor(Port.S3),
              sensor_gyro=GyroSensor(Port.S4),
              Kp=5,
              Ki=0,
              Kd=0):
     self.speed_initializing = speed_initializing
     self.max_speed_execution = max_speed_execution
     self.solution = solution
     self.black_ref = black_ref
     self.white_ref = white_ref
     self.robot_center_parameter = robot_center_parameter
     self.robot_rotation_parameter = robot_rotation_parameter
     self.orientation = orientation
     self.motor_rigth = motor_rigth
     self.motor_left = motor_left
     self.sensor_rigth = sensor_rigth
     self.sensor_left = sensor_left
     self.sensor_stop = sensor_stop
     self.sensor_gyro = sensor_gyro
     self.Kp = Kp
     self.Ki = Ki
     self.Kd = Kd
     self.watch = StopWatch()
예제 #21
0
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, ColorSensor, TouchSensor, UltrasonicSensor, GyroSensor
from pybricks.parameters import Port, Direction, Color
import time

#モーター・センサー類の設定
Right = Motor(Port.B)
Left = Motor(Port.C, Direction.COUNTERCLOCKWISE)  #Mモーター使用のため正の速度方向を逆に設定
CS = ColorSensor(Port.S1)
TS = TouchSensor(Port.S2)
US = UltrasonicSensor(Port.S3)
GS = GyroSensor(Port.S4)


#各種関数の定義
class My():

    #モーターの角度をAngle度にリセット
    def Reset(Angle):
        Right.reset_angle(Angle)
        Left.reset_angle(Angle)

    #モーターをそれぞれ速度Right_Speed、Left_Speedで回転
    def Run(Right_Speed, Left_Speed):
        Right.run(Right_Speed)
        Left.run(Left_Speed)

    #変数Reflectionの値を境目にライントレース
    def LineTrace(High_Power, Low_Power):
        if CS.reflection() > Reflection:
예제 #22
0
AXLE_TRACK_MM=135
SENSOR_TO_AXLE=118

# Get wheel circumference
WHEEL_CIRCUM_MM=3.149*89
# 360 degrees -> WHEEL_CIRCUM_MM so   1 degree -> ?
DEGREES_PER_MM=360/WHEEL_CIRCUM_MM
 
#drive motors
left_motor=Motor(Port.C, Direction.CLOCKWISE)
right_motor=Motor(Port.D, Direction.CLOCKWISE)
robot = DriveBase(left_motor, right_motor, WHEEL_DIAMETER_MM, AXLE_TRACK_MM)
crane_motor=Motor(Port.B, Direction.CLOCKWISE, [8,24])


gyro=GyroSensor(Port.S1, Direction.COUNTERCLOCKWISE)
# color_sensor_left = ColorSensor(Port.S1)
color_sensor_right = ColorSensor(Port.S4)


def move_to_color(
    color_sensor,
    stop_on_color,
    speed_mm_s):
 
    robot.drive(speed_mm_s, 0)
    # Check if color reached.
    while color_sensor.color() != stop_on_color:
        wait(10)

    robot.stop(stop_type=Stop.BRAKE)
예제 #23
0
#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, GyroSensor
from pybricks.parameters import Port, Stop, Direction, Button
from pybricks.tools import print, wait, StopWatch
from pybricks.robotics import DriveBase
import time

left = Motor(Port.B)
right = Motor(Port.C)
gyro = GyroSensor(Port.S1)
gyro.reset_angle(0)
data = open("m_angle.data", "w")

def rot(spd=40, ang=0):
    while(True):
        if(gyro.angle() > ang):
            right.run(spd)
            left.run(spd * -1)
        if(gyro.angle() < ang):
            left.run(spd)
            right.run(spd * -1)
        if(gyro.angle() == ang):
            left.stop(Stop.HOLD)
            right.stop(Stop.HOLD)
            time.sleep(0.5)
            if(gyro.angle() == ang):
                data.write(str(gyro.angle()) + "\n")
                gyro.reset_angle(0)
                break
예제 #24
0
# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.

# Variables and constants
ev3 = EV3Brick()
leftmotor = Motor(Port.C, Direction.CLOCKWISE)
rightmotor = Motor(Port.B, Direction.CLOCKWISE)
#left medium motor
mediummotor = Motor(Port.D, Direction.COUNTERCLOCKWISE)
#right medium motor
mediummotor2 = Motor(Port.A, Direction.COUNTERCLOCKWISE)
robot = DriveBase(leftmotor, rightmotor, 55.85, 108)
robot.settings(300, 100, 200, 100)
rightcolor = ColorSensor(Port.S1)
leftcolor = ColorSensor(Port.S2)
gyroSensor = GyroSensor(Port.S3)
black = 3
white = 35
threshold = int((black + white) / 2)  #19
print(threshold)


#seeing white first and then line squaring
def linesquare():
    lightrange = range(threshold - 2,
                       threshold + 2)  #light range for final result
    #lightrange = range(threshold - 4, threshold + 4) #light rnage for adjustment

    #First, move the robot straight until one of the sensor sees range.
    while rightcolor.reflection() > 4 and leftcolor.reflection() > 4:
        robot.drive(70, 0)
# Initialize the motors.
left_motor = Motor(Port.B, positive_direction=Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.C, positive_direction=Direction.COUNTERCLOCKWISE)
lift_motor = Motor(Port.A)
forklift_motor = Motor(Port.D, positive_direction=Direction.COUNTERCLOCKWISE)

robot = DriveBase(left_motor, right_motor, wheel_diameter=94.2, axle_track=94)
robot.settings(straight_speed=200,
               straight_acceleration=50,
               turn_rate=150,
               turn_acceleration=200)
ev3.screen.draw_text(50, 60, "Alright, let's do this.")
ev3.speaker.beep()

gyro_sensor = GyroSensor(Port.S2, Direction.COUNTERCLOCKWISE)


def gyro_turn(angle, speed=150):
    gyro_sensor.reset_angle(0)
    if angle < 0:
        while gyro_sensor.angle() > angle:
            left_motor.run(speed=(-1 * speed))
            right_motor.run(speed=speed)
            wait(10)
    elif angle > 0:
        while gyro_sensor.angle() < angle:
            left_motor.run(speed=speed)
            right_motor.run(speed=(-1 * speed))
            wait(10)
    else:
예제 #26
0
#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import (Port, Stop, Direction, Button, Color,
                                 SoundFile, ImageFile, Align)
from pybricks.tools import print, wait, StopWatch
from pybricks.robotics import DriveBase

obstacle_sensor = UltrasonicSensor(Port.S3)
gyro_sensor_front = GyroSensor(Port.S4)
right_motor = Motor(Port.C)
left_motor = Motor(Port.B)
wheel_diameter = 56
axle_track = 114
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

def start():
    while True:
        robot.drive(200, 0)
        while obstacle_sensor.distance() < 250:
            robot.stop()
            obstacle_avoidance()

def obstacle_avoidance(step = 2000, speed = 200, min_dist = 250, rotation_angle = 90):
    print('avoid')
    distance = 0

    rotate(rotation_angle)
    distance += drive_past(step, speed, min_dist, rotation_angle)
예제 #27
0
# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.

# Create your objects here.
ev3 = EV3Brick()

# Write your program here.
ev3.speaker.beep()

left_up_motor = Motor(Port.A, positive_direction=Direction.COUNTERCLOCKWISE)
right_up_motor = Motor(Port.B, positive_direction=Direction.COUNTERCLOCKWISE)
left_down_motor = Motor(Port.C, positive_direction=Direction.CLOCKWISE)
right_down_motor = Motor(Port.D, positive_direction=Direction.CLOCKWISE)

Gyro = GyroSensor(Port.S1, positive_direction=Direction.CLOCKWISE)

Gyro.reset_angle(0)

for i in range(3):
    Gyro_angle = Gyro.angle()
    #Gyro_speed = Gyro.speed()
    print('Gyro angle: ', Gyro_angle)
    #print('Gyro speed: ', Gyro_speed)
    left_up_motor.run(300)
    right_up_motor.run(300)
    left_down_motor.run(300)
    right_down_motor.run(300)
    time.sleep(1)

for i in range(5):
예제 #28
0
파일: drive-circle.py 프로젝트: jbeale1/ev3
done = False         # flag to halt program
DTFlag = False

watch = StopWatch()
amplitude = 90

# =================================
mB = Motor(Port.B)  # initialize two large motors
mC = Motor(Port.C)
robot = DriveBase(mB, mC, 94, 115)  # wheel OD=94mm, wheelbase=115mm

mB.set_run_settings(200, 250) # max speed, max accel
mC.set_run_settings(200, 250) # max speed, max accel

gy = GyroSensor(Port.S3)
gy2 = GyroSensor(Port.S2)

gy.mode='GYRO-RATE' # deliver turn-rate (must integrate for angle)
gy2.mode='GYRO-RATE' # deliver turn-rate (must integrate for angle)
sleep(0.5)
gy.mode='GYRO-ANG'  # changing modes causes recalibration
gy2.mode='GYRO-ANG'  # changing modes causes recalibration
sleep(3)
gy.reset_angle(0)
gy2.reset_angle(0)
mB.reset_angle(0)
mC.reset_angle(0)

angle = 0  # global var holding accumulated turn angle
예제 #29
0
ev3 = EV3Brick()

# Initialize the motors connected to the drive wheels.
left_motor = Motor(Port.D)
right_motor = Motor(Port.A)

# Initialize the motor connected to the arms.
arm_motor = Motor(Port.C)

# Initialize the Color Sensor. It is used to detect the colors that command
# which way the robot should move.
color_sensor = ColorSensor(Port.S1)

# Initialize the gyro sensor. It is used to provide feedback for balancing the
# robot.
gyro_sensor = GyroSensor(Port.S2)

# Initialize the ultrasonic sensor. It is used to detect when the robot gets
# too close to an obstruction.
ultrasonic_sensor = UltrasonicSensor(Port.S4)

# Initialize the timers.
fall_timer = StopWatch()
single_loop_timer = StopWatch()
control_loop_timer = StopWatch()
action_timer = StopWatch()

# The following (UPPERCASE names) are constants that control how the program
# behaves.

GYRO_CALIBRATION_LOOP_COUNT = 200
예제 #30
0
#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile


esquerda = Motor(Port.B, Direction.COUNTERCLOCKWISE)
direita = Motor(Port.C, Direction.COUNTERCLOCKWISE)
MotorMA = Motor(Port.A)
MotorMD = Motor(Port.D)
melhorSensor = GyroSensor(Port.S2)


# ev3 = EV3Brick()


gabriel = DriveBase(esquerda, direita, wheel_diameter=100,axle_track=166.2)


def Acelera(qp_max, qf):
    
    
    # dados iniciais ----------------------
    qi     =    0               # posição inicial (em mm)
    
    # primeiro cálculo
    Dq =  qf - qi           # variação da posição (distância, em mm)