李 輝,蘆利斌,金國棟
(第二炮兵工程大學(xué)907 教研室,陜西 西安710025)
目前,無人機(UAV)的遠程控制主要還是以基站和遙控器為主。操作者通過地面站或遙控設(shè)備控制無人機飛行,操作方式比較復(fù)雜,操作人員需要專業(yè)學(xué)習(xí)和培訓(xùn)才能掌握無人機的基本操作技巧。對于普通用戶來說,需要一種簡單的控制方式,操作者只需通過直觀感覺和簡單學(xué)習(xí)就能夠操作無人機。隨著信息化的不斷發(fā)展,人機交互[1](human-computer interaction,HCI)已經(jīng)成為研究的重點,人機交互的中心已由計算機轉(zhuǎn)移到人的身上,人通過手勢、姿態(tài)、語音等方式來實現(xiàn)人機交互[2]。人體姿態(tài)和手勢與Kinect 相結(jié)合進行開發(fā),在教育界、商務(wù)界、醫(yī)療界、計算機應(yīng)用和機器人視覺控制等方面都有很多的成果[3]。
體勢控制包括手勢和姿態(tài),具備自然、直觀、容易學(xué)習(xí)和操作等特點。本文選擇體勢作為無人機控制端人機交互的方式,Kinect 傳感器作為人機交互的中介,將自然用戶界面(natural user interface,NUI)應(yīng)用到無人機的控制中來,設(shè)計了與四旋翼無人機的控制指令對應(yīng)的人體體勢動作和相關(guān)識別算法,使得無人機的控制比傳統(tǒng)方式更為簡單直觀?;贙inect 傳感器和自主組裝的四旋翼無人機平臺進行了實驗,驗證了體勢控制無人機飛行的可行性。
Kinect 傳感器由Microsoft 公司于2010 年推出,其組成如圖1 所示。
圖1 Kinect 結(jié)構(gòu)圖Fig 1 Structure chart of Kinect
Kinect 傳感器可以同時獲取彩色圖像數(shù)據(jù)和深度圖像數(shù)據(jù),支持實時的全身骨骼跟蹤,獲取人體骨架的20個關(guān)節(jié)點[4],如圖2 所示。同時,Kinect SDK 允許開發(fā)者借助Visual Studio 2010 進行相關(guān)開發(fā),通過相關(guān)算法設(shè)計實現(xiàn)人體的動作識別。
無人機主要分為旋翼和固定翼兩種。研究表明,旋翼飛機在結(jié)構(gòu)復(fù)雜度、機動性和靈活性方面均具有更強的優(yōu)勢[5]。本文選用當(dāng)前研究較多的四旋翼飛機作為無人機平臺。如圖3,四旋翼無人機通過調(diào)節(jié)四個電機轉(zhuǎn)速,控制起降、速度、三姿態(tài)(俯仰角φ,偏航角ψ,橫滾角θ),實現(xiàn)飛行控制[6]。本文設(shè)計實現(xiàn)四旋翼向六個方向的飛行,即為垂直起降、前后平飛、左右平飛。
圖2 人體骨架節(jié)點圖Fig 2 Joints of human skeletal
圖3 四旋翼無人機Fig 3 Quadrotor UAV
本文的無人機體感控制系統(tǒng)如圖4,主要包括操控部分和無人機部分。操控部分包括Kinect 傳感器和計算機,實現(xiàn)人對無人機非接觸的控制。Kinect 獲取操作者的體勢動作,通過計算機端的軟件識別人體動作并生成為對應(yīng)的無人機控制指令,通過數(shù)傳模塊,發(fā)送給無人機。無人機接收指令后,送入機載的控制模塊處理并做出相應(yīng)的動作。
2.2.1 骨骼數(shù)據(jù)獲取
Kinect 水平放置,建立骨骼空間坐標(biāo)系O—XYZ 如圖5所示,原點O 為Kinect 紅外攝像頭中心,X 軸與水平面平行,向右為正;Y 軸和水平面垂直,向上為正;Z 軸為紅外攝像頭的光軸,景深方向為正。當(dāng)操作者位于Kinect 前方,Kinect 獲取人體20 個骨骼節(jié)點的三維坐標(biāo)[7]。本文主要利用上肢的左右手、肘、肩共6 個節(jié)點。
圖4 系統(tǒng)結(jié)構(gòu)示意圖Fig 4 Diagram of system structure
圖5 骨骼空間坐標(biāo)系Fig 5 Skeleton space coordinate system
2.2.2 體勢設(shè)計與識別
當(dāng)人體做出特定動作,全身的骨骼節(jié)點位置坐標(biāo)滿足一定條件,即被識別為一種控制指令。對人體的體勢識別主要是對骨骼節(jié)點之間的角度與歐氏距離進行判別,當(dāng)達到一定的角度與距離時就被系統(tǒng)識別并處理[8~10]。
具體體勢設(shè)計如表1,無人機起飛后,除了這六種控制動作,無人機都保持空中懸停狀態(tài)。體勢動作設(shè)計思想:兩臂同時舉起,飛機起飛;兩臂同時放下,飛機降落;僅左臂舉起,利用左肘關(guān)節(jié)的夾角控制飛機左右平飛;僅右臂舉起,利用右肘關(guān)節(jié)的角度控制飛機前后平飛。
表1 無人機指令與對應(yīng)的體勢動作設(shè)計Tab 1 Instructions of UAV and corresponding design of body posture
人體姿態(tài)識別算法流程圖見圖6。
圖6 姿態(tài)識別算法流程圖Fig 6 Flowchart of gesture recognition algorithm
下面以控制飛機左右平飛體勢動作為例分析體勢識別算法。如圖7,左手節(jié)點A1、左肘節(jié)點B1、左肩節(jié)點C1,形成三維坐標(biāo)系的三角形。邊長和角度為
圖7 上肢骨骼節(jié)點坐標(biāo)圖Fig 7 Coordinates figure of upper limb joints
操作者給出左飛指令:左臂舉起,左肩節(jié)點C1,左肘節(jié)點B1,左手節(jié)點A1的Y 坐標(biāo)值依次增大;同時右臂放下,右肩節(jié)點C2,右肘節(jié)點B2,右手節(jié)點A2的Y 坐標(biāo)值依次減小;左肘關(guān)節(jié)的夾角∠A1B1C1大于90°(夾角∠A1B1C1小于90°,則飛機右飛)。骨骼節(jié)點滿足以下條件
當(dāng)骨骼節(jié)點坐標(biāo)滿足公式(5)時,計算機端軟件將該體勢動作識別為飛機向左平飛指令,進而生成無人機左飛控制指令,即為調(diào)整航向角并前進,發(fā)送給無人機平臺,控制無人機向左飛行。
本文采用自主搭建的微型四旋翼無人機,該四旋翼機可以通過數(shù)傳模塊,接收控制指令并進行相應(yīng)的飛行。實驗系統(tǒng)結(jié)構(gòu)如圖8 所示,Kinect 傳感器捕捉操作者體勢動作,傳給計算機,通過姿態(tài)識別生成相應(yīng)的控制指令并發(fā)給四旋翼無人機。無人機控制指令通信采用2.4 GHz 無線電傳輸,使用數(shù)傳模塊nRF24LE1(室內(nèi)傳輸距離30 ~40 m),將飛控指令包發(fā)送給機載設(shè)備。
圖8 實驗系統(tǒng)框圖Fig 8 Block diagram of experimental system
軟件系統(tǒng)是在VS2010 環(huán)境下開發(fā)的,使用C#編程實現(xiàn)。通過調(diào)用Kinect SDK,訪問連接到計算機的Kinect 傳感器,獲取彩色圖像、深度數(shù)據(jù)、骨骼節(jié)點坐標(biāo)并進行骨骼跟蹤。通過上文設(shè)計的動作識別算法,識別人體體勢動作,生成無人機控制指令并發(fā)送給無人機。算法流程如圖9。
圖9 軟件流程圖Fig 9 Flowchart of software
本文針對上述無人機控制系統(tǒng),在室內(nèi)搭建了基于Kinect 傳感器和四旋翼飛機的實驗平臺,進行了室內(nèi)飛行實驗。實驗結(jié)果表明:人體體勢動作能夠?qū)崟r地控制四旋翼進行垂直起降、前后平飛以及左右平飛。
如圖10 所示,軟件界面的左側(cè)、右中、右下顯示控件分別顯示的是Kinect 獲取的骨骼節(jié)點識別模型、深度數(shù)據(jù)、彩色圖像數(shù)據(jù)。操作者給出起飛動作指令,四旋翼收到指令后,垂直起飛。
為了驗證體感控制的準(zhǔn)確性,本實驗還選取了20 名不同身高體型的操作者,分別進行以上6 個動作的測試,測試結(jié)果如表2 所示。測試結(jié)果表明:該方法對不同操作者的控制姿態(tài)都具有較高的識別率。
圖10 起飛體勢指令與顯示Fig 10 Posture instruction of taking off and display
實驗操作者體勢動作識別屬于靜態(tài)體勢識別,操作者給出一個控制動作,需持續(xù)0.5 s 以上,當(dāng)上肢節(jié)點位置變化過快,操作的流暢性下降。同時,Kinect 精度有限,人到傳感器的理想距離為1.5 ~3.0 m,對操作者活動有一定限制;有遮擋的情況下,操縱準(zhǔn)確性也會受到影響。操作者的身高和體型對體勢識別的影響不大,平臺通用性較好。
表2 不同操作者的測試結(jié)果Tab 2 Test results of different operators
本文提出了一種基于Kinect 傳感器的無人機體感控制方案。利用Kinect 對操作者進行骨骼跟蹤和骨骼數(shù)據(jù)提取,設(shè)計了一組體勢動作和識別算法,進而生成對應(yīng)的無人機控制指令,遠程控制無人機飛行。利用自主搭建的四旋翼無人機平臺對本文的方法進行了驗證。結(jié)果表明:操作者通過Kinect 傳感器和本文設(shè)計的體勢動作和識別算法,可以自然、直觀、準(zhǔn)確地對無人機進行體勢操控,降低了無人機控制的復(fù)雜性、專業(yè)性。
[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] 黃國范,李 亞.人體動作姿態(tài)識別綜述[J].電腦知識與技術(shù),2013(1):133-135.
[3] 朱 濤,金國棟,蘆利斌.基于Kinect 應(yīng)用概述及發(fā)展前景[J].現(xiàn)代計算機,2013(2):8-11.
[4] 余 濤.Kinect 應(yīng)用開發(fā)實戰(zhàn):用最自然的方式與機器對話[M].北京:機械工業(yè)出版社,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] 于雅莉,孫 楓,王元昔.基于多傳感器的四旋翼飛行器硬件電路設(shè)計[J].傳感器與微系統(tǒng),2011,30(8):113-115.
[7] 謝 亮,廖宏建,楊玉寶.基于Kinect 的姿態(tài)識別與應(yīng)用研究[J].計算機技術(shù)與發(fā)展,2013,23(5):258-260.
[8] 符秀輝,杜一鳴.基于Kinect 傳感器的姿態(tài)識別及應(yīng)用研究[J].電子技術(shù),2013,23(5):157-158.
[9] 戰(zhàn)蔭偉,于芝枝,蔡 俊.基于Kinect 角度測量的姿勢識別算法[J].傳感器與微系統(tǒng),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.