본문 바로가기

Python/파이썬 프로젝트

tello 텔로 드론 비디오 스트리밍 받아오기 파이썬 코드

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' 를 누르면 사각형 비행 (앞 -> 오른쪽 -> 뒤 -> 왼쪽으로 사각형 그리기)

 

를 프로그래밍 하시오.