天天看點

python實作大疆Tello無人機控制平台并實作語音控制/手勢控制/人臉跟蹤/綠球跟蹤/拍照錄像介紹控制視覺功能拍照錄像結語

Tello智能資訊處理平台

  • 介紹
  • 控制
    • 鍵盤控制
    • 語音控制
  • 視覺功能
    • 人臉跟蹤
    • 綠球跟蹤
    • 手勢控制
    • 體态控制
  • 拍照錄像
  • 結語

介紹

本項目是我的一個課程設計。本來打算做大型四旋翼無人機的控制,後來老師給了兩個Tello無人機(分别是帶拓展闆和不帶拓展闆的),就轉到了做Tello的控制。項目的GUI界面和背景邏輯以及功能整合、整體優化調試由我完成,其他隊員負責各視覺功能子子產品的實作和調試。

源碼及項目詳細介紹請看GitHub倉庫:Tello智能資訊處理平台

此平台使用python語言開發,可用于控制大疆公司的Tello系列無人機,并利用無人機的攝像頭、紅外等傳感器完成一系列視覺功能,包括:目标檢測與跟蹤(綠色小球與人臉)、手勢控制、體态控制等。

也可控制Tello進行拍照、錄像,以及做出一些抛飛、翻轉、手上降落等花式動作。

python實作大疆Tello無人機控制平台并實作語音控制/手勢控制/人臉跟蹤/綠球跟蹤/拍照錄像介紹控制視覺功能拍照錄像結語

控制

鍵盤控制

鍵盤控制一直處于開啟狀态。每個鍵盤鍵位對應的功能如下:

  • tab:

    起飛
  • L/P/G/H:

    降落/懸停/抛飛/手上降落
  • W/A/S/D:

    向前/左/後/右
  • U/I:

    向上/下
  • J/K:

    順/逆時針旋轉
  • Z/X/C/V:

    前/後/左/右空翻

語音控制

有效語音指令如下:

  • 起飛;
  • 降落;
  • 懸停;
  • 向前/後/左/右/上/下飛x厘米(x=20~500);
  • 順時針旋轉x度(x=1~360);
  • 向前/後/左/右翻滾;
  • 速度設為x厘米每秒(x=10~100);
  • 向前/後/左/右;(不建議,此指令會讓無人機一直朝某個方向飛,直到得到“停”指令);
  • 停;
    python實作大疆Tello無人機控制平台并實作語音控制/手勢控制/人臉跟蹤/綠球跟蹤/拍照錄像介紹控制視覺功能拍照錄像結語

視覺功能

人臉跟蹤

在菜單欄開啟人臉跟蹤功能後,無人機會搜尋人臉目标(最好隻有一個),然後靠近人臉并保持在一定的安全距離内,且随着人的移動而移動。

python實作大疆Tello無人機控制平台并實作語音控制/手勢控制/人臉跟蹤/綠球跟蹤/拍照錄像介紹控制視覺功能拍照錄像結語

綠球跟蹤

與人臉跟蹤類似,開啟此功能後,無人機能夠檢測跟随綠色小球(球不要太小)。

python實作大疆Tello無人機控制平台并實作語音控制/手勢控制/人臉跟蹤/綠球跟蹤/拍照錄像介紹控制視覺功能拍照錄像結語

手勢控制

開啟此功能後,會顯示一個子視窗,并顯示計算機攝像頭視訊流。識别出比劃的手勢後,無人機會做出相應的動作。為了避免連續識别并發出指令,我們設定了每次跳過一定幀數後再識别一次。

python實作大疆Tello無人機控制平台并實作語音控制/手勢控制/人臉跟蹤/綠球跟蹤/拍照錄像介紹控制視覺功能拍照錄像結語

支援的手勢如下:

  • 雙手合十:

    啟動;
  • 大拇指向上:

    起飛;
  • 大拇指向下:

    降落;
  • 一/二/三/四/五/六:

    向上/下/左/右/前/後飛x厘米;
  • 七/八:

    順/逆時針旋轉90度;
  • 九:

    懸停;

飛行速度與飛行步長與主界面中對滑塊設定的值有關。

體态控制

我們加入這個功能的初衷是想通過人體的姿勢來控制無人機。

python實作大疆Tello無人機控制平台并實作語音控制/手勢控制/人臉跟蹤/綠球跟蹤/拍照錄像介紹控制視覺功能拍照錄像結語

但是我們沒有時間去訓練自己的輕量檢測模型。我們尋找到了

AlphaPose

這個開源姿勢檢測庫,并選擇其中運作速度較快的一個模型融合進我們的平台中。

盡管如此,檢測速度還是無法達到我們的預期。而且由于整個項目是在我的macOS系統上建構,無法使用CUDA加速計算,是以整體檢測速度非常慢。

為了避免危險情況發生,我并沒有為體态檢測結果設定相應的無人機指令,隻将體态檢測結果顯示在主界面上。

拍照錄像

在主界面點選拍照後,會将目前無人機原始畫面以jpeg格式存儲到本地。

點選錄像後,程式開始将無人機原始畫面以avi格式編碼為視訊流,再次點選錄像按鈕後,停止錄像并将視訊儲存到本地。

結語

我們大約用了十天左右的時間完成這個平台,比較倉促,有些功能還能夠再完善一下。但是在答辯結束後我們已經将兩個無人機還給老師了,如果你對Tello感興趣的話,可以在我們項目的基礎上添加更多的功能以及完善一下邏輯和bug。

項目源碼在文章開頭的連結裡,感興趣的朋友可以fork一下,點個星星哦

繼續閱讀