国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Leap Motion的可抓取無人機系統(tǒng)

2019-09-19 07:33:30
測控技術(shù) 2019年6期
關(guān)鍵詞:手勢成功率機械

(哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001)

隨著時代發(fā)展、技術(shù)革新,對無人機與人的交互領(lǐng)域也提出更高要求??紤]到手勢具有自然性、靈活性等特點,手勢控制[1]已經(jīng)成為無人機與人進行信息交互的一種新的手段。目前,國內(nèi)外很多優(yōu)秀學(xué)者和研究員都投入極大的精力研究基于視覺的動態(tài)手勢識別系統(tǒng)[2]。因此,它也就成為了目前科研領(lǐng)域的眾熱點之一??梢灶A(yù)見,未來手勢識別系統(tǒng)的主要發(fā)展趨勢將是基于視覺的動態(tài)手勢識別。如今,市面上有一款廣受關(guān)注的體感控制器Leap Motion,它已被應(yīng)用于游戲、手語識別、虛擬應(yīng)用、計算機應(yīng)用等領(lǐng)域。

另外,將焦點聚焦于無人機,國內(nèi)無人機市場從最初的軍用領(lǐng)域[3]漸漸地擴展到消費電子領(lǐng)域。據(jù)最新的消息顯示,在搶險救災(zāi)、氣象預(yù)報、農(nóng)業(yè)、電力、消防等方面,無人機都具有很高的實際應(yīng)用價值。而且,無人機加上機械爪能夠解決高空取物、小型物資投送等實際問題。因此,將動態(tài)手勢識別技術(shù)與可抓取無人機相結(jié)合將具有極高的實用價值和比較廣闊的市場前景。

本系統(tǒng)的采用Leap Motion實現(xiàn)手勢控制無人機的飛行以及抓取功能。該系統(tǒng)的實現(xiàn)方案也可被借鑒到其他相關(guān)的研究之中。

1 系統(tǒng)總體設(shè)計

本系統(tǒng)對無人機飛控Pixhawk[4]和體感控制器Leap Motion進行二次開發(fā)。通過Leap Motion雙目傳感器進行手勢數(shù)據(jù)采集,通過PC端進行數(shù)據(jù)處理并利用無線模塊發(fā)送數(shù)據(jù),無人機端接收到的數(shù)據(jù)用Arduino解碼處理,輸出相應(yīng)PWM波控制飛控及機械爪[5]。系統(tǒng)的總體設(shè)計框圖如圖1所示。

圖1 系統(tǒng)總體框圖

本系統(tǒng)劃分為3個部分,即手勢識別及顯示部分(PC端)、數(shù)據(jù)傳輸部分(NRF24L01)、飛行控制部分。

① 手勢識別部分:手勢數(shù)據(jù)的采集主要是使用了Leap Motion雙目傳感器,并且使用Python結(jié)合Leap Motion v2 SDK庫對雙目識別到的數(shù)據(jù)進行運算處理。采用Qt編寫上位機界面,顯示手勢識別到的數(shù)據(jù),利于用戶觀察自己的手勢狀態(tài)。同時將處理到的數(shù)據(jù)進行自定義編碼,等待進行發(fā)送。

② 數(shù)據(jù)傳輸部分:將上一步獲取到的編碼數(shù)據(jù)通過UART協(xié)議發(fā)送到串口中通過單片機進行接收,并將數(shù)據(jù)轉(zhuǎn)發(fā)給NRF24L01模塊進行無線發(fā)射。同時在無人機端實時接收NRF24L01數(shù)據(jù),將接收到的數(shù)據(jù)傳輸?shù)綗o人機飛行控制部分[6]。

③ 飛行控制部分:控制端采用Arduino解碼接收到的數(shù)據(jù),然后進行數(shù)據(jù)處理,輸出PWM到Pixhawk以及機械臂,實現(xiàn)控制無人機的飛行以及機械臂的抓取。最后,通過多次測試、修改相關(guān)參數(shù)使無人機飛行平穩(wěn),響應(yīng)迅速。

2 系統(tǒng)設(shè)計過程

2.1 系統(tǒng)硬件設(shè)計

2.1.1 Leap Motion模塊

本系統(tǒng)采用Leap公司的Leap Motion體感控制器,它采用USB接口連接計算機,支持Windows,Linux 和Mac OS多操作系統(tǒng),可以面向C++、C#、Java、Python等語言進行更高級的應(yīng)用程序開發(fā),同時也可作為一個插件在其他平臺使用。

Leap Motion的相關(guān)參數(shù)如下。

① 最小識別動作范圍:0.01 mm;

② 識別視角:150°;

③ 最大頻率:290 f/s。

Leap Motion遵循右手坐標系,設(shè)備的中心被定義為坐標的原點。水平平面由X軸、Z軸組成,設(shè)備的長邊被定義為X軸的方向,短邊為Z軸方向。Y軸為垂直方向(正方向朝上)。

2.1.2 無線傳輸模塊

無線模塊采用NRF24L01。它是一種射頻收發(fā)器件,工作于2.4~2.5 GHz ISM頻段,并且融合了增強型ShockBurst技術(shù),可通過程序配置輸出功率和通信頻道,因此非常利于二次開發(fā)。此外,它還同時具有低電壓工作、高速率、多頻點、超小型、低功耗、低應(yīng)用成本等優(yōu)點。

2.1.3 機械模塊

本系統(tǒng)機械爪使用的是含舵機的全金屬爪子。機械爪舵機由三根線控制,分別是地線、信號線和電源正極線。信號線與單片機Arduino相連,通過單片機產(chǎn)生的脈沖信號來控制機械爪的張合運動。因為電池供電為12 V,遠超機械爪的供電電壓范圍,通過使用LM317穩(wěn)壓芯片來為機械爪提供7 V左右的電壓。

2.1.4 機械結(jié)構(gòu)控制流程

本系統(tǒng)機械結(jié)構(gòu)控制首先由NRF24L01將接收的手勢數(shù)據(jù)傳給Arduino,并由Arduino進行處理,接著輸出相應(yīng)的兩路PWM脈沖信號。一路PWM脈沖信號直接控制機械爪的張合角度;另一路PWM信號傳給無人機Pixhawk飛控,控制4個電機的輸出,以此實現(xiàn)手勢數(shù)據(jù)控制無人機的飛行狀態(tài)。具體控制流程如圖2所示。

圖2 控制流程

2.2 Leap Motion視覺處理

2.2.1 Leap Motion工作原理

Leap Motion的核心部分是高幀率攝像頭、紅外LED以及紅外濾光器。自然光線通過紅外濾光器后被過濾成紅外線,在設(shè)備上方形成一個虛擬的平面光線網(wǎng)。當手在設(shè)備上方移動時,就會引起紅外線反射而返回手所在的位置。攝像頭進行實時捕捉,通過雙目立體視覺原理進行解算并生成3D數(shù)據(jù)[7]。

2.2.2 雙目立體視覺原理

雙目立體視覺是一種由兩幅圖像獲取物體三維幾何信息的測量方法。

人在輪流閉合左右眼時,會發(fā)現(xiàn)同一物體的位置發(fā)生了偏移,這種現(xiàn)象稱為視差。Leap Motion采用雙攝像頭模擬人眼,運用立體視覺原理對物體進行定位。它的基本原理是從兩個不同視點觀察同一景物。從而得到在不同視角下的感知圖像,通過三角測量法計算圖像像素間的位置偏差(視差),來獲取物體深度信息。

2.2.3 TBD技術(shù)

Leap Motion在追蹤手勢的算法上主要采用的TBD技術(shù)。檢測前跟蹤算法(TBD)通過時間上的積累彌補信噪比的不足,與傳統(tǒng)檢測方法相比,能實現(xiàn)更低信噪比目標的檢測[8]。因此,它成為弱目標檢測的重要方法。現(xiàn)在應(yīng)用比較廣泛的方法主要有動態(tài)規(guī)劃算法。下面是動態(tài)規(guī)劃算法的模型。

設(shè)xn為待測目標在第n周期的運動狀態(tài)向量,對于傳感器檢測的xoy平面內(nèi)運動的目標,其狀態(tài)向量可以描述為

(1)

xn+1=f(xn)

(2)

將傳感器所探測區(qū)域分割為a×b個有相同邊長為Δx×Δy的分辨單元。假設(shè)在n時刻,用δn=1表示目標出現(xiàn),用δn=0表示目標沒有出現(xiàn)。在每個時刻n,目標狀態(tài)集合為

x(n)={xn(i,j)},i∈1,2,…,a,j∈1,2,…,b

(3)

測量值在每個單元記錄,在時刻n記錄的總測量量是一個a×b矩陣Z(n)={zn(i,j)}。其中,zn(i,j)為在分辨單元(i,j)記錄的狀態(tài)xn(i,j)測量值,其表達式為

(4)

式中,An為目標信號幅度;nn(i,j)為噪聲或雜波。目標航跡可定義為從時刻1到時刻N的一系列狀態(tài)值,公式可表示為

XN={x1,x2,…,xN}

(5)

因此,DP-TBD技術(shù)可歸結(jié)為:基于目標狀態(tài)轉(zhuǎn)移方程和給定N幀測量數(shù)據(jù){Z(1),Z(2),…,Z(N)},通過DP-TBD算法和相應(yīng)判決準則逐階段估計目標的最優(yōu)狀態(tài)序列,從而產(chǎn)生最優(yōu)的目標航跡[9]。

2.2.4 與傳統(tǒng)視覺處理的對比

目前,手勢跟蹤和識別采用的主流方法是計算機視覺技術(shù),Leap Motion也采用此技術(shù)。當識別目標運動速度過快、受到大面積相似背景顏色干擾以及環(huán)境燈光明暗變化時,傳統(tǒng)的基于計算機視覺的手勢識別技術(shù)容易丟失跟蹤目標。而Leap Motion利用紅外LED燈對光源進行補充,能夠有效減少環(huán)境光和背景顏色的干擾,增加了手勢識別的準確性。

2.3 Leap Motion的二次開發(fā)

系統(tǒng)的核心是手勢控制,而系統(tǒng)的手勢識別是通過對Leap Motion的二次開發(fā)來實現(xiàn)的。通過Leap Motion獲取識別到的手勢數(shù)據(jù),再進行數(shù)據(jù)的處理。手勢識別框圖如圖3所示。

圖3 手勢識別框圖

Leap Motion在使用過程中,會定期發(fā)送關(guān)于識別到的手的運動信息,每一份這樣的信息稱為一幀。通過對幀數(shù)據(jù)的處理可以得到手勢的運動方向,以及檢測手是否有抓取的動作。

二次開發(fā)時采用的語言是Python[10],配合官方的示例以及Leap Motion v2 SDK庫能夠比較方便地控制Leap Motion,得到有用的幀數(shù)據(jù)。首先,設(shè)置好與PC通信的端口,實例化一個控制器對象用于控制Leap Motion。然后,使能控制器,并且實例化一個幀對象用于獲取采集到的幀數(shù)據(jù)。接著就可以遍歷所獲得的數(shù)據(jù),取出有用的手勢坐標數(shù)據(jù)以及手動作程度大小數(shù)據(jù)。下面給出部分關(guān)鍵代碼。

#設(shè)置發(fā)送端口

t=serial.Serial(serialCom,9600)

#實例化Controller類

controller=Leap.Controller()

controller.enable_gesture(Leap.Gesture.TYPE_SWIPE)

#實例化幀對象

frame=controller.frame()

#遍歷Leap Motion獲取的數(shù)據(jù)

for hand in frame.hands:

#獲取手勢的坐標數(shù)據(jù)

data=hand.palm_position

翠姨的妹妹有一張,翠姨有一張,我的所有的同學(xué),幾乎每人有一張。就連素不考究的外祖母的肩上也披著一張,只不過披的是藍色的,沒有敢用那最流行的棗紅色的就是了。因為她總算年紀大了一點,對年輕人讓了一步。

#獲取手抓取動作程度大小的數(shù)據(jù)

strength=int(hand.grab_strength * 10)

Leapmotion控制流程圖如圖4所示。

圖4 Leap Motion控制流程圖

2.4 Qt程序的編寫

無人機操控上位機基于Qt5[11]開發(fā)環(huán)境,可運行于用戶PC端。作為無人機操控者觀察無人機狀態(tài)的窗口,上位機包含Leap Motion串口窗口、無人機飛行狀態(tài)窗口、操控者手勢狀態(tài)窗口。

① Leap Motion串口窗口。通過Qt串口類QSerialPort調(diào)用操控者PC端的串口與手勢識別裝置Leap Motion連接,獲取Leap Motion中的手勢數(shù)據(jù)。

② 無人機飛行狀態(tài)窗口。通過接收無人機遠程數(shù)據(jù)傳輸?shù)娘w行狀態(tài)信息,顯示信息包括無人機基于歐拉坐標系的pitch、yaw、roll數(shù)據(jù),以及飛行高度、飛行速度、飛行距離等信息。

③ 操控者手勢狀態(tài)窗口。通過連接Leap Motion的驅(qū)動程序獲取操控者實時的手勢信息,利用Qt軟件內(nèi)部的Qt 3D工具將操控者的手勢信息實時顯示在上位機的窗口中,便于操控者根據(jù)手勢狀態(tài)調(diào)整無人機飛行狀態(tài)。

2.5 數(shù)據(jù)接收端Arduino的開發(fā)

數(shù)據(jù)接收端的單片機采用Arduino處理接收到的數(shù)據(jù),并與飛控Pixhawk進行通信[12],以及控制機械臂的抓取。首先,校驗接收到的一幀手勢數(shù)據(jù),如果數(shù)據(jù)存在錯誤,則舍棄這一幀的數(shù)據(jù)。然后,對存儲的每一幀數(shù)據(jù)進行處理,因為獲得的數(shù)據(jù)是手的空間位置坐標,因此,判斷每一幀手勢數(shù)據(jù)與Leap Motion位置坐標原點的差值,以此判斷出手的移動方向。根據(jù)手的移動方向,定義相應(yīng)占空比的PWM波,輸出給飛控,以此來間接控制無人機的飛行姿態(tài)[12]。同時,也檢測每一幀數(shù)據(jù)中手抓取程度大小的數(shù)據(jù),根據(jù)數(shù)據(jù)的大小,輸出相應(yīng)占空比的PWM波來控制機械爪的開合大小。

相應(yīng)的邏輯流程圖如圖5所示。

圖5 Arduino控制邏輯流程圖

3 系統(tǒng)測試與分析

在進行系統(tǒng)總體測試前分別對系統(tǒng)的各個子模塊進行單獨的調(diào)試,以保證每一個模塊都能正常運行。同時,在場外實測前,先在室內(nèi)進行了系統(tǒng)級模擬試驗。能夠?qū)崿F(xiàn)手勢控制,飛控端的Arduino能夠輸出相應(yīng)占空比的PWM波,且手的抓取動作能夠控制機械爪的開合。之后,在室外寬闊的操場進行了飛行測試,開始時并不能很好地控制無人機的飛行,最后,通過反復(fù)測試以及校準數(shù)據(jù),成功實現(xiàn)了手勢控制無人機的飛行以及機械爪的抓取。

然后,優(yōu)化了手勢控制無人機機械爪的抓取方式,提高了抓取成功率。通過對Leap Motion端代碼的修改,增加了一個抓取力度變量,將Leap Motion識別到的手抓取動作程度分為3個等級(1等級對應(yīng)手輕微閉合、2等級對應(yīng)手閉合程度為50%、3等級對應(yīng)于手閉合程度為100%)。然后,將機械爪張開的大小分為3個等級。因此,手抓取的力度大小將對應(yīng)機械爪的閉合程度大小。相較于之前的抓取方式——當檢測到手抓取動作時,機械爪就立即閉合,優(yōu)化后的方法更具有靈活性和實用性。抓取成功率從優(yōu)化前的60%提高到80%。

由此,可以證明此種方法能夠提高機械爪的抓取成功率。再者,為了進一步驗證Leap Motion的手勢識別準確性以及機械爪的抓取成功率。在一些新的測試條件下繼續(xù)驗證機械爪的抓取成功率。具體實驗數(shù)據(jù)如表1所示。

表1 抓取實驗結(jié)果

表1中的“手的高度”為手距離Leap Motion中心的垂直距離。表中的數(shù)據(jù)均是經(jīng)過多次測試后得到的概率值,具有普遍性。分析實驗數(shù)據(jù)可知,在手高度為20 cm時,抓取成功率最高;當手高度為5 cm及50 cm時抓取成功率均不高,且當手高度超出這兩個值時,抓取成功率將急劇變低直至不能抓取。因此,Leap Motion的最佳識別范圍是手高度為20~35 cm。且在同等高度情況下,當手抓取動作為3等級時,抓取成功率最大。

經(jīng)過上述測試,設(shè)計的可抓取無人機系統(tǒng)能夠完全實現(xiàn)目標功能。手進行移動和抓取動作,系統(tǒng)都能夠較快速地響應(yīng)。

4 結(jié)束語

本文提出了一種人機實時交互系統(tǒng),能夠?qū)崿F(xiàn)手勢控制無人飛行,以及無人機機械爪的抓取。該系統(tǒng)經(jīng)過多次實驗調(diào)試,證明了系統(tǒng)設(shè)計的可行性及穩(wěn)定性,且設(shè)計思想新穎,具有較高的創(chuàng)新性和實用價值,

較成功地將動態(tài)手勢識別、無人機飛行以及無人機抓取相結(jié)合。實現(xiàn)了一種新的與無人機的交互手段,能夠解放傳統(tǒng)的遙控器交互方式。同時,該系統(tǒng)經(jīng)過進一步的改良,能夠解決一些小型物資的投送問題或者應(yīng)用于玩具市場。

猜你喜歡
手勢成功率機械
成功率超70%!一張冬棚賺40萬~50萬元,羅氏沼蝦今年將有多火?
如何提高試管嬰兒成功率
調(diào)試機械臂
當代工人(2020年8期)2020-05-25 09:07:38
挑戰(zhàn)!神秘手勢
V字手勢的由來
如何提高試管嬰兒成功率
簡單機械
勝利的手勢
機械班長
按摩機械臂
松桃| 永胜县| 定陶县| 曲阳县| 广丰县| 浦江县| 陇西县| 名山县| 和龙市| 秦安县| 岳阳市| 赤城县| 达拉特旗| 滕州市| 略阳县| 岳普湖县| 库伦旗| 武汉市| 甘孜县| 铜梁县| 潞西市| 聂荣县| 宁陕县| 乌鲁木齐市| 苏州市| 龙江县| 长治市| 外汇| 礼泉县| 夏津县| 沙河市| 琼结县| 湖州市| 自治县| 宕昌县| 长海县| 思南县| 邯郸县| 安义县| 晋江市| 龙井市|