丁嘉偉,聞凱,桂敬亮
(南京航空航天大學(xué)金城學(xué)院,江蘇南京,211156)
全自動(dòng)多軸飛行器模擬搜救系統(tǒng)是一款主要飛行器系統(tǒng)與搜救系統(tǒng)兩大部分組成,其中飛行器系統(tǒng)以成熟的六軸飛行器為主要平臺(tái),通過搭載pixhawk開源飛控系統(tǒng)進(jìn)行相關(guān)設(shè)計(jì),搜救系統(tǒng)主要由機(jī)械臂,機(jī)械爪組成,通過使用arduino開發(fā)系統(tǒng)進(jìn)行控制處理,配合視覺識(shí)別處理技術(shù)提高系統(tǒng)感知能力與抓取可靠性。
飛控采用開源飛控pixhawk配合地面站軟件mission planner[1]。相較于市面上其他開源飛行控制器,此款飛控支持多種無(wú)人機(jī)機(jī)型,并能夠根據(jù)負(fù)載大小設(shè)定合適的無(wú)人機(jī)飛行參數(shù),配合GPS全球定位模塊系統(tǒng)在地面端規(guī)劃飛行路徑以實(shí)現(xiàn)自主巡航,自主定位等相關(guān)功能。
機(jī)械臂采用多級(jí)結(jié)構(gòu)設(shè)計(jì),采用上下雙層結(jié)構(gòu),上層結(jié)構(gòu)為支架和固定的45齒同步輪。支架選擇了堅(jiān)固的2020型鋼,通過t型滑塊螺母魚5mm椴木板固定;45齒同步輪和和360°舵機(jī)連接的30齒同步輪進(jìn)行配合,進(jìn)行控制旋轉(zhuǎn)舵機(jī)板的轉(zhuǎn)動(dòng)。
其設(shè)計(jì)目的主要是能夠讓機(jī)械臂能夠到達(dá)無(wú)人機(jī)正下方的任何地方,使得其不存在死角,使得后面能進(jìn)行全方面的抓取。
機(jī)械爪部分分為滑塊直線軸承板,升降臂和機(jī)械爪滑塊直線軸承板就是通過2組同步帶輪帶動(dòng)升降舵機(jī)掛板進(jìn)行水平移動(dòng),豎直的一組是30齒主動(dòng)輪帶動(dòng)15齒從動(dòng)輪從動(dòng),從動(dòng)輪再將動(dòng)力借由光軸帶動(dòng)水平齒輪移動(dòng)從而控制升降舵機(jī)掛板,在確定好位置以后通過齒輪機(jī)械臂升降,最后經(jīng)由機(jī)械爪抓取,機(jī)械爪如圖1所示是由四組機(jī)械只抓,舵機(jī),限位擋板組成,限位擋板如圖2所示是由2組完全一樣的螺旋曲線構(gòu)成,將機(jī)械只抓固定好相應(yīng)的位置,舵機(jī)旋轉(zhuǎn)帶動(dòng)只抓的開合,從而控制爪的抓取。
圖1 機(jī)械爪
圖2 限位擋板
由上位機(jī)運(yùn)行視覺代碼對(duì)回傳的實(shí)時(shí)畫面進(jìn)行識(shí)別處理,將處理后獲取的位姿信息發(fā)送給下位機(jī)下位機(jī)接收上位機(jī)的數(shù)據(jù)對(duì)機(jī)械臂進(jìn)行控制,整體流程如圖3所示。
圖3 流程圖
攝像頭采用普通1080P USB攝像頭,拍攝目標(biāo)為黑白棋盤網(wǎng)格紙。
參考張正友標(biāo)定法原理,相機(jī)內(nèi)外參數(shù)標(biāo)定方法有多種標(biāo)定方法。到目前為止使用最多的是經(jīng)典標(biāo)定法中的張氏相機(jī)標(biāo)定法,它相對(duì)經(jīng)典標(biāo)定法解決了標(biāo)定物制作精度要求高的問題,其精度比自標(biāo)定法的更高,且制作模板更容易,降低了成本低、便于實(shí)現(xiàn)、魯棒性好、精度高,任何人都可以快速、方便、準(zhǔn)確地獲取到相機(jī)的畸變參數(shù)以及各內(nèi)外參數(shù)。Open CV視覺庫(kù)以及Matlab視覺處理庫(kù)都是基于張正友標(biāo)定原理來求解相機(jī)參數(shù)的[2]。
將攝像頭拍攝的25張棋盤網(wǎng)格照片導(dǎo)入MATLAB獲取相機(jī)畸變參數(shù),其需要參數(shù)為五個(gè),分別為3個(gè)徑向畸變(k1,k2,k3)以及2個(gè)切向畸變(P1,P2)。
調(diào)用Open CV 開源視覺庫(kù)展原圖象如圖4所示和標(biāo)定后的圖象如圖5所示。
圖4 標(biāo)定前圖象
圖5 標(biāo)定后圖象
可明顯的觀測(cè)到標(biāo)定后的圖象更接近于現(xiàn)實(shí)中人眼所看到的圖象,其邊部不在有由畸變而引起的彎曲。標(biāo)定目的是方便運(yùn)用相機(jī)獲取物體實(shí)際的物理信息。
先根據(jù)目標(biāo)對(duì)象和機(jī)械爪的特征分別鎖定其在畫面中的二維坐標(biāo),再根據(jù)標(biāo)定后無(wú)畸變的圖象搭配pnp算獲法獲取目標(biāo)對(duì)象和機(jī)械爪的三維坐標(biāo)點(diǎn),從而計(jì)算出目標(biāo)對(duì)象相對(duì)機(jī)械爪在實(shí)際中的相對(duì)物理差值。運(yùn)用標(biāo)定后的攝像機(jī)對(duì)機(jī)械爪和目標(biāo)小球的位置進(jìn)行實(shí)時(shí)獲取,再進(jìn)行實(shí)時(shí)解算這樣就可以實(shí)時(shí)獲取機(jī)械爪相對(duì)目標(biāo)物體的物理偏差值,這樣就可以在機(jī)械臂移動(dòng)出現(xiàn)誤差時(shí)進(jìn)行及時(shí)的回調(diào)補(bǔ)救。
根據(jù)目標(biāo)對(duì)象和機(jī)械爪的相對(duì)位給下位機(jī)發(fā)送指令,如:當(dāng)機(jī)械臂與目標(biāo)物的X軸和Y軸的相對(duì)值為0時(shí),向下位機(jī)發(fā)送下降機(jī)械臂的指令。當(dāng)Z軸相對(duì)值為一定值a(機(jī)械爪可抓取目標(biāo))時(shí)發(fā)送抓取命令。最后將相對(duì)位置差和相對(duì)的控制命令打包成數(shù)據(jù)包運(yùn)用串口通信發(fā)送給下位機(jī)。每一幀循環(huán)都執(zhí)行發(fā)送流程從而達(dá)到實(shí)時(shí)調(diào)控的效果。
使用Arduino Mega2560作為下位機(jī)主控,程序編寫使用Arduino IDE,根據(jù)機(jī)械結(jié)構(gòu)建立極坐標(biāo)系,單片機(jī)通過無(wú)線串口接收數(shù)據(jù)后,處理上位機(jī)視覺識(shí)別發(fā)送過來的數(shù)據(jù)包,進(jìn)行相應(yīng)的動(dòng)作,為避免發(fā)生聯(lián)動(dòng)錯(cuò)亂,控制順序?yàn)檗D(zhuǎn)動(dòng),滑動(dòng),抓取。
轉(zhuǎn)動(dòng)結(jié)構(gòu)使用360度可持續(xù)旋轉(zhuǎn)舵機(jī),單片機(jī)調(diào)用pwm庫(kù),產(chǎn)生小于1500us的脈寬逆時(shí)針旋轉(zhuǎn),大于1500us順時(shí)針旋轉(zhuǎn),差值越大轉(zhuǎn)速和扭矩越大。根據(jù)轉(zhuǎn)速計(jì)算時(shí)間達(dá)到控制轉(zhuǎn)動(dòng)到指定角度的效果。
滑動(dòng)結(jié)構(gòu)選用42步進(jìn)電機(jī),采用霍爾編碼器讀取直流電機(jī)脈沖數(shù),結(jié)合位置式PID算法公式,配合驅(qū)動(dòng)來控制電機(jī)輸出準(zhǔn)確脈沖數(shù)[3]。當(dāng)發(fā)出位置指令后,控制步進(jìn)電機(jī)旋轉(zhuǎn)指定位置,并計(jì)算出誤差進(jìn)行補(bǔ)償。
其調(diào)試過程相對(duì)復(fù)雜與繁瑣,但卻是及其重要的一個(gè)環(huán)節(jié),整個(gè)機(jī)械臂的實(shí)際抓取準(zhǔn)確率和靈活度都取決于調(diào)試時(shí)的優(yōu)化。本次調(diào)試主要分為三步:第一步,視覺代碼優(yōu)化,提高其識(shí)別的準(zhǔn)確率和識(shí)別精度。第二部,電控代碼優(yōu)化,對(duì)上位機(jī)的數(shù)據(jù)進(jìn)行一個(gè)濾波處理,提高機(jī)械臂的靈活度。第三步,視覺與電控聯(lián)動(dòng)調(diào)試,調(diào)整其機(jī)械臂實(shí)際抓取的偏差。在實(shí)際調(diào)試中依次按上述步驟反復(fù)進(jìn)行,從而達(dá)到整體系統(tǒng)的最優(yōu)化。
對(duì)實(shí)際抓取進(jìn)行測(cè)試其抓取次數(shù)和抓取成功次數(shù)如圖6所示,其相對(duì)應(yīng)的抓取成功率如圖7所示
圖6 抓取與抓中次數(shù)
圖7 抓取成功率成功率
其視覺算法與電控的算法相對(duì)于傳統(tǒng)的視覺識(shí)別控制,不再是識(shí)別后等待機(jī)械臂執(zhí)行完成后再次發(fā)送修正指令,該視覺設(shè)計(jì)可以實(shí)時(shí)監(jiān)控機(jī)械臂對(duì)其控制進(jìn)行實(shí)時(shí)修正。
由以上測(cè)試可知在實(shí)際測(cè)試的過程中仍會(huì)存在一些實(shí)際偏差。雖然并不會(huì)如理想環(huán)境下那么精確。但在其自主識(shí)別抓取的前提下,其平均抓取成功率依然能夠達(dá)到76%的準(zhǔn)確率。其主要原因還是其視覺算法的實(shí)時(shí)調(diào)控起到了關(guān)鍵性的作用,使得機(jī)械臂在實(shí)際操作的過程中如果出現(xiàn)視覺可識(shí)別的誤差能夠及時(shí)修正。
在理想狀態(tài)下,其準(zhǔn)確率是可以達(dá)到95%的,其產(chǎn)生實(shí)際主要誤差的原因分別是機(jī)械臂的結(jié)構(gòu)和電控使得機(jī)械臂在轉(zhuǎn)動(dòng)中仍然存在一些位置的偏移,另一個(gè)則是其視覺識(shí)別的效果受設(shè)備和環(huán)境的各種影響,其實(shí)際識(shí)別率會(huì)存在一個(gè)誤差,使得即使標(biāo)定后其測(cè)定得的實(shí)際相對(duì)位置差值也會(huì)存在一定誤差。從而使得實(shí)驗(yàn)測(cè)試中的平均抓取成功率只有76%。其相應(yīng)的解決方案分別是提高機(jī)械臂機(jī)械結(jié)構(gòu)的制作精度,優(yōu)化視覺和控制算法的代碼,以及選用拍攝效果更好識(shí)別精度更高的攝像頭或者使用雙目攝像頭也能大幅的提高可識(shí)別精度,識(shí)別率則可以增加深度學(xué)習(xí)算法對(duì)機(jī)械爪和目標(biāo)對(duì)象進(jìn)行一個(gè)訓(xùn)練,這樣整體系統(tǒng)的識(shí)別與抓取效果就可以有一個(gè)很大的提升以及具有很高的魯棒性。
本文主要介紹設(shè)計(jì)一款全自主自動(dòng)飛行的多軸飛行器的模擬搜救系統(tǒng),通過對(duì)其飛控系統(tǒng),模擬搜救系統(tǒng),視覺處理系統(tǒng)以及控制系統(tǒng)的相關(guān)設(shè)計(jì)方案進(jìn)行了闡述與研究,分析了實(shí)際過程中可能遇到的問題并提出了相應(yīng)的解決方法,對(duì)多軸飛行器模擬搜救的實(shí)際設(shè)計(jì)與應(yīng)用具有較高的參考價(jià)值[4]。