コード例 #1
0
 def __init__(self, debug_on=True, settings_file=SETTINGSFILE):
     """
     Initalize a griffy class which is based
     on move differential. Also set up the medium motors
     and all sensors.
     """
     super().__init__(LEFT_LARGE_MOTOR_PORT, RIGHT_LARGE_MOTOR_PORT, WHEEL_CLASS, WHEEL_DISTANCE)
     self.settings = Settings(settings_file)
     self.debug_on = self.settings.get('debug_on', debug_on)
     self.debug('Griffy started!')
     error = self.set_up_sensors_motors()
     if not error is None:
         # wait until user exits program!!
         self.debug(error)
         self.error_tone()
         while True:
             self.sleep_in_loop()
     self.calibrate_gyro(which_gyro_sensor='right')
     
     self.wheel_circumference = WHEEL_CIRCUMFERENCE
     self.attachment_tank = MoveTank(OUTPUT_A, OUTPUT_D, motor_class=MediumMotor)
     self.move_tank = MoveTank(OUTPUT_B, OUTPUT_C)
     self.read_light_from_settings() # read light from settings files via Settings class
     self.use_gyro = self.settings.get("use_gyro", USE_GYRO)
 
     self.start_tone() # A sound at the end to show when it is done.
コード例 #2
0
    def test_beep(self):
        print('Should beep 4 times, waits before driving')
        flip = 1

        s = Sound()
        tank_drive = MoveTank(OUTPUT_A, OUTPUT_D)

        for x in range(4):
            flip *= -1
            tank_drive.on_for_seconds(SpeedPercent(30 * flip),
                                      SpeedPercent(30 * flip), 1, True, True)
            s.beep()
        sleep(1)

        print('Should beep 4 times, sound plays during driving')
        s = Sound()
        tank_drive = MoveTank(OUTPUT_A, OUTPUT_D)
        flip = 1

        for x in range(4):
            flip *= -1
            tank_drive.on_for_seconds(SpeedPercent(30 * flip),
                                      SpeedPercent(30 * flip), 1, True, True)
            s.beep(play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
        sleep(3)
コード例 #3
0
    def __init__(self, *args, **kwargs):
        self.exposed_tank_left = MoveTank(LargeMotor(OUTPUT_A), LargeMotor(OUTPUT_B))
        self.exposed_tank_right = MoveTank(LargeMotor(OUTPUT_C), LargeMotor(OUTPUT_D))
        self.exposed_gyro_up = GyroSensor(INPUT_1)
        self.exposed_gyro_side = GyroSensor(INPUT_2)
        self.exposed_stop = TouchSensor(INPUT_3)

        super().__init__(*args, **kwargs)
コード例 #4
0
ファイル: firsttry.py プロジェクト: SIRDNARch/ev3
def main():
    while True:
        if ts.is_pressed:
            leds.set_color("LEFT", "GREEN")
            leds.set_color("RIGHT", "GREEN")
            tank_drive = MoveTank(OUTPUT_A, OUTPUT_B)
            tank_drive.on(SpeedPercent(100), SpeedPercent(100))
        else:
            leds.set_color("LEFT", "RED")
            leds.set_color("RIGHT", "RED")
            tank_drive = MoveTank(OUTPUT_A, OUTPUT_B)
            tank_drive.on(SpeedPercent(0), SpeedPercent(0))
コード例 #5
0
    def __init__(self):
        """
        Performs Alexa Gadget initialization routines and ev3dev resource allocation.
        """
        super().__init__()

        # Gadget state
        self.patrol_mode = False

        # Ev3dev initialization
        self.leds = Leds()
        self.sound = Sound()
        self.drive = MoveTank(OUTPUT_A,OUTPUT_A)  # Band """
        self.deliver = MoveTank(OUTPUT_B,OUTPUT_B) # Deliver """
コード例 #6
0
    def calibrate(self):

        colorsensor = [0,0,0]
        for i in [2]:
            colorsensor[i] = SpockbotsColorSensor(i)

        tank = MoveTank(OUTPUT_A, OUTPUT_B)
        tank.on(SpeedPercent(-5), SpeedPercent(-5))

        while True:

            txt = "exit"
            if button.check_buttons(buttons=['backspace']):
                break
            else:
                txt = "Press Backspace to Stop"

            #print("%s 2: %3d"  % ( txt, colorsensor[2].value(), "\n"))

            for i in [2]:
                colorsensor[i].set_white()
                colorsensor[i].set_black()

        tank.off()

        f= open("colcal2.txt","w+")
        f.write("%3d, %3d" % (colorsensor[2].black, colorsensor[2].white))
        f.close()
        return colorsensor
コード例 #7
0
    def calibrate(self):
        tank = MoveTank(OUTPUT_A, OUTPUT_B)
        tank.on(SpeedPercent(-5), SpeedPercent(-5))

        while True:

            txt = "exit"
            if button.check_buttons(buttons=['backspace']):
                break
            else:
                txt = "Press Backspace to Stop"

            #print("%s 2: %3d"  % ( txt, colorsensor[2].value(), "\n"))

            for i in [2,3,4]:
                colorsensor[i].set_white()
                colorsensor[i].set_black()

        tank.off()

        f= open("color_calibrate.txt","w")
        for i in [2,3,4]:
            f.write(colorsensor[i].black)
            f.write(colorsensor[i].white)
        f.close()
コード例 #8
0
    def __init__(
        self,
        left_motor_port: str = OUTPUT_B,
        right_motor_port: str = OUTPUT_C,
        motor_class=LargeMotor,
        polarity: str = Motor.POLARITY_NORMAL,
        ir_sensor_port: str = INPUT_4,
        # sites.google.com/site/ev3devpython/learn_ev3_python/using-sensors
        ir_beacon_channel: int = 1):
        self.left_motor = LargeMotor(address=left_motor_port)
        self.right_motor = LargeMotor(address=right_motor_port)

        self.tank_driver = \
            MoveTank(
                left_motor_port=left_motor_port,
                right_motor_port=right_motor_port,
                motor_class=motor_class)

        self.steer_driver = \
            MoveSteering(
                left_motor_port=left_motor_port,
                right_motor_port=right_motor_port,
                motor_class=motor_class)

        self.left_motor.polarity = self.right_motor.polarity = \
            self.tank_driver.left_motor.polarity = \
            self.tank_driver.right_motor.polarity = \
            self.steer_driver.left_motor.polarity = \
            self.steer_driver.right_motor.polarity = polarity

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.tank_drive_ir_beacon_channel = ir_beacon_channel
コード例 #9
0
 def __init__(self, motor_izquierdo, motor_derecho, diametro_rueda,
              separacion_ruedas):
     self._motor_izquierdo = Motor(motor_izquierdo)
     self._motor_derecho = Motor(motor_derecho)
     self._dos_motores = MoveTank(motor_izquierdo, motor_derecho)
     self._radio = diametro_rueda / 2
     self._sruedas = separacion_ruedas
コード例 #10
0
 def __init__(self):
     self.leds = Leds()
     self.tank_drive = MoveTank(OUTPUT_A, OUTPUT_B)
     self.tank_drive.set_polarity(LargeMotor.POLARITY_INVERSED)
     self.color = ColorSensor()
     self.ultra = UltrasonicSensor()
     self.sound = Sound()
コード例 #11
0
    def __init__(self):
        """
        Performs Alexa Gadget initialization routines and ev3dev resource allocation.
        """
        super().__init__()

        # Robot state
        self.patrol_mode = False
        self.enemy_not_detected = True
        print("+++++ self.patrol_mode = {} y self.enemy_not_detected = {}".
              format(self.patrol_mode, self.enemy_not_detected))
        self.positionX = 0
        self.positionY = 0
        self.direction = ['forward', 'right', 'backward', 'left']
        self.offset = [0, 1, 0, -1]
        self.index = 0
        self.pointing = self.direction[self.index]

        # Connect two large motors on output ports B and C
        self.drive = MoveTank(OUTPUT_B, OUTPUT_C)
        self.weapon = MediumMotor(OUTPUT_A)
        self.sound = Sound()
        self.leds = Leds()
        self.ir = InfraredSensor()

        # Start threads
        threading.Thread(target=self._patrol_thread, daemon=True).start()
        threading.Thread(target=self._proximity_thread, daemon=True).start()
コード例 #12
0
    def __init__(self):
        """
        Performs Alexa Gadget initialization routines and ev3dev resource allocation.
        """
        super().__init__()

        # Gadget state
        self.in_progress = False

        # Ev3dev initialization
        self.leds = Leds()
        self.sound = Sound()
        self.drive = MoveTank(OUTPUT_B, OUTPUT_A)
        self.stick = MediumMotor(OUTPUT_C)
        self.cs = ColorSensor(INPUT_4)
        self.cs.mode = 'COL-REFLECT'
        self.floor_light = self.cs.value()
        print("floor light intensity = {}".format(self.floor_light))
        self.speed = 20
        self.kickAngle = 170
        paho.Client.connected_flag = False
        self.client = paho.Client()
        self.client.loop_start()
        self.client.on_connect = self.mqtt_connected
        self.client.connect('broker.hivemq.com', 1883)
        while not self.client.connected_flag:
            time.sleep(1)

        self.client.subscribe('/hockeybot/game/over')
        self.client.on_message = self.mqtt_on_message

        # Start threads
        threading.Thread(target=self.check_for_obstacles_thread,
                         daemon=True).start()
コード例 #13
0
def follow_path(path):
    current_x = 0
    current_y = 0

    sensor_motor = MediumMotor(OUTPUT_D)
    tank = MoveTank(OUTPUT_B, OUTPUT_C)

    print("Length of path: " + str(len(path)))

    y_off = path[-1].y - path[0].y + 1
    tank.on_for_degrees(-10, -10, 38 * y_off)

    i = 0
    for p in path:
        print(str(i) + "'th: " + str(current_x), str(current_y))

        x_off = p.x - current_x
        y_off = p.y - current_y

        if x_off > 0:
            sensor_motor.on_for_degrees(20, 55)
        elif x_off < 0:
            sensor_motor.on_for_degrees(-20, 55)

        if y_off > 0:
            tank.on_for_degrees(10, 10, 38)
        elif y_off < 0:
            tank.on_for_degrees(-10, -10, 38)

        current_x = p.x
        current_y = p.y
        i += 1
コード例 #14
0
ファイル: Robot.py プロジェクト: xlbingo10/EeveeThree
 def __init__(self, sensorList=[]):
     try:
         self.tank = MoveTank(OUTPUT_B, OUTPUT_C)
         self.outputList = [OUTPUT_B, OUTPUT_C]
     except:
         self.tank = None
     try:
         self.cs = ColorSensor()
     except:
         self.cs = None
     try:
         self.gyro = GyroSensor()
     except:
         self.gyro = None
     try:
         self.ultrasonicSensor = UltrasonicSensor()
     except:
         self.ultrasonicSensor = None
     try:
         self.large = LargeMotor(OUTPUT_D)
         self.outputList.append(OUTPUT_D)
     except:
         self.large = None
     try:
         self.medium = MediumMotor(OUTPUT_D)
         self.outputList.append(OUTPUT_D)
     except:
         self.medium = None
コード例 #15
0
ファイル: gyroRotate.py プロジェクト: nshenoy/ev3-python
def gyroRotateAbsoluteAngle():
    """Test code for rotating using the gyror"""
    tank_drive = MoveTank(OUTPUT_A, OUTPUT_D)
    gyro = GyroSensor()
    logger = logToDisplay()

    for sleepTime in [2, 0.5]:
        gyro.mode = 'GYRO-RATE'
        gyro.mode = 'GYRO-ANG'
        sleep(sleepTime)

    startingAngle = gyro.angle
    endingAngle = 90

    while True:
        currentAngle = gyro.angle
        logger.log("Current angle {}".format(currentAngle))
        if (currentAngle >= endingAngle - 2
                and currentAngle <= endingAngle + 2):
            tank_drive.stop()
            break
        elif (currentAngle > endingAngle):
            leftSpeed = SpeedPercent(-5)
            rightSpeed = SpeedPercent(5)
        else:
            leftSpeed = SpeedPercent(5)
            rightSpeed = SpeedPercent(-5)

        tank_drive.on(leftSpeed, rightSpeed)

        sleep(0.1)
コード例 #16
0
def main():
    gy = GyroSensor()
    mB = LargeMotor('outB')
    mC = LargeMotor('outC')
    cl = ColorSensor()
    ts = TouchSensor()
    lcd = Screen()
    btn = Button()

    while not btn.any():  # While no (not any) button is pressed.
        sleep(0.01)  # Wait 0.01 second

        Sound.beep().wait()

    tank_drive = MoveTank(OUTPUT_B, OUTPUT_C)

    # telling it what colors it can see
    cl.mode = 'COL-COLOR'
    colors = ('', 'black', 'blue', 'green', 'yellow', 'red', 'white', 'brown')
    # always checking for color
    while True:
        print(colors[cl.value()])
        #what to do when color seen, when see blue it say on screen blue
        sleep(1)
        if colors[cl.value()] == "red":
            tank_drive.on_for_rotations(SpeedPercent(100), SpeedPercent(100),
                                        10)
            tank_drive.on_for_rotations(SpeedPercent(-50), SpeedPercent(-50),
                                        3)
コード例 #17
0
 def __init__(self, motor_izquierdo, motor_derecho, radio_rueda,
              separacion_ruedas):
     self.motor_izquierdo = Motor(motor_izquierdo)
     self.motor_derecho = Motor(motor_derecho)
     self.dos_motores = MoveTank(motor_izquierdo, motor_derecho)
     self.radio = radio_rueda
     self.sruedas = separacion_ruedas
コード例 #18
0
def initmotors():

    lw = Motor(OUTPUT_C)
    rw = Motor(OUTPUT_B)

    # for x in (lw,rw):
    #     x.polarity = 'inversed'
    #     x.ramp_up_sp = 2000
    #     x.ramp_down_sp = 2000

    # lw.polarity = 'inversed'
    # rw.polarity = 'inversed'

    lw.ramp_up_sp = 2000
    rw.ramp_up_sp = 2000

    lw.ramp_down_sp = 1000
    rw.ramp_down_sp = 1000

    global mdiff
    global mtank

    mdiff = MoveDifferential(OUTPUT_C, OUTPUT_B, MCTire, 129.3)
    mtank = MoveTank(OUTPUT_C, OUTPUT_B)
    mtank.gyro = GyroSensor()
    mdiff.set_polarity('inversed')
コード例 #19
0
    def __init__(self,
                 jaw_motor_port: str = OUTPUT_A,
                 left_motor_port: str = OUTPUT_B,
                 right_motor_port: str = OUTPUT_C,
                 touch_sensor_port: str = INPUT_1,
                 color_sensor_port: str = INPUT_3,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        self.jaw_motor = MediumMotor(address=jaw_motor_port)

        self.left_motor = LargeMotor(address=left_motor_port)
        self.right_motor = LargeMotor(address=right_motor_port)
        self.tank_driver = MoveTank(left_motor_port=left_motor_port,
                                    right_motor_port=right_motor_port,
                                    motor_class=LargeMotor)
        self.steer_driver = MoveSteering(left_motor_port=left_motor_port,
                                         right_motor_port=right_motor_port,
                                         motor_class=LargeMotor)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)
        self.color_sensor = ColorSensor(address=color_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.speaker = Sound()

        self.roaring = False
        self.walk_speed = self.NORMAL_WALK_SPEED
コード例 #20
0
    def __init__(self):

        super().__init__()
        
        self.leds = Leds()
        self.sound = Sound()
        self.tank = MoveTank(OUTPUT_A, OUTPUT_D)
コード例 #21
0
    def __init__(self,
                 left_foot_motor_port: str = OUTPUT_B,
                 right_foot_motor_port: str = OUTPUT_C,
                 bazooka_blast_motor_port: str = OUTPUT_A,
                 touch_sensor_port: str = INPUT_1,
                 color_sensor_port: str = INPUT_3,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        super().__init__(left_motor_port=left_foot_motor_port,
                         right_motor_port=right_foot_motor_port,
                         polarity=Motor.POLARITY_NORMAL,
                         speed=1000,
                         channel=ir_beacon_channel)

        self.tank_driver = MoveTank(left_motor_port=left_foot_motor_port,
                                    right_motor_port=right_foot_motor_port,
                                    motor_class=LargeMotor)

        self.bazooka_blast_motor = MediumMotor(
            address=bazooka_blast_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)
        self.color_sensor = ColorSensor(address=color_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.leds = Leds()
        self.speaker = Sound()
コード例 #22
0
def main():
    Sound.speak("").wait()
    MA = MediumMotor("")
    MB = LargeMotor("outB")
    MC = LargeMotor("outC")
    MD = MediumMotor("")
    GY = GyroSensor("")
    C3 = ColorSensor("")
    C4 = ColorSensor("")

    GY.mode = 'GYRO-ANG'
    GY.mode = 'GYRO-RATE'
    GY.mode = 'GYRO-ANG'
    tank_drive = MoveTank(OUTPUT_B, OUTPUT_C)
    loop_gyro = 0
    gyro_adjust = 1
    # change this to whatever speed what you want
    left_wheel_speed = -300
    right_wheel_speed = -300
    # change the loop_gyro verses the defined value argument to however far you want to go
    # if Gyro value is the same as the starting value, go straight, if more turn right, if less turn left
    # change the value to how far you want the robot to go
    while MB.position > -160:
        if GY.value() == 0:
            left_wheel_speed = -300
            right_wheel_speed = -300
            MB.run_forever(speed_sp=left_wheel_speed)
            MC.run_forever(speed_sp=right_wheel_speed)
            gyro_adjust = 12
        else:
            if GY.value() > 0:
                correct_rate = abs(
                    GY.value()
                )  # This captures the gyro value at the beginning of the statement
                left_wheel_speed = left_wheel_speed + gyro_adjust
                right_wheel_speed = right_wheel_speed - gyro_adjust
                MB.run_forever(speed_sp=left_wheel_speed)
                MC.run_forever(speed_sp=right_wheel_speed)
                left_wheel_speed = -300
                right_wheel_speed = -300
                if abs(
                        GY.value()
                ) > correct_rate:  # If gyro value has worsened despite the correction then change the adjust variable for next time
                    gyro_adjust = gyro_adjust + 1
            else:
                correct_rate = abs(
                    GY.value())  # Same idea as the other if statement
                right_wheel_speed = right_wheel_speed + gyro_adjust
                left_wheel_speed = left_wheel_speed - gyro_adjust
                MB.run_forever(speed_sp=left_wheel_speed)
                MC.run_forever(speed_sp=right_wheel_speed)
                left_wheel_speed = -300
                right_wheel_speed = -300
                if abs(GY.value()) > correct_rate:
                    gyro_adjust = gyro_adjust + 1


# stop all motors
    MB.stop(stop_action="hold")
    MC.stop(stop_action="hold")
コード例 #23
0
ファイル: DriveTrain.py プロジェクト: julian-steiner/WRO2020
 def __init__(self):
     self.rc = RobotContainer.RobotContainer()
     self.driveColorLeft = ColorSensor(self.rc.DRIVE_COLOR_LEFT)
     self.driveColorRight = ColorSensor(self.rc.DRIVE_COLOR_RIGHT)
     self.driveLeft = LargeMotor(self.rc.DRIVE_LEFT)
     self.driveRight = LargeMotor(self.rc.DRIVE_RIGHT)
     self.tank_drive = MoveTank(self.rc.DRIVE_LEFT, self.rc.DRIVE_RIGHT)
コード例 #24
0
 def __init__(self):
     self.server_address = (str(sys.argv[1]), 5000)
     self.sensor = InfraredSensor()
     self.motor = MediumMotor(OUTPUT_D)
     self.drive_motor = MoveTank(OUTPUT_B, OUTPUT_C)
     self.turn_motor = MoveSteering(OUTPUT_B, OUTPUT_C)
     self.moved = 0
     self.turned = 0
コード例 #25
0
def drive():
    while (line_black):
        tank_drive = MoveTank(OUTPUT_A, OUTPUT_B)
        tank_drive.on_for_rotations(SpeedPercent(80), SpeedPercent(80), 10)
        if (lcolor.color != 1 or mcolor.color != 1 or rcolor.color != 1):
            line_black == False
    if (line_black == False):
        test()
コード例 #26
0
 def __init__(self):
     self.shut_down = False
     # self.claw_motor
     # self.left_motor = LargeMotor('outB')
     # self.right_motor = LargeMotor('outC')
     self.both_motors = MoveTank('outB', 'outC')
     self.cs = ColorSensor()
     self.irs = InfraredSensor()
コード例 #27
0
 def __init__(self):
     print("Hockey Bot initialized")
     self.bat = MediumMotor(OUTPUT_C)
     self.cs = ColorSensor(INPUT_2)
     self.cs.mode = 'COL-REFLECT'
     self.us = UltrasonicSensor(INPUT_1)
     self.drive = MoveTank(OUTPUT_A, OUTPUT_B)
     self.stop = False
     self.kickAngle = 180
コード例 #28
0
ファイル: examples.py プロジェクト: villeloh/joker_ii
def main():
    '''The main function of our program'''

    setup_brick_console()
    battery_check()

    mt = MoveTank(OUTPUT_D, OUTPUT_A)  # control the two motors at once
    # drive motor in A port at 50 % max speed, motor in port B at 75% max speed for 10 seconds
    mt.on_for_seconds(-75, 0, 2)
コード例 #29
0
ファイル: level1.py プロジェクト: Agervig/Sokoban
 def __init__(self):
     self.tank_pair = MoveTank(OUTPUT_A, OUTPUT_B)
     self.steer_pair = MoveSteering(OUTPUT_A, OUTPUT_B)
     self.line_sensor = ColorSensor(INPUT_2)
     self.line_counter = ColorSensor(INPUT_3)
     self.sound = Sound()
     self.gyro = GyroSensor(INPUT_1)
     self.gyro.reset()
     self.dir_state = "S"
コード例 #30
0
ファイル: 27.11.test.py プロジェクト: Apegit/Tardis
def drive():
    while (line_black):
        tank_drive = MoveTank(OUTPUT_A, OUTPUT_B)
        tank_drive.on_for_rotations(SpeedPercent(80), SpeedPercent(80), 1)
        if (lcolor.reflected_light_intensity > 20 or mcolor.color != 1
                or rcolor.reflected_light_intensity > 20):
            line_black == False
    if (line_black == False):
        test()