67 lines
2.4 KiB
Python
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')
|