class ClientInterface(object): def __init__(self, host, port): self.camera_pos = (0.0, 0.0) self.wheel_speed = (0.0, 0.0) self.headlights = False self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.connect((host, port)) self.cs = ControlSocket(self.socket) self.oldcontrol = {} def __del__(self): self.socket.close() def setCameraPos(self, x, y): self.camera_pos = (x, y) def getCameraPos(self): return self.camera_pos def setWheelSpeed(self, l, r): self.wheel_speed = (l, r) def getWheelSpeed(self): return self.wheel_speed def setHeadlights(self, h): self.headlights = h def getHeadlights(self): return self.headlights def updateControl(self): newcontrol = {"left_motor" : self.wheel_speed[0], "right_motor" : self.wheel_speed[1]} if self.oldcontrol != newcontrol: self.cs.transmitControl(newcontrol) self.oldcontrol = newcontrol
sendcounter = 0 while (1): pygame.event.pump() pkeys = pygame.key.get_pressed() up, down, left, right, quit = [ (1.0 if pkeys[x] else 0.0) for x in [pygame.K_w, pygame.K_s, pygame.K_a, pygame.K_d, pygame.K_q] ] if quit > 0.5: break left_motor = clamp(up + right - left - down, -1, 1) / 2 + 0.5 right_motor = clamp(up + left - right - down, -1, 1) / 2 + 0.5 sendcounter += 1 if sendcounter > 5: cs.transmitControl({ "left_motor": left_motor, "right_motor": right_motor }) sendcounter = 0 clientsocket.close() pygame.quit() exit(0)