李 輝,蘆利斌,金國棟
(第二炮兵工程大學907 教研室,陜西 西安710025)
目前,無人機(UAV)的遠程控制主要還是以基站和遙控器為主。操作者通過地面站或遙控設備控制無人機飛行,操作方式比較復雜,操作人員需要專業學習和培訓才能掌握無人機的基本操作技巧。對于普通用戶來說,需要一種簡單的控制方式,操作者只需通過直觀感覺和簡單學習就能夠操作無人機。隨著信息化的不斷發展,人機交互[1](human-computer interaction,HCI)已經成為研究的重點,人機交互的中心已由計算機轉移到人的身上,人通過手勢、姿態、語音等方式來實現人機交互[2]。人體姿態和手勢與Kinect 相結合進行開發,在教育界、商務界、醫療界、計算機應用和機器人視覺控制等方面都有很多的成果[3]。
體勢控制包括手勢和姿態,具備自然、直觀、容易學習和操作等特點。本文選擇體勢作為無人機控制端人機交互的方式,Kinect 傳感器作為人機交互的中介,將自然用戶界面(natural user interface,NUI)應用到無人機的控制中來,設計了與四旋翼無人機的控制指令對應的人體體勢動作和相關識別算法,使得無人機的控制比傳統方式更為簡單直觀。基于Kinect 傳感器和自主組裝的四旋翼無人機平臺進行了實驗,驗證了體勢控制無人機飛行的可行性。
Kinect 傳感器由Microsoft 公司于2010 年推出,其組成如圖1 所示。

圖1 Kinect 結構圖Fig 1 Structure chart of Kinect
Kinect 傳感器可以同時獲取彩色圖像數據和深度圖像數據,支持實時的全身骨骼跟蹤,獲取人體骨架的20個關節點[4],如圖2 所示。同時,Kinect SDK 允許開發者借助Visual Studio 2010 進行相關開發,通過相關算法設計實現人體的動作識別。
無人機主要分為旋翼和固定翼兩種。研究表明,旋翼飛機在結構復雜度、機動性和靈活性方面均具有更強的優勢[5]。本文選用當前研究較多的四旋翼飛機作為無人機平臺。如圖3,四旋翼無人機通過調節四個電機轉速,控制起降、速度、三姿態(俯仰角φ,偏航角ψ,橫滾角θ),實現飛行控制[6]。本文設計實現四旋翼向六個方向的飛行,即為垂直起降、前后平飛、左右平飛。

圖2 人體骨架節點圖Fig 2 Joints of human skeletal

圖3 四旋翼無人機Fig 3 Quadrotor UAV
本文的無人機體感控制系統如圖4,主要包括操控部分和無人機部分。操控部分包括Kinect 傳感器和計算機,實現人對無人機非接觸的控制。Kinect 獲取操作者的體勢動作,通過計算機端的軟件識別人體動作并生成為對應的無人機控制指令,通過數傳模塊,發送給無人機。無人機接收指令后,送入機載的控制模塊處理并做出相應的動作。
2.2.1 骨骼數據獲取
Kinect 水平放置,建立骨骼空間坐標系O—XYZ 如圖5所示,原點O 為Kinect 紅外攝像頭中心,X 軸與水平面平行,向右為正;Y 軸和水平面垂直,向上為正;Z 軸為紅外攝像頭的光軸,景深方向為正。當操作者位于Kinect 前方,Kinect 獲取人體20 個骨骼節點的三維坐標[7]。本文主要利用上肢的左右手、肘、肩共6 個節點。

圖4 系統結構示意圖Fig 4 Diagram of system structure

圖5 骨骼空間坐標系Fig 5 Skeleton space coordinate system
2.2.2 體勢設計與識別
當人體做出特定動作,全身的骨骼節點位置坐標滿足一定條件,即被識別為一種控制指令。對人體的體勢識別主要是對骨骼節點之間的角度與歐氏距離進行判別,當達到一定的角度與距離時就被系統識別并處理[8~10]。
具體體勢設計如表1,無人機起飛后,除了這六種控制動作,無人機都保持空中懸停狀態。體勢動作設計思想:兩臂同時舉起,飛機起飛;兩臂同時放下,飛機降落;僅左臂舉起,利用左肘關節的夾角控制飛機左右平飛;僅右臂舉起,利用右肘關節的角度控制飛機前后平飛。

表1 無人機指令與對應的體勢動作設計Tab 1 Instructions of UAV and corresponding design of body posture
人體姿態識別算法流程圖見圖6。

圖6 姿態識別算法流程圖Fig 6 Flowchart of gesture recognition algorithm
下面以控制飛機左右平飛體勢動作為例分析體勢識別算法。如圖7,左手節點A1、左肘節點B1、左肩節點C1,形成三維坐標系的三角形。邊長和角度為


圖7 上肢骨骼節點坐標圖Fig 7 Coordinates figure of upper limb joints
操作者給出左飛指令:左臂舉起,左肩節點C1,左肘節點B1,左手節點A1的Y 坐標值依次增大;同時右臂放下,右肩節點C2,右肘節點B2,右手節點A2的Y 坐標值依次減小;左肘關節的夾角∠A1B1C1大于90°(夾角∠A1B1C1小于90°,則飛機右飛)。骨骼節點滿足以下條件

當骨骼節點坐標滿足公式(5)時,計算機端軟件將該體勢動作識別為飛機向左平飛指令,進而生成無人機左飛控制指令,即為調整航向角并前進,發送給無人機平臺,控制無人機向左飛行。
本文采用自主搭建的微型四旋翼無人機,該四旋翼機可以通過數傳模塊,接收控制指令并進行相應的飛行。實驗系統結構如圖8 所示,Kinect 傳感器捕捉操作者體勢動作,傳給計算機,通過姿態識別生成相應的控制指令并發給四旋翼無人機。無人機控制指令通信采用2.4 GHz 無線電傳輸,使用數傳模塊nRF24LE1(室內傳輸距離30 ~40 m),將飛控指令包發送給機載設備。

圖8 實驗系統框圖Fig 8 Block diagram of experimental system
軟件系統是在VS2010 環境下開發的,使用C#編程實現。通過調用Kinect SDK,訪問連接到計算機的Kinect 傳感器,獲取彩色圖像、深度數據、骨骼節點坐標并進行骨骼跟蹤。通過上文設計的動作識別算法,識別人體體勢動作,生成無人機控制指令并發送給無人機。算法流程如圖9。

圖9 軟件流程圖Fig 9 Flowchart of software
本文針對上述無人機控制系統,在室內搭建了基于Kinect 傳感器和四旋翼飛機的實驗平臺,進行了室內飛行實驗。實驗結果表明:人體體勢動作能夠實時地控制四旋翼進行垂直起降、前后平飛以及左右平飛。
如圖10 所示,軟件界面的左側、右中、右下顯示控件分別顯示的是Kinect 獲取的骨骼節點識別模型、深度數據、彩色圖像數據。操作者給出起飛動作指令,四旋翼收到指令后,垂直起飛。
為了驗證體感控制的準確性,本實驗還選取了20 名不同身高體型的操作者,分別進行以上6 個動作的測試,測試結果如表2 所示。測試結果表明:該方法對不同操作者的控制姿態都具有較高的識別率。

圖10 起飛體勢指令與顯示Fig 10 Posture instruction of taking off and display
實驗操作者體勢動作識別屬于靜態體勢識別,操作者給出一個控制動作,需持續0.5 s 以上,當上肢節點位置變化過快,操作的流暢性下降。同時,Kinect 精度有限,人到傳感器的理想距離為1.5 ~3.0 m,對操作者活動有一定限制;有遮擋的情況下,操縱準確性也會受到影響。操作者的身高和體型對體勢識別的影響不大,平臺通用性較好。

表2 不同操作者的測試結果Tab 2 Test results of different operators
本文提出了一種基于Kinect 傳感器的無人機體感控制方案。利用Kinect 對操作者進行骨骼跟蹤和骨骼數據提取,設計了一組體勢動作和識別算法,進而生成對應的無人機控制指令,遠程控制無人機飛行。利用自主搭建的四旋翼無人機平臺對本文的方法進行了驗證。結果表明:操作者通過Kinect 傳感器和本文設計的體勢動作和識別算法,可以自然、直觀、準確地對無人機進行體勢操控,降低了無人機控制的復雜性、專業性。
[1] Cheng Liying,Sun Qi,Su Han.Design and implementation of human-robot interactive demonstration system based on kinect[C]∥Chinese Control and Decision Conference,2012:971-975.
[2] 黃國范,李 亞.人體動作姿態識別綜述[J].電腦知識與技術,2013(1):133-135.
[3] 朱 濤,金國棟,蘆利斌.基于Kinect 應用概述及發展前景[J].現代計算機,2013(2):8-11.
[4] 余 濤.Kinect 應用開發實戰:用最自然的方式與機器對話[M].北京:機械工業出版社,2013:26-40.
[5] Bouabdallah S,Becker M,Siegwart R.Autonomous miniature flying robots coming soon[J].IEEE Robotics&Automation Magazine,2007,14:88-98.
[6] 于雅莉,孫 楓,王元昔.基于多傳感器的四旋翼飛行器硬件電路設計[J].傳感器與微系統,2011,30(8):113-115.
[7] 謝 亮,廖宏建,楊玉寶.基于Kinect 的姿態識別與應用研究[J].計算機技術與發展,2013,23(5):258-260.
[8] 符秀輝,杜一鳴.基于Kinect 傳感器的姿態識別及應用研究[J].電子技術,2013,23(5):157-158.
[9] 戰蔭偉,于芝枝,蔡 俊.基于Kinect 角度測量的姿勢識別算法[J].傳感器與微系統,2014,33(7):129-132.
[10]Asiimwe R,Anvar A.Automation of the maritime UAV command,control,navigation operations,simulated in real-time using Kinect sensor:A feasibility study[J].World Academy of Science,Engineering and Technology,2012,72:408-412.