Exemple #1
0
    def test_follow_line(self):
        test_args = ["program", "-t", "config_small"]
        with patch.object(sys, 'argv', test_args):
            sim = Process(target=__main__.main, daemon=True)
            sim.start()
            cs.client_socket = None

        sleep(9)
        from ev3dev2.sensor.lego import ColorSensor
        tank = MoveTank(OUTPUT_A, OUTPUT_D)
        tank.cs = ColorSensor(INPUT_2)
        try:
            # Follow the line for 4500ms
            tank.follow_line(
                kp=11.3/4, ki=0.05/4, kd=3./4,
                speed=SpeedPercent(10),
                follow_for=follow_for_ms,
                ms=14500,
                target_light_intensity=50
            )
        except Exception:
            tank.stop()
            raise
Exemple #2
0
#   DEFINIÇÕES

ent_motor_esq = OUTPUT_C
ent_motor_dir = OUTPUT_D
ent_motor_grande = OUTPUT_B
ent_motor_medio = OUTPUT_A

ent_sc_esq = INPUT_3
ent_sc_dir = INPUT_4
ent_us_lat = INPUT_2
ent_us_fr = INPUT_1

steering_pair = MoveSteering(ent_motor_esq, ent_motor_dir)
tank = MoveTank(ent_motor_esq, ent_motor_dir)
tank.cs = ColorSensor(ent_sc_esq)
garra_g = LargeMotor(ent_motor_grande)
garra_m = MediumMotor(ent_motor_medio)

cor_esq = ColorSensor(ent_sc_esq)
cor_dir = ColorSensor(ent_sc_dir)
usl = UltrasonicSensor(ent_us_lat)
usf = UltrasonicSensor(ent_us_fr)

sound = Sound()
btn = Button()

#Funções

#Cor
#Locomoção
            log.info("%s: %s %s, left motor moved %s (NEW MIN)" % (tank, kx_to_tweak, kx, delta_left_motor_pos))
        else:
            log.info("%s: %s %s, left motor moved %s" % (tank, kx_to_tweak, kx, delta_left_motor_pos))

    tank.stop()
    return min_delta_kx


if __name__ == "__main__":

    # logging
    logging.basicConfig(level=logging.DEBUG, format="%(asctime)s %(levelname)5s: %(message)s")
    log = logging.getLogger(__name__)

    tank = MoveTank(OUTPUT_A, OUTPUT_B)
    tank.cs = ColorSensor()

    speed = SpeedPercent(30)

    # Find the best integer for kp (in increments of 1) then fine tune by
    # finding the best float (in increments of 0.1)
    kp = find_kp_ki_kd(tank, 1, 20, 1, speed, 'kp', 0, 0, 0)
    kp = find_kp_ki_kd(tank, kp - 1, kp + 1, 0.1, speed, 'kp', kp, 0, 0)
    print("\n\n\n%s\nkp %s\n%s\n\n\n" % ("" * 10, kp, "*" * 10))

    # Find the best float ki (in increments of 0.1)
    ki = find_kp_ki_kd(tank, 0, 1, 0.1, speed, 'ki', kp, 0, 0)
    print("\n\n\n%s\nki %s\n%s\n\n\n" % ("" * 10, ki, "*" * 10))

    # Find the best integer for kd (in increments of 1) then fine tune by
    # finding the best float (in increments of 0.1)
from ev3dev2.motor import OUTPUT_A, OUTPUT_B, MoveTank, SpeedPercent, follow_for_ms, follow_for_forever
from ev3dev2.sensor.lego import ColorSensor
from ev3dev2.sound import Sound
from ev3dev2.display import Display
from ev3dev2.button import Button
from time import sleep, time
import threading
import os

speeker = Sound()
tank = MoveTank(OUTPUT_A, OUTPUT_B)
cs = ColorSensor()
tank.cs = cs
screen = Display()
button = Button()

# os.system('setfont CyrAsia-Terminus12x6')


def color_find(endtime):
    start_time = time()
    triggerd = False
    while True:
        if cs.color == 5:
            speeker.beep()
            tank.stop()
            sleep(1)
            exit()
        if time() - start_time >= endtime and not triggerd:
            tank.stop()
            speeker.beep()
from ev3dev2.motor import OUTPUT_A, OUTPUT_B, MoveTank, SpeedPercent, follow_for_ms
from ev3dev2.sensor.lego import ColorSensor
import ev3dev.ev3 as ev3
import signal

tank = MoveTank(OUTPUT_A, OUTPUT_B)

colorSensorFollow = ev3.ColorSensor('in4')
colorSensorStop = ev3.ColorSensor('in3')
assert colorSensorFollow.connected, "LightSensorFollow(ColorSensor) is not connected"
assert colorSensorStop.connected, "LightSensorFollow(ColorSensor) is not connected"

tank.cs = colorSensorFollow

# setup gracefully shutdown
def signal_handler(sig, frame):
    tank.stop()
    print('Shutting down gracefully')
    exit(0)


signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C to exit')

# Follow the line for 4500ms
while (colorSensorStop.value() > 40):
    tank.follow_line(
        kp=1, ki=0, kd=0,
        speed=SpeedPercent(10),
        target_light_intensity=37,
        follow_left_edge = False,
Exemple #6
0
#   DEFINIÇÕES

ent_motor_esq = OUTPUT_C
ent_motor_dir = OUTPUT_D
ent_motor_grande = OUTPUT_B
ent_motor_medio = OUTPUT_A

ent_sc_esq = INPUT_3
ent_sc_dir = INPUT_4
ent_us_lat = INPUT_2
ent_us_fr = INPUT_1

steering_pair = MoveSteering(ent_motor_esq, ent_motor_dir)
tank_pair = MoveTank(ent_motor_esq, ent_motor_dir)
tank_pair.cs = ColorSensor(ent_sc_esq)
garra_g = LargeMotor(ent_motor_grande)
garra_m = MediumMotor(ent_motor_medio)

cor_esq = ColorSensor(ent_sc_esq)
cor_dir = ColorSensor(ent_sc_dir)
usl = UltrasonicSensor(ent_us_lat)
usf = UltrasonicSensor(ent_us_fr)

sound = Sound()
btn = Button()

#   FUNÇÕES

def distancia(sensor):
    a1 = sensor.distance_centimeters
Exemple #7
0
#!/usr/bin/env python3

from time import sleep
from ev3dev2.sound import Sound
from ev3dev2.motor import OUTPUT_A, OUTPUT_D, OUTPUT_B, OUTPUT_C, LargeMotor, MediumMotor, SpeedPercent, MoveTank, MoveDifferential, follow_for_ms
from ev3dev2.sensor import INPUT_1, INPUT_2, INPUT_3, INPUT_4
from ev3dev2.sensor.lego import ColorSensor
from ev3dev2.button import *
from ev3dev2.wheel import EV3Tire
from ev3dev2.sound import Sound

#initiate all motors sensors etc.
# this is common so that it is controlled in one place and everyone uses the same names for motors etc.
STUD_MM = 8
mdiff = MoveDifferential(OUTPUT_A, OUTPUT_D, EV3Tire, 16 * STUD_MM)
tank = MoveTank(OUTPUT_A, OUTPUT_D)
leftMotor = LargeMotor(OUTPUT_A)
rightMotor = LargeMotor(OUTPUT_D)
medMotor = MediumMotor(OUTPUT_C)
medMotor2 = MediumMotor(OUTPUT_B)
tank.cs = ColorSensor(INPUT_3)
color1 = ColorSensor(INPUT_1)
color2 = ColorSensor(INPUT_2)
color3 = ColorSensor(INPUT_3)
color4 = ColorSensor(INPUT_4)
btn = Button()
sound = Sound()
Exemple #8
0
#!/usr/bin/env micropython

from ev3dev2.motor import LargeMotor, OUTPUT_C, OUTPUT_B, follow_for_ms
from ev3dev2.motor import SpeedDPS, SpeedRPM, SpeedRPS, SpeedDPM, MoveTank, MoveSteering, SpeedPercent
from time import sleep
from ev3dev2.sensor.lego import ColorSensor
from ev3dev2.sensor import INPUT_1, INPUT_2, INPUT_3, INPUT_4

lmB = LargeMotor(OUTPUT_B)
lmC = LargeMotor(OUTPUT_C)

# lmB.on_for_seconds(90, 1, True, False)
# lmC.on_for_seconds(90, 1)

tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)

#tank_pair.on_for_seconds(50,50,1)
#tank_pair.on_for_seconds(-50,-50,1)
tank_pair.cs = ColorSensor(INPUT_1)
tank_pair.follow_line(kp=11.3,
                      ki=0.05,
                      kd=3.2,
                      speed=SpeedPercent(5),
                      follow_for=follow_for_ms,
                      ms=9000)
Exemple #9
0
#!/usr/bin/env python3
from ev3dev2.motor import Motor, MediumMotor, LargeMotor, OUTPUT_B, OUTPUT_C, SpeedPercent, MoveTank, follow_for_forever
from ev3dev2.sensor.lego import ColorSensor

lifting_motor = MediumMotor('outA')
left_motor = OUTPUT_B
right_motor = OUTPUT_C
tank_drive = MoveTank(left_motor, right_motor)

# Setpoints
speed = 15
tank_drive.cs = ColorSensor()


def move(move_dir):
    if move_dir == 'forward':
        tank_drive.on(SpeedPercent(speed), SpeedPercent(speed))
    if move_dir == 'reverse':
        tank_drive.on(SpeedPercent(-speed), SpeedPercent(-speed))
    elif move_dir == '':
        tank_drive.off()


def turn(turn_dir, custom_turn_degree=0):
    left_turn_degree = 420
    right_turn_degree = 420
    u_turn_degree = 360
    # Turn on left and right motor with defined speed for defined rotations
    if turn_dir == 'left':
        tank_drive.on(SpeedPercent(0), SpeedPercent(speed))
    elif turn_dir == 'right':