DIY一個基於樹莓派和Python的無人機視覺跟蹤系統
無人機通過圖傳將航拍到的圖像存儲並實時傳送回地面站差點兒已經是標配。假設想來點高級的——在無人機上直接處理拍攝的圖像並實現自己主動控制要怎么實現呢?事實上視覺跟蹤已經在一些高端的消費級無人機上有了應用,只是玩現成的永遠沒有自己動手來勁;)。
前段時間DIY了一個無人機三軸雲台的視覺跟蹤系統,除去雲台花了¥370,本文將設計思路與實驗效果分享出來。
一、基本配置
1.1 硬件
- 計算平台:樹莓派3 (¥219.00)
- 攝像頭:USB網絡攝像頭(¥108.00)
- 雲台:參考上一篇博文FY650的組裝
- JoyStick搖桿:用於測試和干預雲台(¥8.00)
- Arduino UNO開發板:用於JoyStick輸出信號的採集與AD轉換並與樹莓派串口通信(¥35.00)
1.2 軟件
- 編程語言:Python
- 集成開發環境1:Eclipse。在windows平台上的視覺算法編程調試
- 集成開發環境2:Geany,在Linux平台上的算法與雲台聯調
1.3 准備知識
前面的幾篇博文分別介紹了這個系統用到的基本知識:
二、設計步驟
2.1 雲台調試
(1) 搭建一個用JoyStick控制雲台轉動的系統
由於樹莓派GPIO沒有模擬輸入口。因此JoyStick接Arduino完畢輸入模擬信號的AD轉換。並將轉換后的信號通過串口發送給樹莓派。
通過這個系統結合示波器,搞清楚了所用雲台轉動控制的原理和控制信號特征。雲台調試階段系統連接圖例如以下所看到的。終於通過樹莓派的GPIO控制雲台俯仰和水平轉動。一開始想用Gopro作為視頻採集設備,但查了非常多資料也嘗試了各種方法發現臨時沒法實現(假設有的話請留言告訴我:)。因此換了個廉價的網絡攝像頭。
Gopro能夠通過wifi將圖像實時傳給手機或pad。就是不能傳給樹莓派。
(2) 編寫雲台控制算法
依據上一步得到的雲台控制信號特征。編寫雲台控制算法。輸入是目標中心與圖像中心的偏移量△x,△y,輸出為雲台俯仰、水平的控制變量dx,dy。
是的,攝像頭外殼是紙糊的-_-。
2.2 算法調試
(1) 在windows平台上寫跟蹤算法
USB攝像頭接上電腦用Eclipse寫跟蹤算法,輸出偏差量等參數調試。
(2) 拷貝算法到樹莓派調試
由於樹莓派有多個GPIO可連雲台,因此雲台跟蹤控制必需要在樹莓派上調試。Python多平台部署的長處在這就體現出來了,直接將算法復制到樹莓派就可以執行調試。調試過程稍有點復雜,一開始的效果不好。耐心調,耐心改算法,效果也就慢慢出來了。
三、跟蹤演示

跟蹤效果截圖:
眼下雲台和攝像頭已經裝上650無人機,航拍時的效果還有待實驗。歡迎留言或郵件iracer@163.com討論:)
轉載請注明出處(本文更新鏈接):http://blog.csdn.net/iracer/article/details/54837636