728x90
키보드의 키를 활용해서 드론을 조종해보겠습니다. keyboard모듈을 이용합니다. pip install keyboard를 해서 keyboard를 설치합니다.
기본 사용
from time import sleep
import keyboard
while True:
print(keyboard.read_key()) # 어떤키를 눌렀는지 확인
sleep(0.01)
if keyboard.is_pressed('esc'): # "키" 누르면
break # 반복문 빠져나옴
sleep(0.01)
print("esc키를 눌렀습니다.") # 출력문
- keyboard.read_key() : 어떤 키를 눌렀는지 확인합니다.
- keyboard.is_pressed('esc'): : 키를 눌렀다면 True와 False를 사용합니다.
- break : 반복문을 빠져나옵니다.
키보드 조종
from time import sleep
from e_drone.drone import *
from e_drone.protocol import *
import keyboard
while True:
if keyboard.is_pressed("1"):
print("이륙")
sleep(1)
drone.sendTakeOff()
sleep(1)
drone.sendControlWhile(0, 0, 0, 0, 2000)
elif keyboard.is_pressed("0"):
print("착륙")
drone.sendLanding()
sleep(1)
drone.sendLanding()
sleep(1)
break
elif keyboard.is_pressed("5"):
print("제자리")
drone.sendControl(0, 0, 0, 0)
elif keyboard.is_pressed("w"):
print("위로")
drone.sendControl(0, 0, 0, 30)
elif keyboard.is_pressed("s"):
print("아래로")
drone.sendControl(0, 0, 0, -30)
elif keyboard.is_pressed("a"):
print("왼쪽회전")
drone.sendControl(0, 0, 30, 0)
elif keyboard.is_pressed("d"):
print("오른쪽회전")
drone.sendControl(0, 0, -30, 0)
elif keyboard.is_pressed("up"):
print("직진")
drone.sendControl(0, 30, 0, 0)
elif keyboard.is_pressed("down"):
print("뒤로")
drone.sendControl(0, -30, 0, 0)
elif keyboard.is_pressed("Right"):
print("오른쪽")
drone.sendControl(30, 0, 0, 0)
elif keyboard.is_pressed("Left"):
print("왼쪽")
drone.sendControl(-30, 0, 0, 0)
- 1을 누르면 이륙 (drone.sendTakeOff())
- 0을 누르면 착륙 (drone.sendLanding())
- w를 누르면 위로 이동 (Throttle값 +)
- s를 누르면 아래로 이동 (Throttle값 -)
- a를 누르면 왼쪽으로 회전 (Yaw값 +)
- d를 누르면 오른쪽으로 회전 (Yaw값 -)
- 키보드 위를 누르면 앞으로 이동 (Pitch값 +)
- 키보드 밑으로 누르면 뒤로 이동 (Pitchr값 -)
- 키보드 오른쪽을 누르면 오른쪽으로 이동 (Roll값 +)
- 키보드 왼쪽을 누르면 왼쪽으로 이동 (Roll값 -)
def eventTrim(trim):
print("{0}, {1}, {2}, {3}".format(trim.roll, trim.pitch, trim.yaw, trim.throttle))
if __name__ == '__main__':
drone = Drone()
drone.open("com5")
drone.setEventHandler(DataType.Trim, eventTrim)
drone.sendTrim(0, 0, 0, 0)
sleep(1)
drone.sendRequest(DeviceType.Drone, DataType.Trim)
while문 위에 Trim 코드를 추가해서 미세조정도 가능합니다.
728x90
'파이썬' 카테고리의 다른 글
파이썬 mediapipe 패키지 사용법 (0) | 2022.08.05 |
---|---|
파이썬으로 드론 조종하기 (얼굴인식) (0) | 2022.08.04 |
파이썬 Open CV 관련 패키지 사용법 (얼굴인식) (0) | 2022.08.02 |
파이썬 Open CV 관련 패키지 사용법 (기초) (0) | 2022.08.01 |
파이썬으로 드론 조종하기 (패턴비행) (0) | 2022.07.30 |
댓글