USVLander/control.py

67 lines
2.4 KiB
Python

from pynput import keyboard
import time
class ManualControl:
def __init__(self, uav):
self.uav = uav
self.listener = keyboard.Listener(on_press=self.on_press, on_release=self.on_release)
def start(self):
self.listener.start()
def on_press(self, key):
try:
if key == keyboard.Key.up:
self.uav.for_back_velocity = 50
elif key == keyboard.Key.down:
self.uav.for_back_velocity = -50
elif key == keyboard.Key.left:
self.uav.left_right_velocity = -50
elif key == keyboard.Key.right:
self.uav.left_right_velocity = 50
elif key.char == 'w':
self.uav.up_down_velocity = 50
elif key.char == 's':
self.uav.up_down_velocity = -50
elif key.char == 'q':
self.uav.yaw_velocity = -50
elif key.char == 'e':
self.uav.yaw_velocity = 50
# print(f'left_right_velocity: {self.uav.left_right_velocity}, for_back_velocity: {self.uav.for_back_velocity}, up_down_velocity: {self.uav.up_down_velocity}, yaw_velocity: {self.uav.yaw_velocity}')
except AttributeError:
pass
def on_release(self, key):
try:
if key == keyboard.Key.up or key == keyboard.Key.down:
self.uav.for_back_velocity = 0
elif key == keyboard.Key.left or key == keyboard.Key.right:
self.uav.left_right_velocity = 0
elif key.char == 'w' or key.char == 's':
self.uav.up_down_velocity = 0
elif key.char == 'q' or key.char == 'e':
self.uav.yaw_velocity = 0
except AttributeError:
pass
class FakeUAV:
def __init__(self) -> None:
self.left_right_velocity = 0
self.for_back_velocity = 0
self.up_down_velocity = 0
self.yaw_velocity = 0
def send_rc_control(self, left_right_velocity, for_back_velocity, up_down_velocity, yaw_velocity):
print(f'left_right_velocity: {left_right_velocity}, for_back_velocity: {for_back_velocity}, up_down_velocity: {up_down_velocity}, yaw_velocity: {yaw_velocity}')
if __name__ == '__main__':
# uav = FakeUAV()
# manual_control=ManualControl(uav)
# manual_control.start()
# while True:
# time.sleep(0.05)
import logging
logging.info('aaa')