Как я могу разделить управление для каждого джойстика - PullRequest
0 голосов
/ 21 июня 2019

Я работаю с 2-мя колесными роботами, которые должны управляться с джойстика, но на самом деле у меня есть джойстик, и 2 робота. Следующий код для управления одним роботом (я еще не закончил) и там у меня есть вопрос. Как я могу разделить управление для каждого робота, вы знаете, что я могу управлять одним с первого джойстика и двумя с другого джойстика. Я не могу создать специальное условие для каждого джойстика.

import socket
import pygame
import time
import pygame.joystick

pygame.init()
pygame.display.set_mode((640, 480))

rc_socket = socket.socket()
rc_socket_2 = socket.socket()

try:
    rc_socket.connect(('192.168.1.102', 1234)) # connect to robot
    rc_socket_2.connect(("192.168.1.101",1234))
except socket.error:
    print("could not connect to socket")

joystick_count = pygame.joystick.get_count()
for index in range(joystick_count):
    joystick = pygame.joystick.Joystick(index)
    joystick.init()
    print('{0}, {1}'.format(index, joystick.get_name()))







while True:
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.JOYAXISMOTION:
            joy = event.joy
            axis = event.axis
            value = event.value

            if axis == 1:
                if abs(value) >= 0.2:
                    u1 = value
                    u2 = value
                    rc_socket.send('({},{})\n'.format(u1, u2).encode())
                    # print('({},{})\n'.format(u1, u2))
                    print(value)
            else:
                u1 = u2 = 0
                rc_socket.send('({},{})\n'.format(u1, u2).encode())
                # print('({},{})\n'.format(u1, u2))
                print("{} -> sending (0,0)".format(value))



    if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                u1 = -1.0
                u2 = 1.0
                print("turn left: ({},{})".format(u1, u2))
            elif event.key == pygame.K_RIGHT:
                u1 = 1.0
                u2 = -1.0
                print("turn right: ({},{})".format(u1, u2))
            elif event.key == pygame.K_UP:
                u1 = 1.0
                u2 = 1.0
                print("forward: ({},{})".format(u1, u2))
            elif event.key == pygame.K_DOWN:
                u1 = -1.0
                u2 = -1.0
                print("forward: ({},{})".format(u1, u2))
            rc_socket_2.send('({},{})\n'.format(u1, u2).encode())
    elif event.type == pygame.KEYUP:
        u1 = 0
        u2 = 0
        print("key released, resetting: ({},{})".format(u1, u2))
        rc_socket_2.send('({},{})\n'.format(u1, u2).encode())
...