修改Tello

pull/29/head
wangziyang 3 years ago
parent 9ade7f62d1
commit 4746160fd1

@ -1,19 +1,18 @@
# @Time : 2022/5/9 20:49 import pygame
# @Author : 2890199310@qq.com
# @File : KeyPress.py
# @Software: PyCharm
# @Function:
def main(): def init():
keyPress() pygame.init()
win = pygame.display.set_mode((400, 400))
def keyPress(key):
if(key == 1):
return "e"
def result():
return keyPress()
def getKey(keyName):
ans = False
for eve in pygame.event.get(): pass
keyInput = pygame.key.get_pressed()
myKey = getattr(pygame,'K_{}'.format(keyName))
if keyInput[myKey]:
ans = True
pygame.display.update()
return ans
if __name__ == '__main__': if __name__ == '__main__':
main() init()

@ -1,31 +1,18 @@
# @Time : 2022/4/20 12:27 import pygame
# @Author : 2890199310@qq.com
# @File : KeyPressModule.py.py
# @Software: PyCharm
# @Function:
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../PaddleClas-release-2.3")
# import pygame
import Tello.KeyPress as k
def init(): def init():
return pygame.init()
win = pygame.display.set_mode((400, 400))
def getKey(keyName): def getKey(keyName):
# ans = False ans = False
# for eve in pygame.event.get(): pass for eve in pygame.event.get(): pass
# keyInput = pygame.key.get_pressed() keyInput = pygame.key.get_pressed()
# myKey = getattr(pygame,'K_{}'.format(keyName)) myKey = getattr(pygame,'K_{}'.format(keyName))
# if keyInput[myKey]: if keyInput[myKey]:
if keyName == k.result():
ans = True ans = True
# pygame.display.update() pygame.display.update()
return ans return ans
def key(a):
return a
if __name__ == '__main__': if __name__ == '__main__':
init() init()

@ -1,8 +1,8 @@
# @Time : 2022/4/20 12:27 # # @Time : 2022/4/20 12:27
# @Author : 2890199310@qq.com # # @Author : 2890199310@qq.com
# @File : KeyboardControl.py.py # # @File : KeyboardControl.py.py
# @Software: PyCharm # # @Software: PyCharm
# @Function: # # @Function:
import os import os
import sys import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../PaddleClas-release-2.3") sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../PaddleClas-release-2.3")
@ -13,16 +13,45 @@ from djitellopy import tello
# import Tello.KeyPressModule as kp # 用于获取键盘按键 # import Tello.KeyPressModule as kp # 用于获取键盘按键
from time import sleep from time import sleep
Camera_Width = 720
Camera_Height = 480
DetectRange = [6000, 11000] # DetectRange[0] 是保持静止的检测人脸面积阈值下限DetectRange[0] 是保持静止的检测人脸面积阈值上限
PID_Parameter = [0.5, 0.0004, 0.4]
pErrorRotate, pErrorUp = 0, 0
# 字体设置
font = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 0.5
fontColor = (255, 0, 0)
lineThickness = 1
def connect():
# Tello初始化设置 # Tello初始化设置
Drone = tello.Tello() # 创建飞行器对象 # 创建飞行器对象
# kp.init() # 初始化按键处理模块
global Drone
Drone = tello.Tello()
Drone.connect() # 连接到飞行器 Drone.connect() # 连接到飞行器
Drone.streamon() # 开启视频传输 Drone.streamon() # 开启视频传输
Drone.LOGGER.setLevel(logging.ERROR) # 只显示错误信息 Drone.LOGGER.setLevel(logging.ERROR) # 只显示错误信息
sleep(5) # 等待视频初始化 sleep(5) # 等待视频初始化
# kp.init() # 初始化按键处理模块 flag = True
while flag:
global OriginalImage
OriginalImage = Drone.get_frame_read().frame
global image
image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height))
# getKeyboardInput(drone=Drone, speed=70, image=Image) # 按键控制
cv2.imshow("Drone Control Centre", image)
cv2.waitKey(1)
if cv2.waitKey(1) == ord('q'):
flag = False
cv2.destroyAllWindows()
def getKeyboardInput(key): def getKeyboardInput(key):
image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height)) # image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height))
speed = 70 speed = 70
drone = Drone drone = Drone
lr, fb, ud, yv = 0, 0, 0, 0 lr, fb, ud, yv = 0, 0, 0, 0
@ -36,7 +65,6 @@ def getKeyboardInput(key):
# elif kp.getKey("DOWN"):#下降 # elif kp.getKey("DOWN"):#下降
if key == "DOWN": if key == "DOWN":
Drone.land() Drone.land()
# if kp.getKey("j"):# 向左飞行 # if kp.getKey("j"):# 向左飞行
if key == "j": if key == "j":
key_pressed = 1 key_pressed = 1
@ -45,11 +73,14 @@ def getKeyboardInput(key):
if key == "l": if key == "l":
key_pressed = 1 key_pressed = 1
lr = speed lr = speed
# if kp.getKey("i"): #向前飞行 # if kp.getKey("i"): #向前飞行
if key == "i": if key == "i":
key_pressed = 1 key_pressed = 1
fb = speed fb = speed
# stop
if key == "s":
key_pressed = 1
fb = 0
# elif kp.getKey("k"):# 向后飞行 # elif kp.getKey("k"):# 向后飞行
if key == "k": if key == "k":
key_pressed = 1 key_pressed = 1
@ -80,26 +111,92 @@ def getKeyboardInput(key):
drone.send_rc_control(lr, fb, ud, yv) drone.send_rc_control(lr, fb, ud, yv)
# 主程序
# 摄像头设置
Camera_Width = 720
Camera_Height = 480
DetectRange = [6000, 11000] # DetectRange[0] 是保持静止的检测人脸面积阈值下限DetectRange[0] 是保持静止的检测人脸面积阈值上限
PID_Parameter = [0.5, 0.0004, 0.4]
pErrorRotate, pErrorUp = 0, 0
# 字体设置 # connect()
font = cv2.FONT_HERSHEY_SIMPLEX # # 主程序
fontScale = 0.5 # # 摄像头设置
fontColor = (255, 0, 0) #
lineThickness = 1 #
#
#
# import logging
# import time
while True: # import cv2
OriginalImage = Drone.get_frame_read().frame # from djitellopy import tello
Image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height)) # import KeyPressModule as kp # 用于获取键盘按键
# from time import sleep
#
# def getKeyboardInput(drone, speed, image):
# lr, fb, ud, yv = 0, 0, 0, 0
# key_pressed = 0
# if kp.getKey("e"):
# cv2.imwrite('D:/snap-{}.jpg'.format(time.strftime("%H%M%S", time.localtime())), image)
# if kp.getKey("UP"):
# Drone.takeoff()
# elif kp.getKey("DOWN"):
# Drone.land()
#
# if kp.getKey("j"):
# key_pressed = 1
# lr = -speed
# elif kp.getKey("l"):
# key_pressed = 1
# lr = speed
#
# if kp.getKey("i"):
# key_pressed = 1
# fb = speed
# elif kp.getKey("k"):
# key_pressed = 1
# fb = -speed
#
# if kp.getKey("w"):
# key_pressed = 1
# ud = speed
# elif kp.getKey("s"):
# key_pressed = 1
# ud = -speed
#
# if kp.getKey("a"):
# key_pressed = 1
# yv = -speed
# elif kp.getKey("d"):
# key_pressed = 1
# yv = speed
# InfoText = "battery : {0}% height: {1}cm time: {2}".format(drone.get_battery(), drone.get_height(), time.strftime("%H:%M:%S",time.localtime()))
# cv2.putText(image, InfoText, (10, 20), font, fontScale, (0, 0, 255), lineThickness)
# if key_pressed == 1:
# InfoText = "Command : lr:{0}% fb:{1} ud:{2} yv:{3}".format(lr, fb, ud, yv)
# cv2.putText(image, InfoText, (10, 40), font, fontScale, (0, 0, 255), lineThickness)
#
# drone.send_rc_control(lr, fb, ud, yv)
#
# # 主程序
# # 摄像头设置
# Camera_Width = 720
# Camera_Height = 480
# DetectRange = [6000, 11000] # DetectRange[0] 是保持静止的检测人脸面积阈值下限DetectRange[0] 是保持静止的检测人脸面积阈值上限
# PID_Parameter = [0.5, 0.0004, 0.4]
# pErrorRotate, pErrorUp = 0, 0
#
# # 字体设置
# font = cv2.FONT_HERSHEY_SIMPLEX
# fontScale = 0.5
# fontColor = (255, 0, 0)
# lineThickness = 1
#
# # Tello初始化设置
# Drone = tello.Tello() # 创建飞行器对象
# Drone.connect() # 连接到飞行器
# Drone.streamon() # 开启视频传输
# Drone.LOGGER.setLevel(logging.ERROR) # 只显示错误信息
# sleep(5) # 等待视频初始化
# kp.init() # 初始化按键处理模块
#
#
# while True:
# OriginalImage = Drone.get_frame_read().frame
# Image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height))
# getKeyboardInput(drone=Drone, speed=70, image=Image) # 按键控制 # getKeyboardInput(drone=Drone, speed=70, image=Image) # 按键控制
cv2.imshow("Drone Control Centre", Image) # cv2.imshow("Drone Control Centre", Image)
cv2.waitKey(1) # cv2.waitKey(1)
Loading…
Cancel
Save