From 4746160fd1370e80497668b7b3fbb10e7cc689c4 Mon Sep 17 00:00:00 2001 From: wangziyang <2890199310@qq.com> Date: Mon, 4 Jul 2022 21:46:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9Tello?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Tello/KeyPress.py | 29 ++- src/Tello/KeyPressModule.py | 31 +--- src/Tello/KeyboardControl.py | 171 ++++++++++++++---- src/Tello/__init__.py | 0 src/Tello/__pycache__/KeyPress.cpython-39.pyc | Bin 564 -> 695 bytes .../__pycache__/KeyPressModule.cpython-39.pyc | Bin 657 -> 666 bytes .../KeyboardControl.cpython-39.pyc | Bin 2022 -> 2212 bytes 7 files changed, 157 insertions(+), 74 deletions(-) create mode 100644 src/Tello/__init__.py diff --git a/src/Tello/KeyPress.py b/src/Tello/KeyPress.py index 66e9f94..4a4499d 100644 --- a/src/Tello/KeyPress.py +++ b/src/Tello/KeyPress.py @@ -1,19 +1,18 @@ -# @Time : 2022/5/9 20:49 -# @Author : 2890199310@qq.com -# @File : KeyPress.py -# @Software: PyCharm -# @Function: +import pygame -def main(): - keyPress() - -def keyPress(key): - if(key == 1): - return "e" - -def result(): - return keyPress() +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)) + if keyInput[myKey]: + ans = True + pygame.display.update() + return ans if __name__ == '__main__': - main() \ No newline at end of file + init() \ No newline at end of file diff --git a/src/Tello/KeyPressModule.py b/src/Tello/KeyPressModule.py index bd7182a..4a4499d 100644 --- a/src/Tello/KeyPressModule.py +++ b/src/Tello/KeyPressModule.py @@ -1,31 +1,18 @@ -# @Time : 2022/4/20 12:27 -# @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 +import pygame def init(): - return + 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)) - # if keyInput[myKey]: - if keyName == k.result(): + 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() + pygame.display.update() return ans -def key(a): - return a - if __name__ == '__main__': init() \ No newline at end of file diff --git a/src/Tello/KeyboardControl.py b/src/Tello/KeyboardControl.py index 6997c9f..5831e92 100644 --- a/src/Tello/KeyboardControl.py +++ b/src/Tello/KeyboardControl.py @@ -1,8 +1,8 @@ -# @Time : 2022/4/20 12:27 -# @Author : 2890199310@qq.com -# @File : KeyboardControl.py.py -# @Software: PyCharm -# @Function: +# # @Time : 2022/4/20 12:27 +# # @Author : 2890199310@qq.com +# # @File : KeyboardControl.py.py +# # @Software: PyCharm +# # @Function: import os import sys 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 # 用于获取键盘按键 from time import sleep -# Tello初始化设置 -Drone = tello.Tello() # 创建飞行器对象 -Drone.connect() # 连接到飞行器 -Drone.streamon() # 开启视频传输 -Drone.LOGGER.setLevel(logging.ERROR) # 只显示错误信息 -sleep(5) # 等待视频初始化 -# kp.init() # 初始化按键处理模块 + +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初始化设置 + # 创建飞行器对象 + # kp.init() # 初始化按键处理模块 + global Drone + Drone = tello.Tello() + Drone.connect() # 连接到飞行器 + Drone.streamon() # 开启视频传输 + Drone.LOGGER.setLevel(logging.ERROR) # 只显示错误信息 + sleep(5) # 等待视频初始化 + 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): - image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height)) + # image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height)) speed = 70 drone = Drone lr, fb, ud, yv = 0, 0, 0, 0 @@ -36,7 +65,6 @@ def getKeyboardInput(key): # elif kp.getKey("DOWN"):#下降 if key == "DOWN": Drone.land() - # if kp.getKey("j"):# 向左飞行 if key == "j": key_pressed = 1 @@ -45,11 +73,14 @@ def getKeyboardInput(key): if key == "l": key_pressed = 1 lr = speed - # if kp.getKey("i"): #向前飞行 if key == "i": key_pressed = 1 fb = speed + # stop + if key == "s": + key_pressed = 1 + fb = 0 # elif kp.getKey("k"):# 向后飞行 if key == "k": key_pressed = 1 @@ -80,26 +111,92 @@ def getKeyboardInput(key): 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 - - - - -while True: - OriginalImage = Drone.get_frame_read().frame - Image = cv2.resize(OriginalImage, (Camera_Width, Camera_Height)) - # getKeyboardInput(drone=Drone, speed=70, image=Image) # 按键控制 - cv2.imshow("Drone Control Centre", Image) - cv2.waitKey(1) \ No newline at end of file +# connect() +# # 主程序 +# # 摄像头设置 +# +# +# +# +# import logging +# import time +# import cv2 +# from djitellopy import tello +# 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) # 按键控制 +# cv2.imshow("Drone Control Centre", Image) +# cv2.waitKey(1) \ No newline at end of file diff --git a/src/Tello/__init__.py b/src/Tello/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/Tello/__pycache__/KeyPress.cpython-39.pyc b/src/Tello/__pycache__/KeyPress.cpython-39.pyc index 3608c273562197b015319bf3caa884701c678177..b43d6dbc2a0655e47bed84062caa6e4979b1e0c1 100644 GIT binary patch literal 695 zcmZ`$-D=f95T4oHBD)S44zrQ3|18uRH-67t_u!R~54qmn@e zzBYkjk?nsG2gP}Rl-{yoizzanOyehhYRH_KF27A)(S~h}o)QX__jZckuWYTn4QoyD zy4A{?G@24ZWPxL@8kckGl}k#!ZrZiaqq?KRXLA1;IfJPsr32+|n+%}9ZCsE_@)l_C vhALSUwJMvUNX5M8Ow#{P4UH^{Yn?+kJGYll>DR6+^DGeRLP|0zBD&nrcBkYtXz>OQpd&5m6gt);IwO=i zSx5E+;S~hvaRI4XQT-pI?l7nAc;NQC5(?-<-U+YP*e)zO*MW^GAKWM2UM?4v)&}RM zax;qtD~Gf5>|*Ho9*t?vvW&lhKSRm#?q^>1-1@k#o;G8K#%w{@g#3!}_Qo;i0{$rl zFQf!9KGab`st{k9e{hi(7@()ZOQQ74#f~UzB{`<=m?H=!!ppE!41}dBz;buX81{Mw zrMR(ANV}cc9#Pzr;5lBEC6g=5JdFdbFwpk7O;uxA{@YPq)s5a6ybi)BYNn)$X^AhT C9%SSI diff --git a/src/Tello/__pycache__/KeyPressModule.cpython-39.pyc b/src/Tello/__pycache__/KeyPressModule.cpython-39.pyc index 1114802427f189c6218d58751d955cb5d2968986..be68495b8c532c26e7e0fba45775d8d3f5283a14 100644 GIT binary patch literal 666 zcmZ`$!D`k(5T4oHB`T`z2bv9Dz#etd3OlH2B`Bts1&4A?huOIKO5a4GB?h2#e1*zL4qd{W{ z8EB^YSIAHc9nqH=uH$oN9~-;`q?$L7Cf8IC^V48&h46us?vlDkWIXgZP=|*PtmhgB z>}Upcvw6y{zfrvn^HVX#O?##)Gm4@v{Fvy%HKl4Z>5R{-g*GXU{Bu!%2b)mCpZ&d^ zlOv^dX?9EHwyY_Qa%Stv_S65Rk4;%FP7Y0bWQ}vL7kXKm?WVPY;KI%>IDitT%xO5~ zRw8nOPG{|tqp?Fe341ocOL!|f_VEG5ycYv>+((`W?Bf*-c*#1k;w!NMc1QE6E9qsR zWEDsh^H*QQVSdpar}u2wVvNiuQ~Qyh88YXl&F+(zH(_U^$Akjqy&dEC3tK5~!&+m! zY_#$wjk1I~=0s!0RqZlPSec~MLES8U7F8{sKk@h1$f=niDIHjK>tp~0uH%eUk~c&9 vFjUDruT)Xzc`BwoCzAgCs%d1N-$4#&c7m7B==F%|=YdccQj$p_XA*A!YY&$n literal 657 zcmaJ;v2NQi5WS;hiFNG2LxD~Kx_XETG+R*=1%ggRjR4I=7!{cC+A5}HLsSM8$&`LZ zhj{GwWaFACzmO?M1`af&J?I|q$kXGyqaKfkz;-j~PW}jh+mQ4v=j0>1`^I3vpau1~ zqC&zmah(t_rV$5}ZE%A|yn+qlV_m+K>IKJ%Nq>VHnt{o9-Jy}m7ot%#yaGPOuP~K& zda?Y$|A@EvJmEFD_y_8YRK9qqp@4o*W+-;k3-c9$|3U?QCTg@(K7!TsXXyZQ5k z|Jpt#Yghl3GLI$m&(s|?y(E?B+Vz?YWIp>rEvuPu>@o((Mwp5w zJffFnxztr%mea8pE9Vo}IiId|`_pH7y{6ju+*D1?+&HGw=a(q} diff --git a/src/Tello/__pycache__/KeyboardControl.cpython-39.pyc b/src/Tello/__pycache__/KeyboardControl.cpython-39.pyc index aad69a24e4494962325000aa82ae17fa4da1fc3e..adc0fbc41503d31d91d6fbf1089a1e18fae61033 100644 GIT binary patch delta 1289 zcmY*YOK%)S5bo~jdF*5MW**W>sI;_jOfob$9jC=C|#} z&~>W}zhC}%a`)@i$Bm2pyT`AN-UHKf!SWhlgEJOhbIhRf4fk45y)C@9*YPWpC9exL zuLpH+8C-7#8qoZLd8^QZHjXc(m-##C@8;HA;_7|lXOr5nuHCGm>w4bQtv!*8 zVH<@G7`mMcOmnj(kmUjkPj|t5$oGZX1S_HW9{t(9O<*6fzP)oowcUKsy{4k6zqTDs zwTi;EZ68NpSvXhldmr?dl_1x=>4#xdm=w(Y^k-|mZHLi#98AZB`Tk(AJ5WZtYhQTL zb9YsM@-V!9FdX}ZG5Tz?u#_JM4^l4It_GxfR&Wr18XbA|(J;_A{Nuui6nJg$V=UtM z-7vfrOd&do`@E2Q;c)x|Q!DA;aynNvtmYD0d=Y_}4yRuOO>!x!q9y9Q$~(x)$PwMa z*;he_th^7pIN%A_ED<1X%fv`zVkQB%C+T%`PV9zseBBc7fs7AkF2o-J}L=w!yM>?*`s&dU8Q(f-Qq8Hs~CuWNhe zKv%oE0X^N!ZQP)J6{`E<5m$F$8J93-a%Rq~Tt1hu^1lR;wa%i_zr=@^3VCh!)=t4E ziv|k|9uzz-_8h)*8dxzIW-JlJW&%m&# IU@Cd_Uo4L%n*aa+ delta 1097 zcmYjPzi$&U6h8aT_bZp=(k3bW1))Gn0f7W`gEF)XfYeG65|UL_N^296rn%x=saoY! z5G-u1Ze_SbEKEoY`~ggi3``btMK>l!;5mfCS^n(zz3VCtW@IrvvU?gc*0ERwy~#*og?8dF6VOey6sM?%R05!~K(!K*B$H}; zeZmH!1B9m<0|E!^r_6;TaYl;_U^2k$|6%&J2X->B3HY;Mzdw#pOb(cj1BD589_%m2 z3dQ)q>>VCc7ElGCehh*vHk4RBUHv`4T&nf!89uH@j~u8p-$Olz6+=HPuu?dbT2O$^ z+;zN<#0o3J2}Y0f%$}7R|LI5m>ivFzo(%t$#k1t@BsCV69xO`KI#NGIqP9d$iPk0B zmZ%%QA~k&UEB;O{R}0`iIu9^Yl=|9}tI`y_+uY?cyCj;8W~bi1vr%uvA8>^%h@ivc zYv!exnQIfS)YtirBu#L0NxGYyGfJ4!$oQ*SHQs8X8vAAuyvKJ|gSudMI-6VJ z3H2~)02=a<0mDNEw$VwLwwk&PoC!Pd>G6H*ilH)$vuN(>3~Xj}F${}(Sp!h7ZMWD@ zureQXLJ_np^Bh(_GabLQuFXoT9W?HNRx{-7cCfi4uwr!pO71I4jKMy> zi>pKAcCEHl6Dk3r@)o1rj^#du@SJXHlH)W>RtzcPM``*H9YJ=SJcR<{@heu>)X1ix`YhV IMLzb>Z{?5&YybcN From ee62bf59e6724c50e7b0dbccd44463b53481eb72 Mon Sep 17 00:00:00 2001 From: wangziyang <2890199310@qq.com> Date: Mon, 4 Jul 2022 21:47:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9qt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/qt/Mainwindow.py | 33 ++++++++++++++++++ .../__pycache__/Audio_record.cpython-39.pyc | Bin 4660 -> 4664 bytes .../__pycache__/Screenshot_Gui.cpython-39.pyc | Bin 11874 -> 11878 bytes .../Screenshot_record.cpython-39.pyc | Bin 2619 -> 2623 bytes src/qt/__pycache__/findpath_UI.cpython-39.pyc | Bin 7372 -> 7376 bytes 5 files changed, 33 insertions(+) diff --git a/src/qt/Mainwindow.py b/src/qt/Mainwindow.py index f560ca1..5e99b9d 100644 --- a/src/qt/Mainwindow.py +++ b/src/qt/Mainwindow.py @@ -14,6 +14,9 @@ from findpath_UI import * from Screenshot.Screenshot_Gui import * import qdarkstyle +sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../PaddleClas-release-2.3") +import Tello.KeyboardControl as KeyControl + class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") @@ -203,6 +206,13 @@ class Ui_MainWindow(object): self.toolBar.addAction(self.actionicon_3) self.actionicon_2.triggered.connect(lambda: self.path()) self.actionicon_3.triggered.connect(lambda: self.video()) + self.pushButton_7.clicked.connect(lambda: self.connect()) + self.pushButton_3.clicked.connect(lambda: self.up()) + self.pushButton_6.clicked.connect(lambda: self.down()) + self.pushButton.clicked.connect(lambda: self.forward()) + self.pushButton_4.clicked.connect(lambda: self.right()) + self.pushButton_2.clicked.connect(lambda: self.left()) + self.pushButton_5.clicked.connect(lambda: self.Return()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) @@ -216,6 +226,29 @@ class Ui_MainWindow(object): self.ui = Ui_MainWindow2() self.ui.show() + def connect(self): + KeyControl.connect() + + def up(self): + KeyControl.getKeyboardInput("UP") + + def down(self): + KeyControl.getKeyboardInput("DOWN") + + def forward(self): + KeyControl.getKeyboardInput("i") + + def right(self): + KeyControl.getKeyboardInput("l") + + def left(self): + KeyControl.getKeyboardInput("j") + + def Return(self): + KeyControl.getKeyboardInput("a") + KeyControl.getKeyboardInput("dffsfdsa") + + def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "无人机路径生成系统")) diff --git a/src/qt/Screenshot/__pycache__/Audio_record.cpython-39.pyc b/src/qt/Screenshot/__pycache__/Audio_record.cpython-39.pyc index 037c86a468234c0de5f0f02a7a278f97d880c600..a40e9dc055c922acc1b8f75e49a020f7a3fb58a7 100644 GIT binary patch delta 75 zcmdm@vO|SCk(ZZ?0SFeKJhYL!kIB%_)hZ?+F(oA@)j21zShpxOCpED+Ro6(*7>DrY IV@!Gc0E4d>qW}N^ delta 71 zcmdm?vPFeEk(ZZ?0SNeX*KXwQW773%u7s9 Z%}vcKi4U$UE=kReDK1Lhe2OWL9{>;O7=r)+ diff --git a/src/qt/Screenshot/__pycache__/Screenshot_Gui.cpython-39.pyc b/src/qt/Screenshot/__pycache__/Screenshot_Gui.cpython-39.pyc index ee5472f92f8408fc6afd805c2e47cf81cf6e5827..3d094f44f9b45352af66858068ac0b2a68c52971 100644 GIT binary patch delta 40 rcmaD9^DKrtk(ZZ?0SFeKJhYK}H#19st5wY8d`2-wFuD0NbG{Y;2#E~2 delta 71 zcmaDB^C*Tpk(ZZ?0SFGQ+PRT?H?yvfi&acPQGQlxa!HJ5URr)pZemGheqOw9VqRi; ZYHn&?Nqlf+aY<@!OmR{2=I_k;S^$|l8wLOX diff --git a/src/qt/Screenshot/__pycache__/Screenshot_record.cpython-39.pyc b/src/qt/Screenshot/__pycache__/Screenshot_record.cpython-39.pyc index 64d31c224180d6d28fb06aaba633bab7743c904c..8ec92350c2c2ef581cb6ad67eb745b0f004276e1 100644 GIT binary patch delta 75 zcmdljvR{Ndk(ZZ?0SFeKJhYMfJfmT-t5r-uVoFL*s&h_av2IanPHJLts;-fqF%IF) I>`W#c0E%-L)&Kwi delta 71 zcmdllvRi~Zk(ZZ?0SN3??cB(Ho>AA|#VV$tC_gJTxg^FjFD<_)H?br$KQG=lF)uMa ZH8(Y{BtE#ZxFj_