資料介紹
描述
介紹
“無人機”一詞通常指任何無人駕駛飛機。這些飛行器有時被稱為“無人機”(UAV),可以執行從軍事行動到包裹遞送等一系列令人印象深刻的任務。無人機可以像飛機一樣大,也可以像手掌一樣小。最初為軍事和航空航天行業開發的無人機因其帶來的安全性和效率的提高而成為主流。這些機器人無人機在沒有飛行員的情況下運行并具有不同程度的自主性。無人機的自主性水平可以范圍從遠程駕駛(人類控制其運動)到高級自主,這意味著它依賴于傳感器和探測器系統來計算其運動。
由于無人機可以遠程控制,并且可以在不同的距離和高度飛行,因此它們是承擔世界上一些最艱巨工作的理想人選。他們可以在颶風過后協助尋找幸存者,在恐怖局勢期間讓執法部門和軍隊密切關注天空,并在地球上一些最極端的氣候條件下推進科學研究。無人機甚至進入了我們的家,成為業余愛好者的娛樂和攝影師的重要工具。
無人機有多種用途:
- 軍隊
- 送貨
- 緊急救援
- 外太空
- 野生動物和歷史保護
- 藥物
- 攝影等
==================================================== ===================
動機
這個項目背后的主要動機是我對探索小型無人機的各種控制方案的好奇心。《微型無人機語音控制系統的設計與開發》一文講述了無線電、GCS、手勢、語音、操縱桿、PC、FPV和自主等各種無人機控制方法。在論文Design and Development of an Android Application for Voice Control of Micro Unmanned Aerial Vehicles 中,觀察到無線電和手勢無人機控制方法的態勢感知處于中等水平,而語音控制方法的態勢感知水平較高。在這個項目中,我們將研究基于 IMU 傳感器的手勢控制,稍后我們將進行語音控制和其他高級控制。
該項目的動機還源于需要在低成本可移植和可擴展的嵌入式平臺中實現這些不同的控制方法,該平臺具有邊緣計算,而不依賴于外部資源的工作。
==================================================== ===================
方法

。無人機的最長飛行時間為 13 分鐘。這款令人難以置信的小型無人機可放在您的手掌中,僅重約 80 克(包括螺旋槳和電池)。您可以通過 Tello 應用程序或連接到 Tello 應用程序的受支持藍牙遙控器直接控制 Tello。該無人機可通過 Python、C++、Scratch 和 DroneBlocks 進行編程。

。
- 。
- 電子防抖:是
為項目準備 Tello DroneTello 無人機 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
由于我們使用 Arduino 作為平臺,我們需要一個 API 可以將我們的命令轉換為 UDP 數據包以使用 Arduino 程序發送。TelloArduino是一個 Arduino 庫,用于通過 ESP32 模塊控制 DJI Tello。如 SDK 文檔中所述,此庫通過 UDP 發送命令來控制 Tello。
- 單擊“
DOWNLOAD ZIP
”按鈕。- 將“tello”文件夾放在您的 Arduino 草圖文件夾/庫/文件夾中。現在重新啟動 IDE。
- 在您的 Arduino IDE 中,轉到 Sketch > Include Library > 選擇“tello”以將此庫包含在您的草圖中。
==================================================== ===================
M5Stack 消防模塊
M5Stack FIRE是M5Stack開發套件之一,提供9軸IMU傳感器(6軸姿態加速度測量+3軸磁測量)、16M Flash + 4M PSRAM、增強型Base、更大電池等。帶IMU姿態傳感器,您可以在很多情況下應用此套件,例如檢測加速度、角度和軌跡。您可以制作運動數據采集器、3D 遠程手勢控制器等相關產品。它是一種模塊化、可堆疊、可擴展的便攜式設備,采用 ESP-32 內核,使其開源、低成本、全功能功能,便于開發人員處理新產品開發的各個階段,包括電路設計、PCB設計、軟件、模具設計和生產。
M5Stack FIRE 開發套件?M5Stack Fire 帶有三個可分離的部分。頂部有處理器、芯片、插座、2.4G天線、ESP32、電源管理IC、液晶屏等接口組件。
M5Stack FIRE 組件?中間部分稱為 M5GO 底座,提供鋰電池、M-BUS 插座、LED 燈條和另外三個 GROVE 端口。底部是充電表,可以通過 POGO 引腳連接到 M5GO 底座。
M5Stack 消防棧?M5Stack開發板效率高,覆蓋工業級機箱和基于ESP32的開發板。它集成了 Wi-Fi 和藍牙模塊,并包含一個雙核和 16MB 的 SPI 閃存。結合 30 多個 M5Stack 可堆疊模塊、40 多個可擴展單元和不同級別的程序語言,您可以在很短的時間內創建和驗證您的物聯網產品。
它支持使用 Arduino、帶有 UIFlow 的 Blockly 語言、Micropython 進行編程。
==================================================== ===================
為項目準備 M5StackFIRE
Download Arduino IDE
Install ESP32 Boards Manager
- 打開 Arduino IDE,然后導航到 File -> Preferences -> Settings
?
- 將以下 ESP32 Boards Manager URL 添加到 Additional Boards Manager:https ://dl.espressif.com/dl/package_esp32_index.json
?
- 點擊確定
- 導航到工具-> 板:-> 板管理器
?
- 在 Boards Manager 窗口中搜索 ESP32,然后單擊 Install
?
Install M5Stack Library
- 打開 Arduino IDE,然后選擇 Sketch->Include Library->Manage Libraries
?
- 搜索 M5Stack 并安裝
?對于 Windows 機器,需要安裝額外的USB 轉串口驅動程序。
Arduino port Configuration
- 選擇正確的板、波特率和串行端口。
?
- 設置完成后,您可以嘗試示例草圖以驗證一切是否正常。
?
- 點擊上傳,將代碼刷入設備
?
- 成功刷寫后,M5Stack 模塊將在其顯示屏以及 Arduino 串行監視器上顯示相應的輸出。
==================================================== ===================
手勢控制方式
手勢命令為了使用 M5Stack 模塊控制我們的 Tello 無人機,我們將使用手勢檢測。6 種基本手勢被考慮用于控制(怠速、起飛/著陸、前進、后退、左、右)。
Idle
模塊不移動時不發出任何命令。
Takeoff/Land
?如圖所示,通過上下移動模塊來發出起飛或著陸命令。
Forward
?如圖所示,通過將模塊向前移動和傾斜來發出前進命令。
Back
?如圖所示,通過向后移動和傾斜模塊來發出向后命令。
Left
?如圖所示,通過向左移動和傾斜模塊來發出左命令。
Right
?如圖所示,通過向右移動和傾斜模塊來發出向右命令。
==================================================== ===================
使用加速度計識別各種手勢?加速器看起來像是一些大型電子設備(例如我們的智能手機)的簡單電路。盡管外觀不起眼,但加速度計由許多不同的部分組成,并以多種方式工作,其中兩種是壓電效應和電容傳感器。
壓電效應是加速度計最常見的形式,它使用由于加速力而受到壓力的微觀晶體結構。這些晶體從應力中產生電壓,加速度計解釋電壓以確定速度和方向。
?電容加速度計感測位于設備旁邊的微結構之間的電容變化。如果加速力移動這些結構之一,則電容會發生變化,加速度計會將電容轉換為電壓以進行解釋。
?典型的加速度計由多個軸組成,其中兩個用于確定大多數二維運動,第三個用于 3D 定位。大多數智能手機通常使用三軸模型,而汽車僅使用兩軸來確定撞擊時刻。這些設備的靈敏度非常高,因為它們旨在測量甚至非常微小的加速度變化。加速度計越靈敏,就越容易測量加速度。
==================================================== ===================
使用邊緣脈沖的手勢識別
在Edge Impulse Studio的幫助下,我們將使用機器學習構建在微控制器上運行的手勢識別系統。
為項目準備 Edge Impulse Studio
- 登錄https://www.edgeimpulse.com/
- 單擊創建項目。
?
- 提供項目名稱并單擊創建。
?
- 從左側菜單轉到“設備”選項卡,然后選擇“連接新設備”。
?
- 您將看到各種設備選項。
?
- 為簡單起見,讓我們連接我們的智能手機設備。由于所有現代智能手機都有板載加速度計,因此很容易。
- 接下來,您將獲得一個二維碼和一個鏈接,以允許從您的智能手機收集數據。
?
- 掃描此二維碼或通過您的智能手機設備打開鏈接。
?
- 通過智能手機打開鏈接后,智能手機將顯示在“設備”部分。
?==================================================== ===================
數據采集為了為我們的機器學習模型收集數據,我們將使用智能手機上的 3 軸加速度計傳感器。
- 將智能手機連接到 Edge Impulse 后,轉到“
Data Acquisition
”選項卡。從 中選擇我們
phone
的device
,給出標簽(讓我們從“空閑”開始),Sample length
of10000
(10s),Sensor
asaccelerometer
和 Frequency
of62.5Hz
。?
- 點擊“
Start Sampling
”開始采樣設置的樣本長度。?
- 大約兩秒鐘后,設備應完成采樣并將文件上傳回 Edge Impulse。采樣后,數據將出現在數據采集中。
- 您會在工作室的“ ”下看到一個新行。
Collected data
- 當您單擊它時,您現在會看到繪制的原始數據。由于開發板上的加速度計有三個軸,您會注意到三個不同的線,每個軸一個。
?
- 重復此過程以收集盡可能多的樣本。
- 對其他標簽起飛/降落、向前、向后、向左和向右重復此操作。
- 確保對動作進行變化。例如,同時進行慢速和快速運動,并稍微改變板的方向。您永遠不會知道您的用戶將如何使用該設備。
- 收集到足夠的數據后,它們將顯示在同一選項卡下。
?
- 單擊每個數據行以查看其 10 秒樣本長度的原始值圖。
Idle
?
takeoff/land
?
forward
?
back
?
left
?
right
?
- 現在我們有足夠的數據,我們需要將數據拆分為a
training dataset
和atest dataset.
- 不用擔心。Edge Impulse Studio 也為我們提供了便利。
- 前往“
Dashboard section
”并向下滾動至“Danger Zone
”。- 點擊“
Rebalance datasheet
”,自動將數據集拆分為訓練和測試,比例為 80/20。?
- 現在我們已經獲取并設置了我們的訓練數據以供進一步處理。
==================================================== ===================
手勢模型訓練由于我們已經獲取了所有數據,是時候訓練數據集以適應手勢模型了,Edge Impulse 使我們無需編寫任何代碼就可以更輕松地生成模型。
有了訓練集,我們就可以設計一個沖動。脈沖獲取原始數據,在較小的窗口中對其進行切片,使用信號處理模塊提取特征,然后使用學習模塊對新數據進行分類。信號處理模塊總是為相同的輸入返回相同的值,用于使原始數據更易于處理,而學習模塊則從過去的經驗中學習。
- 轉到“
Impulse Design
”選項卡。- 我們已經
Time series data
為我們填充了該部分。?
- 選擇(2s) 中的 a 和
window size
中的a 。2000
window increase
80ms
- 現在單擊
Add a processing block
并選擇Spectral Analysis
。- 參數將為我們自動填充。
- 此模塊應用濾波器,對信號執行頻譜分析,并提取頻率和頻譜功率數據。
?
- 現在單擊添加學習塊并選擇神經網絡 (Keras)。
- 參數將為我們自動填充。
- 該塊采用這些光譜特征并學習區分六個(空閑、起飛、前進、后退、左、右)類。
?
- 該
Output features
塊將具有我們獲得的所有標簽。- 現在單擊
Save Impulse
以保存配置。?
- 前往
Spectral Features
標簽。- 這將在屏幕頂部顯示原始數據(您可以通過下拉菜單選擇其他文件),并通過右側的圖表顯示信號處理的結果。
?
- 對于光譜特征塊,您將看到以下圖表:
After filter
- 應用低通濾波器后的信號。這將消除噪音。
Frequency domain
- 信號重復的頻率(例如,每秒移動一個波將在 1 Hz 處顯示一個峰值)。
Spectral power
- 在每個頻率進入信號的功率量。?
- 一個好的信號處理模塊會為相似的數據產生相似的結果。如果您移動滑動窗口(在原始數據圖表上),圖表應該保持相似。
- 此外,當我們切換到具有相同標簽的另一個文件時,您應該會看到類似的圖表,即使設備的方向不同。
- 單擊
Save parameters
。這會將您發送到Feature generation
屏幕。?
- 在這里,我們將在窗口中拆分所有原始數據(基于窗口大小和在創建脈沖步驟中選擇的窗口增加)并在所有這些窗口上應用光譜特征塊。
- 單擊
Generate features
。?
- 將
Feature explorer
加載。這是針對所有生成的窗口的所有提取特征的圖。- 您可以使用此圖表來比較您的完整數據集。例如,通過繪制 X 軸上第一個峰的高度與 Y 軸上 0.5 Hz 和 1 Hz 之間的頻譜功率。
- 一個好的經驗法則是,如果您可以在多個軸上直觀地分離數據,那么機器學習模型也將能夠做到這一點。
?
- 對于我們的數據集,特征數據或多或少是分開的,這是一個好兆頭。如果您的功能重疊,最好獲取更多數據。
- 該頁面還顯示了預期的設備性能以及用于計算特征的處理時間和峰值 RAM 使用率。
?處理完所有數據后,就該開始訓練神經網絡了。神經網絡是一組算法,松散地模仿人腦,旨在識別模式。我們在這里訓練的網絡將信號處理數據作為輸入,并嘗試將其映射到四個類之一。
那么神經網絡如何知道要預測什么?神經網絡由多層神經元組成,所有神經元相互連接,每個連接都有一個權重。輸入層中的一個這樣的神經元將是 X 軸的第一個峰值的高度(來自信號處理塊),而輸出層中的一個這樣的神經元將是
takeoff
(其中一個類)。在定義神經網絡時,所有這些連接都是隨機初始化的,因此神經網絡將進行隨機預測。在訓練期間,我們然后獲取所有原始數據,要求網絡進行預測,然后根據結果對權重進行微小的更改(這就是標記原始數據很重要的原因)。這樣,經過多次迭代,神經網絡就會學習;并且最終將在預測新數據方面變得更好。
- 前往
NN classifier
標簽。?
- 設置
Number of training cycles
為80
、 和。Learning rate
_ _ 您可以使用這些值來調整訓練模型的準確性。0.0005
Minimum confidence rating
0.60
- 暫時將其他參數保留為默認值,然后單擊
Start training
。- 現在該
Training Output
部分被填充。?
- 它顯示了網絡的準確性和混淆矩陣。該矩陣顯示了網絡何時做出正確和不正確的決定。你看到了,
idle
并且takeoff
相對容易預測。- 它還顯示了此模型的預期設備性能。
- 現在我們已經生成了模型,我們需要對其進行測試。
==================================================== ===================
手勢模型測試
- 前往
Model Testing
標簽。我們可以在這里看到我們的訓練數據集。單擊
Classify all
。?
- 這將使用模型未知的訓練數據生成模型驗證結果。我們可以看到,我們訓練的模型能夠以 74.70% 的準確率進行分類,考慮到在訓練部分提供給模型的少量訓練數據,這是相當不錯的。
- 它還顯示了錯誤預測的標簽。
- 通過檢查這些結果
Feature explorer
,我們可以了解哪些標簽被錯誤分類,并使用更多的訓練數據來重新訓練我們的模型,以便更好地分類這些數據。- 您還可以通過選項卡對來自智能手機的數據進行實時分類
Live classification
。您的設備應在 下顯示為在線Classify new data
。將“樣本長度”設置為 2000
(2 秒),單擊Start sampling
,然后開始做動作。- 之后,您將獲得有關網絡認為您所做的事情的完整報告。
?
- 現在我們已經訓練和測試了我們的模型,讓我們將它部署到我們的 M5Stack 模塊中。
?
- 構建完成后,系統會提示您下載庫 zip 文件。
- 將 zip 文件保存到我們的項目目錄中。
==================================================== ===================
界面
現在我們已經準備好我們的無人機、M5Stack 模塊和手勢模型,讓我們在代碼中將所有內容連接在一起。
本項目教程的部分提供了完整的接口代碼。
Code
將代碼刷入 M5Stack 模塊。
對于用戶交互:
- 我們使用 M5Stack 上的 TFT 屏幕來顯示 wifi 連接狀態和手勢檢測狀態。
- 長按 M5Stack 模塊上的按鈕 A 啟用手勢控制,長按按鈕 B 禁用它。
- 移動 M5Stack 模塊以做出各種手勢。
?==================================================== ===================
測試
現在讓我們測試一下手勢控制,看看它的效果如何。
?==================================================== ===================
結論
盡管推理引擎無法準確地進行左右分類,但總體表現令人滿意。此外,在某些情況下,需要多次應用手勢命令才能進行檢測和分類。
我們相信這些問題可以通過添加更多的訓練數據集并使模型更加靈活來得到更好的解決。
==================================================== ===================
接下來是什么 !!
- 使用更多測試數據訓練模型以實現更準確的分類。
- 描述檢測到的手勢的音頻反饋。
==================================================== ===================
參考
https://arc.aiaa.org/doi/10.2514/6.2018-4231
https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello%20SDK%202.0%20User%20Guide.pdf
https://store.dji.com/product/tello
https://github.com/akshayvernekar/telloArduino
https://docs.m5stack.com/en/quick_start/m5core/m5stack_core_get_started_Arduino_Windows
https://www.arduino.cc/reference/en/libraries/m5stack/
https://shop.m5stack.com/products/fire-iot-development-kit?variant=16804798169178
https://docs.edgeimpulse.com/docs/continuous-motion-recognition
- 基于M5Stick-V和M5Stack的辦公桌機器人助手
- StickC M5Stack LED閃爍
- M5Stack圣誕雪球開源分享
- 帶M5Stack的工廠監控系統
- M5Stack智能植物澆水開源項目
- Bareboat Necessities的M5Stack堅韌Arduino船展示
- 基于M5Stack的PID控制學習平臺
- 基于M5Stack的抗COVID安全門
- 帶M5Stack的音頻頻譜顯示
- 配備M5Stack的智能工廠
- 用M5Stack設備裝飾圣誕樹
- 用于M5Stack的Arduino大型國際象棋
- 帶有M5Stack的電報控制無人機
- 帶有EdgeImpulse的基于視覺的手勢控制無人機
- 使用myCobot280 M5Stack控制器
- 無人機鏈路系統的組成 1.8w次閱讀
- M5Stack IOT智能門禁系統–基礎篇(Blockly+MQTT) 3612次閱讀
- 如何自制一個自動駕駛無人機 7442次閱讀
- 基于信號識別和到達時間差定位無人機控制源的方法 2158次閱讀
- 關于無人機如何選擇六款無人機的解析 1.4w次閱讀
- 怎樣使無人機安全飛行?無人機飛行需要掌握什么安全知識 1.6w次閱讀
- 新疆為什么禁飛無人機_新疆無人機禁飛區域 5.7w次閱讀
- 水下無人機的用途和優勢有哪些 9549次閱讀
- 水下無人機原理分析 1.4w次閱讀
- nixie微型無人機的功能介紹_nixie微型無人機多少錢 1.3w次閱讀
- 微型無人機發展前景_無人機發展趨勢 8518次閱讀
- 大疆做不做軍用無人機 2w次閱讀
- 中國有哪些軍用無人機_國內軍用無人機排名 11.3w次閱讀
- 大疆無人機如何在禁飛區起飛 15.3w次閱讀
- 電動無人機和油動無人機性能的對比 2805次閱讀
下載排行
本周
- 1VCC啟動電路(可下載)
- 748.32 KB | 2次下載 | 免費
- 2TDA7850音頻功率放大器英文手冊
- 0.39 MB | 1次下載 | 免費
- 3HAC1108TS型LVCMOS時鐘緩沖器產品說明書
- 386.75 KB | 1次下載 | 免費
- 460KW電機控制器硬件驅動電路設計(可下載)
- 720.01 KB | 1次下載 | 免費
- 5LT7404FJ-X N溝道增強型功率MOSFET規格書
- 1.48 MB | 次下載 | 免費
- 6LTH004FK互補增強型功率MOSFET規格書
- 1.39 MB | 次下載 | 免費
- 7LT1756SJ N溝道增強型場效應晶體管規格書
- 0.94 MB | 次下載 | 免費
- 8廣州唯創電子WTK6900HC語音識別芯片資料
- 1.14 MB | 次下載 | 免費
本月
- 1STM32CubeMX用于STM32配置和初始化C代碼生成
- 21.90 MB | 627次下載 | 免費
- 2STM32開發板教程之STM32開發指南免費下載
- 24.88 MB | 176次下載 | 3 積分
- 3EN60335-1安規標準 中文版本
- 1.86 MB | 53次下載 | 1 積分
- 4OAH0428最新規格書(中文)
- 2.52 MB | 28次下載 | 10 積分
- 5Altium-常用3D封裝庫(Step)接插件篇
- 4.95 MB | 26次下載 | 免費
- 6UHV系列雷電沖擊電壓發生器試驗裝置詳細說明使用
- 1.07 MB | 17次下載 | 免費
- 7介紹一些常用的電子元器件
- 3.20 MB | 8次下載 | 免費
- 8麻將機升降電路
- 0.12 MB | 6次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935124次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191371次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183336次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81583次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論