李夢 曾林鵬 黃旭陽
摘 要:本設計通過電子技術、機械裝置設置和應用程序編寫來設計體感無人機,以STC15W貼片單片機為無人機的控制核心,分為無人機模塊、Kinect傳感器模塊、地面站模塊和控制程序模塊,用Kinect傳感器作為用戶肢體采集的核心部件,通過對用戶動作的采集,用程序來識別出用戶的當前動作,傳輸指令到地面站,再發送給無人機,實現無人機的體感控制。同時,為了地面人員的安全,對一些危險姿態采用了一定的安全措施,使新手用戶在使用時,不會因為操作不當造成不必要的傷害,并且由遙控器到體感這一控制系統的變化,提高了無人機操作的樂趣。
關鍵詞:無人機;Kinect傳感器;體感
近年來,無人機在民用方面的應用越來越多,各國在無人機的民用方面逐漸開放。引用大疆創新創始人汪滔的話:“人類對于飛行的夢想與生俱來。”隨著無人機的迅速發展,無人機也越來越常見。而無論是工業級無人機還是消費級無人機,絕大多數無人機都配備有遙控器。遙控器提供精準操作方式的同時,也讓小白用戶望而卻步。有人說,遙控器是無人機的痛點。現實也是如此,而體感手勢操作不僅是一種新的操控方式,更是降低了操控的難度。
手朝上升空,手朝下降低,伸左手朝左,伸右手朝右等。不同手勢對應不同的無人機操作。新的操作方式,不僅添加了無人機的可玩性,還更利于新手入門。這種操作方式極大地降低了操控的難度,也更利于新手掌握無人機飛行時的方向感,提高學習無人機飛行的效率。
1 體感無人機設計方法
本設計是通過電子技術、機械裝置設置和應用程序編寫來設計體感無人機,無人機主要分為無人機模塊、Kinect傳感器模塊、地面站模塊和控制程序模塊,由這幾個模塊來實現體感無人機的功能,無人機的總體控制原理如圖1所示。
1.1 無人機模塊
無人機模塊設計的目的是實現體感無人機可以成功起飛升空,并在空中停留一定的時間,以及可以完成空中的前后左右運動。
在滿足微型旋翼無人機系統穩定、可靠運行的情況下,應盡量減少開發過程中帶來的風險,降低開發成本。因此,應盡量選擇低功耗、高性能、性價比高的電子元器件[1]。所以我們選用STC15W貼片芯片作為單片機、選用MPU-6050陀螺儀、無線2.4 G模塊LT8910、設計4軸電機模塊、并配置下載和電池模塊。MPU-6000的角速度全格感測范圍為±250、±500、±1 000與±2 000°/sec(dps),可準確追蹤快速與慢速動作,并且,用戶可程式控制的加速器全格感測范圍為±2 g,±4 g,±8 g與±16 g,對姿態的變化較為敏感,符合我們的制作需求。在STC15W中下載編寫的源程序,通過陀螺儀監測無人機的姿態狀況,返回無人機的姿態狀態到單片機,如果無人機有所傾斜,則陀螺儀就會傳回數據,通過對數據的判斷,可以判斷出無人機向哪一側傾斜,然后由主芯片控制電機模塊的4個電機的轉速,高度較低的一側電機輸出增加,轉速加快,通過一直判斷無人機的姿態,返回姿態數據給單片機,從而控制無人機的平衡。同時,無線模塊接收到地面站的信號,會將信號傳輸到單片機,然后由單片機控制4個電機,來完成前后左后上下等動作。
1.2 Kinect傳感器模塊
Kinect是由微軟公司開發,可以使用肢體動作來操作各種軟件、硬件的一套平臺。如圖2所示,它共有3個鏡頭,分別位于Kinect的兩側和中間位置。其中,中間的鏡頭是基于RGB的三基色普通攝像機,作用是用來采集彩色影像。而左邊的鏡頭為微紅外線發射裝置,右邊的鏡頭是微紅外線(CMOS)攝像機構成的3D立體結構光深度感應裝置,是用來采集深度數據的實物距離[2]。
通過傳感器捕捉人物的肢體動作,通過深度攝像功能,拍攝出運用深淺體現遠近的圖片,獲得突出手和手臂的動作的圖片,通過算法,去除其他部分,分割出手部動作,通過識別手勢的一些基本特征來進行編號,手指向上則上升,向下則下降,如果手部顏色由深到淺則是拉近,由淺到深則是遠離,手指向左和向右對應的無人機飛行方向也是向左向右。
1.3 地面站模塊
地面站模塊設計的目的是實現地面控制終端和無人機之間的無線通信,使得兩者之間有相互的運動控制和狀態反饋以及圖像的傳輸與顯示。
在無人機起飛、飛行、降落的過程中與無人機的飛行控制系統進行實時通訊,保證無人機是在地面控制終端的控制之下。在確定地面控制指令的情況下,地面站通過無線鏈路,在串口通信協議的基礎上,將人所發出的指令傳輸至無人機的飛行控制系統,使得無人機做出相應的動作。與此同時,無人機的飛行控制系統也將無人機上各種傳感器所得的姿態環境參數數據回傳至地面站,并通過地面站的顯示程序和顯示器進行顯示。使得操作者可以實時看到無人機的具體運行狀態以及對無人機的姿態進行相應的調整。
在此設計中,地面站連接電腦串口,在電腦程序判斷出來人的手勢動作后,串口輸出前后左右上下等指令,通過地面站把指令轉換成無線信號的方式發送出去,從而控制無人機的飛行,同時也增加了無人機的控制距離。同時,無人機的飛行狀態也可以發送回地面站,再通過地面站傳回電腦,在電腦上顯示一些飛行的參數,比如高度和角度等。
1.4 控制程序模塊
控制程序模塊設計的目的是實現Kinect傳感器模塊、地面站模塊和無人機模塊之間的協調控制,使得整體的系統具有良好的完整性和良好的協調性。
在控制模塊中,使用了C語言程序進行編程,對Kinect傳感器模塊所返回的圖像進行程序內的算法處理,得到相應的手勢動作,通過手勢動作的辨別得到相應的飛行控制指令,通過電腦串口將執行指令傳送至地面站模塊,之后控制地面站模塊與無人機飛行控制系統進行無線鏈路的串口通信,將指令傳送至無人機飛行控制系統,飛行控制系統再控制無人機上的電機,完成指定的飛行動作。并同時通過地面站模塊來讀取無人機飛控所回傳的相應的無人機姿態和環境數據,并顯示在控制程序的前面板界面上。在電腦程序接收到一些極端姿態信息(比如連續翻轉,機身翻轉1 s以上默認為姿態危險)的時候,那么電腦程序會發送緊急停止指令,通過地面站發送出去,從而使無人機螺旋槳瞬間停止,從而保證地面人員的安全。在人的動作指令沒有發送時,無人機將會自動懸停于空中。控制程序在保證無人機受到操控者控制以及回傳數據顯示的同時,也保證了3個系統模塊的實時同步性,以及無人機操作的安全性,這也是系統整體聯動協作的基礎。
2 結語
在本項目中,Kinect體感器手勢控制無人機擺脫了傳統的遙控器操控方式,為入門級新手提供更加簡單的控制方法,降低了操控的難度。手朝上升空,手朝下降低,伸左手朝左,伸右手朝右等。不同手勢對應不同的無人機操作。新的操作方式,添加了無人機的可玩性,從遙控器轉化為肢體動作,降低了上手難度。
[參考文獻]
[1]張翔,吳嘉敏,王慧,等.微型旋翼無人機系統的設計與實現[J].電腦與電信,2017(12):5-9.
[2]楊瓊楠,張苗苗,楊聰錕,等.基于Kinect手勢識別的智能小車控制系統設計[J].國外電子測量技術,2018(9):85-89.