資料介紹
描述
介紹
“無人機”一詞通常指任何無人駕駛飛機。這些飛行器有時被稱為“無人機”(UAV),可以執行從軍事行動到包裹遞送等一系列令人印象深刻的任務。無人機可以像飛機一樣大,也可以像手掌一樣小。最初為軍事和航空航天行業開發的無人機因其帶來的安全性和效率的提高而成為主流。這些機器人無人機在沒有飛行員的情況下運行并具有不同程度的自主性。無人機的自主性水平可以范圍從遠程駕駛(人類控制其運動)到高級自主,這意味著它依賴于傳感器和探測器系統來計算其運動。
由于無人機可以遠程控制,并且可以在不同的距離和高度飛行,因此它們是承擔世界上一些最艱巨工作的理想人選。他們可以在颶風過后協助尋找幸存者,在恐怖局勢期間讓執法部門和軍隊密切關注天空,并在地球上一些最極端的氣候條件下推進科學研究。無人機甚至進入了我們的家,成為業余愛好者的娛樂和攝影師的重要工具。
無人機有多種用途:
- 軍隊
- 送貨
- 緊急救援
- 外太空
- 野生動物和歷史保護
- 藥物
- 攝影等
==================================================== ===================
動機
這個項目背后的主要動機是我對探索小型無人機的各種控制方案的好奇心。《微型無人機語音控制系統的設計與開發》一文講述了無線電、GCS、手勢、語音、操縱桿、PC、FPV和自主等各種無人機控制方法。在論文Design and Development of an Android Application for Voice Control of Micro Unmanned Aerial Vehicles中,觀察到medium
無線電和手勢無人機控制方法的態勢感知處于一定水平,而語音控制方法的態勢感知能力較高。在這個項目中,我們將致力于基于視覺的手勢控制,稍后我們將進行語音控制以及其他高級控制。
該項目的動機還源于需要在低成本可移植和可擴展的嵌入式平臺中實現這些不同的控制方法,該平臺具有邊緣計算,而不依賴于外部資源的工作。
==================================================== ===================
方法
==================================================== ===================
DJI Tello 無人機
DJI Tello是一款小型無人機,將DJI和Intel I的強大技術結合到一個非常小的封裝中。它是一款輕巧、有趣且易于使用的無人機,是在投資更昂貴的選擇之前學習無人機駕駛技巧的完美工具。Tello 擁有來自英特爾的 14 核處理器,其中包括板載Movidius Myriad 2 VPU(視頻處理單元)用于高級成像和視覺處理。它配備了高質量的圖像處理器,用于拍攝照片和視頻。該相機具有 5MP (2592x1936) 照片和 HD720 視頻。無人機的最長飛行時間為 13 分鐘。這款令人難以置信的小型無人機可放在您的手掌中,僅重約 80 克(包括螺旋槳和電池)。您可以通過 Tello 應用程序或連接到 Tello 應用程序的受支持藍牙遙控器直接控制 Tello。該無人機可通過 Python、C++、Scratch 和 DroneBlocks 進行編程。
眼鏡
- 重量:約 80 克(含螺旋槳和電池)
- 尺寸:98mm*92.5mm*41mm
- 螺旋槳:3英寸
- 內置功能:測距儀、氣壓計、LED、視覺系統、WIFI 802.11n 2.4G、720P 實時取景
- 端口:Micro USB 充電端口
- 最大飛行距離:100m
- 最大速度:8m/s
- 最長飛行時間:13 分鐘
- 可拆卸電池:1.1Ah/3.8V
- 照片:5MP(2592×1936)
- 視場:82.6°
- 視頻:HD720P30
- 格式:JPG(照片);MP4(視頻)
- 電子防抖:是
為項目準備 Tello Drone
Tello 無人機 SDK提供了有關如何通過 Tello 命令對無人機進行編程以完成任務的大量信息,但在功能上有所限制。Tello SDK 通過 Wi-Fi UDP 端口連接飛行器,用戶可以通過文本命令控制飛行器。我們使用 Wi-Fi 在 Tello 和 M5Stack 模塊之間建立連接。開機后,Tello 充當軟 AP Wi-Fi (192.168.10.1) 通過端口 8889 接受命令。
Tello SDK 包括三種基本命令類型。
控制命令 (xxx)
如果命令成功,則返回“ok”。
如果命令失敗,則返回“錯誤”或信息性結果代碼。
Set Command (xxx a) 設置新的子參數值
如果命令成功,則返回“ok”。
如果命令失敗,則返回“錯誤”或信息性結果代碼。
讀取命令 (xxx?)
返回子參數的當前值。
盡管 Tello 非常靈活,我們可以通過許多不同的軸來控制無人機,但在這個項目中,我們將使用以下命令。
- 起飛:自動起飛。
- 土地:自動著陸。
- up x:上升到“x”厘米。
- down x :下降到“x”厘米。
- left x:向左飛行“x”厘米。
- right x :向右飛行“x”厘米。
- forward x:向前飛“x”厘米。
- back x :向后飛“x”厘米。
全套命令請參考SDK 。
作為一項安全功能,如果 15 秒內沒有命令,Tello 將自動著陸。
Tello API
我們將使用自定義 C++ API ctello ,它允許我們通過 UDP 與 DJI Tello 無人機通信。
==================================================== ===================
基于視覺的手勢控制方法
手勢命令
為了使用視覺手勢控制我們的 Tello 無人機,我們將使用手勢檢測。6 種基本手勢被考慮用于控制(怠速、起飛/著陸、前進、后退、左、右)。
Takeoff
起飛命令是通過使用豎起大拇指的手勢發出的。
Land
使用拇指向下的手勢發出 Land 命令。
通過使用張開手掌手勢發出前進命令。
通過使用閉合的拳頭手勢發出向后命令。
使用拇指向左手勢發出向左命令。
使用拇指向右手勢發出向右命令。
==================================================== ===================
使用邊緣脈沖的基于視覺的手勢識別
在Edge Impulse Studio的幫助下,我們將使用機器學習構建在微控制器上運行的手勢識別系統。
為項目準備 Edge Impulse Studio
- 登錄https://www.edgeimpulse.com/
- 單擊創建項目。
- 提供項目名稱并單擊創建。
- 從左側菜單轉到“設備”選項卡,然后選擇“連接新設備”。
- 您將看到各種設備選項。
- 掃描此二維碼或通過您的智能手機設備打開鏈接。
- 通過智能手機打開鏈接后,智能手機將顯示在“設備”部分。
==================================================== ===================
數據采集
為了為我們的機器學習模型收集數據,我們將使用智能手機上的攝像頭傳感器。為了讓您的機器學習模型能夠看到,捕獲這些對象的大量示例圖像非常重要。在訓練模型時,這些示例圖像用于讓模型區分它們。
-
將智能手機連接到 Edge Impulse 后,轉到“
Data Acquisition
”選項卡。 -
在手機中,選擇
Collecting images
并授予對相機的訪問權限。 -
在下一個屏幕上,給標簽名稱 Eg:
takeoff
,在相機前顯示手勢,然后單擊Capture
開始采樣。
- 一旦設備完成每個采樣,它就會將文件上傳回 Edge Impulse。采樣后,數據將出現在數據采集中。
-
您會在工作室的“ ”下看到一個新行。
Collected data
- 當您單擊它時,您現在會看到原始圖像。
- 重復此過程以收集盡可能多的樣本。
- 對其他標簽重復起飛、著陸、前進、后退、左、右。
- 還包括一些噪聲圖像。
- 確保對手勢進行變化調整。例如,稍微改變手勢的方向。您永遠不會知道您的用戶將如何使用該設備。
- 收集到足夠的數據后,它們將顯示在同一選項卡下。
- 單擊每個數據行以查看其原始圖像。
-
現在我們有足夠的數據,我們需要將數據拆分為a
training dataset
和atest dataset.
- 不用擔心。Edge Impulse Studio 也為我們提供了便利。
-
前往“
Dashboard section
”并向下滾動至“Danger Zone
”。 -
點擊“
Rebalance datasheet
”,自動將數據集拆分為訓練和測試,比例為 80/20。
- 現在我們已經獲取并設置了我們的訓練數據以供進一步處理。
- 現在,我們的 Edge Impulse 項目中有一個平衡良好的數據集。
-
我們可以使用小部件上方的兩個按鈕在您的訓練和測試數據之間切換
Data collected
。
==================================================== ===================
手勢模型訓練
由于我們已經獲取了所有數據,是時候訓練數據集以適應手勢模型了,Edge Impulse 使我們無需編寫任何代碼就可以更輕松地生成模型。
有了訓練集,我們就可以設計一個沖動。脈沖獲取原始圖像,使用預處理塊來處理圖像,然后使用學習塊對新數據進行分類。預處理塊總是為相同的輸入返回相同的值,而學習塊從過去的經驗中學習。
-
轉到“
Impulse Design
”選項卡。 -
我們已經
Image data
為我們填充了該部分。 -
選擇一個
image width
of48x48
和 Resize 模式為Squash
。 -
現在單擊
Add a processing block
并選擇Image
。 - 該塊接收彩色圖像,可選地使圖像灰度化,然后將數據轉換為特征數組。
- 參數將為我們自動填充。
-
現在單擊
Add a learning block
并選擇Transfer Learning (Images)
。 - 參數將為我們自動填充。
- 該塊采用這些特征數組并學習區分六個(空閑、起飛、前進、后退、左、右)類。
-
該
Output features
塊將具有我們獲得的所有標簽。
-
現在單擊
Save Impulse
以保存配置。 -
前往
Image
標簽。 - 這將在屏幕頂部顯示原始數據(您可以通過下拉菜單選擇其他文件),并在右側顯示預處理步驟的結果。
- 您可以使用選項在“RGB”和“灰度”模式之間切換,但現在,將顏色深度保留為“RGB”。
-
單擊
Save parameters
。這會將您發送到Transfer learning
屏幕。 - 在這里,我們將調整所有數據的大小,對所有這些數據應用處理塊,并創建完整數據集的 3D 可視化。
-
單擊
Generate features
。 -
將
Feature explorer
加載。這是我們數據集中所有數據的圖。
- 因為圖像有很多維度(這里:48x48x3=6912 個特征),我們在可視化之前在數據集上運行一個稱為“降維”的過程。
- 在這里,6912?? 個特征被壓縮到只有 3 個,然后根據相似度進行聚類。
- 即使我們的數據很少,您已經可以看到一些簇正在形成,并且可以單擊這些點來查看哪個圖像屬于哪個點。
- 對于我們的數據集,特征數據或多或少是分開的,這是一個好兆頭。如果您的功能重疊,最好獲取更多數據。
- 該頁面還顯示了預期的設備性能以及用于計算特征的處理時間和峰值 RAM 使用率。
處理完所有數據后,就該開始訓練神經網絡了。神經網絡是一組算法,松散地模仿人腦,旨在識別模式。我們在這里訓練的網絡將信號處理數據作為輸入,并嘗試將其映射到四個類之一。
那么神經網絡如何知道要預測什么?神經網絡由多層神經元組成,所有神經元相互連接,每個連接都有一個權重。輸入層中的一個這樣的神經元將是 X 軸的第一個峰值的高度(來自信號處理塊),而輸出層中的一個這樣的神經元將是takeoff
(其中一個類)。在定義神經網絡時,所有這些連接都是隨機初始化的,因此神經網絡將進行隨機預測。在訓練期間,我們然后獲取所有原始數據,要求網絡進行預測,然后根據結果對權重進行微小的更改(這就是標記原始數據很重要的原因)。
這樣,經過多次迭代,神經網絡就會學習;并且最終將在預測新數據方面變得更好。
-
前往
Transfer learning
標簽。 -
設置
Number of training cycles
至20
、Learning rate
至0.0005
和Minimum confidence rating
至0.60
。您可以使用這些值來調整訓練模型的準確性。
-
暫時將其他參數保留為默認值,然后單擊
Start training
。 -
現在該
Training Output
部分被填充。
- 它顯示了網絡的準確性和混淆矩陣。該矩陣顯示了網絡何時做出正確和不正確的決定。
- 它還顯示了此模型的預期設備性能。
- 現在我們已經生成了模型,我們需要對其進行測試。
==================================================== ===================
手勢模型測試
-
前往
Model Testing
標簽。 -
我們可以在這里看到我們的訓練數據集。單擊
Classify all
。
- 這將使用模型未知的訓練數據生成模型驗證結果。我們可以看到,我們的訓練模型能夠以 100% 的準確率進行分類,考慮到在訓練部分提供給模型的少量訓練數據,這非常好。
- 它還顯示了錯誤預測的標簽。
-
通過檢查這些結果
Feature explorer
,我們可以了解是否有任何標簽被錯誤分類,并使用更多的訓練數據來重新訓練我們的模型,以便更好地分類這些數據。 -
您還可以通過選項卡對來自智能手機的數據進行實時分類
Live classification
。您的設備應在 下顯示為在線Classify new data
。將 Sensor 設置為Camera
,單擊Start sampling
,開始采集樣本。
- 之后,您將獲得有關網絡認為您所做的事情的完整報告。
- 現在我們已經訓練和測試了我們的模型,讓我們部署它。
==================================================== ===================
手勢模型部署
通過設計、訓練和驗證的沖動,您可以將此模型部署回您的設備。這使得模型在沒有互聯網連接的情況下運行,最大限度地減少延遲,并以最低的功耗運行。Edge Impulse 可以將完整的脈沖(包括信號處理代碼、神經網絡權重和分類代碼)打包到單個 C++ 庫中,您可以將其包含在嵌入式軟件中。
-
前往
Deployment
標簽。 -
選擇
C++ library
。 -
如果您需要構建特定 Edge Impulse 支持的硬件,請在
Build firmware
選擇您的開發板下 -
單擊
Build
。這將導出沖動,并構建一個將在開發板上一步運行的庫。 - 我們將看到一個彈出窗口,其中包含有關如何將模型部署到我們的設備的文本和視頻說明。
- 構建完成后,系統會提示您下載庫 zip 文件。
- 將 zip 文件保存到我們的項目目錄中。
==================================================== ===================
界面
現在我們已經準備好我們的無人機和手勢模型,讓我們在代碼中將所有內容連接在一起。
在此處獲取代碼:https ://github.com/crisdeodates/Tello_EI_vision_gesture_control
運行以下命令:
$ git clone https://github.com/crisdeodates/Tello_EI_vision_gesture_control
$ cd Tello_EI_vision_gesture_control
$ APP_CAMERA=1 make -j4
現在將您的筆記本電腦連接到 Tello Wifi 并執行二進制文件以啟動控件。
$ ./build/Tello_EI_vision_gesture_control 0
==================================================== ===================
測試
現在讓我們測試一下手勢控制,看看它的效果如何。
以下是起飛和降落視覺手勢的快速測試。
==================================================== ===================
結論
盡管推理引擎無法準確分類某些手勢,但總體性能令人滿意。此外,在某些情況下,手勢命令被錯誤分類。
我們相信這些問題可以通過添加更多的訓練數據集并使模型更加靈活來得到更好的解決。
該模型已經針對低功耗、資源受限的模塊(例如 ESP32-CAM)進行了優化。
==================================================== ===================
接下來是什么 !!
- 將模型移植到低功耗模塊,例如 ESP32-CAM(正在進行中)。
- 使用更多測試數據訓練模型以實現更準確的分類。
- 使用更多樣化的手勢。
==================================================== ===================
?
- 帶有M5Stack和Edge Impulse的手勢控制無人機
- 帶有M5Stack的電報控制無人機
- 使用帶有計算機視覺的手勢控制伺服電機
- 無人機結構與系統 8次下載
- 基于空間曲線軌跡跟蹤的無人機控制算法 30次下載
- 基于視覺/慣導的無人機組合導航算法綜述 19次下載
- 基于深度強化學習的無人機控制律設計方法 46次下載
- 如何對無人機視覺導航中的圖像處理的姿態進行解算 6次下載
- 如何使用云計算進行無人機云操作系統的詳細資料說明 8次下載
- 無人機和無人機控制方法及無人機遠程操控系統方法說明 69次下載
- 無人機中繼模塊和無人機圖傳控制系統介紹 60次下載
- 基于機載視覺引導的無人機自主循跡研究 18次下載
- 基于視覺的無人機定點飛行控制技術研究 3次下載
- 無人機PID控制律設計方案pdf下載 11次下載
- 無人機環繞目標飛行控制 2次下載
- 無人機鏈路系統的組成 1.6w次閱讀
- 如何自制一個自動駕駛無人機 7037次閱讀
- Percepto Robotics宣布Sparrow無人機機器視覺算法 4635次閱讀
- 關于無人機如何選擇六款無人機的解析 1.4w次閱讀
- 基于無人機的視覺傳感網和圖像識別中心的建設 2969次閱讀
- 怎樣使無人機安全飛行?無人機飛行需要掌握什么安全知識 1.5w次閱讀
- 新疆為什么禁飛無人機_新疆無人機禁飛區域 5.7w次閱讀
- 水下無人機的用途和優勢有哪些 9214次閱讀
- 水下無人機原理分析 1.3w次閱讀
- nixie微型無人機的功能介紹_nixie微型無人機多少錢 1.3w次閱讀
- 微型無人機發展前景_無人機發展趨勢 8416次閱讀
- 大疆做不做軍用無人機 2w次閱讀
- 中國有哪些軍用無人機_國內軍用無人機排名 11.2w次閱讀
- 大疆無人機如何在禁飛區起飛 15.1w次閱讀
- 電動無人機和油動無人機性能的對比 2710次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多