Beispiel #1
0
def main(motors_id: tuple):
    ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.OFF))
    ser.read()
    for motorx in protocol.Motors:
        ser.write(
            protocol.generate_manual_speed_command(
                motorx, 1, protocol.MotorsDirection.FORWARD))
    consigne = []
    retroaction = []
    if ROTATION_TEST == True:
        rotation_test(motors_id, consigne, retroaction)
    else:
        direction_test(motors_id, consigne, retroaction)
    ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.ON))

    for motorx in protocol.Motors:
        ser.write(
            protocol.generate_manual_speed_command(
                motorx, 1, protocol.MotorsDirection.FORWARD))

    with open(fname + '.csv', 'w') as f:
        writer = csv.writer(f, delimiter=',')
        writer.writerow(consigne)
        writer.writerow(retroaction)

    print("Finish")
def set_motor_to_keyboard_speed(speed_x, speed_y):
    x_motors = (protocol.Motors.FRONT_X, protocol.Motors.REAR_X)
    y_motors = (protocol.Motors.FRONT_Y, protocol.Motors.REAR_Y)

    for motor_id in x_motors:
        ser.write(protocol.generate_manual_speed_command(motor_id, speed_x))
    for motor_id in y_motors:
        ser.write(protocol.generate_manual_speed_command(motor_id, speed_y))
Beispiel #3
0
def set_consigne(cmd, companion_id, companion_direction, main_id,
                 main_direction):
    ser.write(
        protocol.generate_manual_speed_command(main_id, cmd, main_direction))
    ser.read(2)
    ser.write(
        protocol.generate_manual_speed_command(companion_id, COMPANION_COMMAND,
                                               companion_direction))
    ser.read(2)
Beispiel #4
0
def main():
    ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.OFF))
    ser.read(1)

    motorx = protocol.Motors.FRONT_X
    pwm = 50
    motor_dir = protocol.MotorsDirection.FORWARD
    ser.write(protocol.generate_manual_speed_command(motorx, pwm, motor_dir))
    print_code(HEADER_W, ser)
    print_code(PAYLOAD_W, ser)
    ser.write(protocol.generate_set_pid_mode(protocol.PIDStatus.OFF))
    ser.read(ser.in_waiting())
def update_all_motor_cmd(speed, direction):
    for motor_id in protocol.Motors:
        ser.write(
            protocol.generate_manual_speed_command(motor_id, speed, direction))
        time.sleep(DEFAULT_COMM_SLEEP)
def all_motors(screen):
    ser.read(ser.inWaiting())
    screen.clear()
    screen.addstr("Vitesse: ")
    screen.nodelay(False)
    curses.echo()
    try:
        speed = int(screen.getstr(3))
    except ValueError:
        speed = DEFAULT_SPEED

    screen.addstr(1, 0, "Direction (f|b): ")
    try:
        dir_key = screen.getkey()
        direction = directions[dir_key]
    except KeyError:
        direction = DEFAULT_DIRECTION

    screen.nodelay(True)
    curses.noecho()
    screen.clear()
    for motor_id in protocol.Motors:
        ser.write(
            protocol.generate_manual_speed_command(motor_id, speed, direction))
        ser.read(1)
        time.sleep(DEFAULT_COMM_SLEEP)

    sub_run = True
    while sub_run:
        try:
            user_key = screen.getkey()
        except curses.error:
            user_key = -1

        draw_all_motor_menu(direction, screen, speed)

        if user_key in ['q', 'Q', 'c', 'C']:
            sub_run = False
        elif user_key == 's':
            screen.nodelay(False)
            curses.echo()
            screen.clear()
            try:
                speed = int(screen.getstr(3))
            except ValueError:
                pass
            screen.nodelay(True)
            curses.noecho()
            update_all_motor_cmd(speed, direction)
            draw_all_motor_menu(direction, screen, speed)
        elif user_key == 'd':
            screen.nodelay(False)
            curses.echo()
            screen.clear()
            try:
                dir_key = screen.getkey()
                direction = directions[dir_key]
            except KeyError:
                pass
            screen.nodelay(True)
            curses.noecho()
            update_all_motor_cmd(speed, direction)
            draw_all_motor_menu(direction, screen, speed)

    for motor_id in protocol.Motors:
        ser.write(
            protocol.generate_manual_speed_command(motor_id, 0, direction))
        time.sleep(DEFAULT_COMM_SLEEP)

    return None
def motor(screen):
    global directions
    screen.nodelay(False)
    screen.clear()
    curses.echo()
    screen.addstr("ID du moteur [1-4]: ")
    motor_id = int(screen.getkey())
    motor_id = motors_id[motor_id]
    screen.addstr(1, 0, "Vitesse du moteur [0-100]: ")
    try:
        speed = int(screen.getstr(3))
    except ValueError:
        speed = DEFAULT_SPEED
    screen.addstr(2, 0, "Direction [f|b]: ")
    try:
        dir_key = screen.getkey()
        direction = directions[dir_key]
    except KeyError:
        direction = DEFAULT_DIRECTION

    curses.noecho()
    screen.clear()
    screen.nodelay(True)

    ser.write(
        protocol.generate_manual_speed_command(motor_id, speed, direction))
    sub_run = True
    while sub_run:
        ser.read(ser.inWaiting())
        time.sleep(0.050)
        screen.clear()
        motor_speed = read_encoder(motor_id, ser)
        draw_motor_menu(direction, motor_speed, screen, speed)
        try:
            user_key = screen.getkey()
        except curses.error:
            user_key = -1

        if user_key in ['c', 'C', 'q', 'Q']:
            sub_run = False
        elif user_key in ['s', 'S']:
            screen.nodelay(False)
            screen.clear()
            curses.echo()
            try:
                screen.move(0, 0)
                speed = int(screen.getstr(3))
            except ValueError:
                screen.addstr(4, 0, "La vitesse doit etre un nombre valide.")
            curses.noecho()
            screen.nodelay(True)
        elif user_key in ['d', 'D']:
            screen.nodelay(False)
            screen.clear()
            curses.echo()
            try:
                screen.move(0, 0)
                dir_key = screen.getkey()
                direction = directions[dir_key]
            except KeyError:
                screen.addstr(4, 0,
                              "La direction doit etre soit 'c' ou soit 'cc'.")
            curses.noecho()
            screen.nodelay(True)

    ser.write(protocol.generate_manual_speed_command(motor_id, 0, direction))

    return None