Python/파이썬 프로젝트
tello 텔로 드론 비디오 스트리밍 받아오기 파이썬 코드
원킹 쌤
2021. 9. 14. 15:01
1. 텔로드론으로 실시간 비디오 스트리밍 받아오기
- tello_stream.py 코드 작성
from djitellopy import tello
import cv2
from time import sleep
me = tello.Tello()
me.connect()
print(me.get_battery())
me.streamon()
while True :
img = me.get_frame_read().frame
img = cv2.resize(img, (360, 240))
cv2.imshow("Image", img)
cv2.waitKey(2)
2. 키보드로 실시간 드론 제어하기
1) KeyPressModule.py 파일 만들기
import pygame
def init():
pygame.init()
win = pygame.display.set_mode((400, 400))
def getKey(keyName):
ans = False
for eve in pygame.event.get(): pass
keyInput = pygame.key.get_pressed()
myKey = getattr(pygame,'K_{}'.format(keyName))
print('K_{}'.format(keyName))
if keyInput[myKey]:
ans = True
pygame.display.update()
return ans
def main():
print(getKey("a"))
# if getKey('LEFT'):
# print('Left key pressed')
#
# if getKey('RIGHT'):
# print('Right key Pressed')
if __name__ == '__main__':
init()
while True:
main()
2) tello_stream_key.py
from djitellopy import tello
import KeyPressModule as kp
import time
import cv2
kp.init()
me = tello.Tello()
me.connect()
print(me.get_battery())
global img
me.streamon()
def getKeyboardInput():
lr, fb, ud, yv = 0, 0, 0, 0
speed = 50
if kp.getKey("LEFT"): lr = -speed
elif kp.getKey("RIGHT"): lr = speed
if kp.getKey("UP"): fb = speed
elif kp.getKey("DOWN"): fb = -speed
if kp.getKey("w"):ud = speed
elif kp.getKey("s"): ud = -speed
if kp.getKey("a"):yv = -speed
elif kp.getKey("d"): yv = speed
if kp.getKey("q"): me.land(); time.sleep(3)
if kp.getKey("e"): me.takeoff()
if kp.getKey('z'):
cv2.imwrite(f'Resources/Images/{time.time()}.jpg',img)
time.sleep(0.3)
return [lr, fb, ud, yv]
while True:
vals = getKeyboardInput()
me.send_rc_control(vals[0], vals[1], vals[2], vals[3])
img = me.get_frame_read().frame
#img = cv2.resize(img, (360, 240))
cv2.imshow("Image", img)
cv2.waitKey(1)
[추가 과제]
키 '1' 을 누르면 앞으로 플립
키 '2' 를 누르면 뒤로 플립
키 '3' 을 누르면 위 아래 왔다갔다 2회
키 '4' 를 누르면 사각형 비행 (앞 -> 오른쪽 -> 뒤 -> 왼쪽으로 사각형 그리기)
를 프로그래밍 하시오.