何建方,席 濤,張 凌
(韶關(guān)東陽光自動(dòng)化設(shè)備有限公司,廣東 韶關(guān) 512721)
小型旋翼無人機(jī)在偵察、探測和監(jiān)控等領(lǐng)域扮演著越來越重要的角色。面對不同的復(fù)雜任務(wù),小型無人機(jī)智能化是當(dāng)前的必然趨勢[1],而自主定位是其中最重要的組成之一。
視覺定位是當(dāng)前無人機(jī)自主定位導(dǎo)航最常用的手段[2-4]。慕尼黑科技大學(xué)在四旋翼平臺(tái)上搭載RGB-D攝像頭,建立室內(nèi)環(huán)境的稠密地圖,完成無人機(jī)的自主定位和導(dǎo)航[5]。但是采用的SLAM算法需要遠(yuǎn)程依賴地面站,導(dǎo)致控制延遲以及成本高。
本文設(shè)計(jì)一種小型化、輕量級的無人機(jī)視覺定位系統(tǒng),研究了單目視覺定位算法,設(shè)計(jì)了自主定位系統(tǒng)的軟硬件架構(gòu)。驗(yàn)證實(shí)驗(yàn)表明,本文設(shè)計(jì)的輕量級視覺定位系統(tǒng)可以實(shí)現(xiàn)無人機(jī)單目定位。
本文搭建的多旋翼無人機(jī)平臺(tái)包括Pixhawk飛行控制板、視覺傳感器、機(jī)載嵌入式計(jì)算機(jī)。搭建的視覺定位無人機(jī)平臺(tái)如圖1所示。
圖1 視覺定位旋翼無人機(jī)平臺(tái)
飛行控制板Pixhawk使無人機(jī)執(zhí)行自主命令和控制飛行。Pixhawk是一種高性能的自動(dòng)駕駛儀,以兩片STM32芯片為主從控制器,并且集成了三軸陀螺儀、三軸加速度計(jì)、高度計(jì)等MEMS傳感器。將傳感器采集的數(shù)據(jù)發(fā)送給處理器,采用擴(kuò)展卡爾曼濾波(EKF)算法對無人機(jī)平臺(tái)的位置進(jìn)行估計(jì)[6]。
機(jī)載嵌入式計(jì)算機(jī)是視覺定位信息處理的核心。本文的機(jī)載嵌入式計(jì)算機(jī)采用ODROID XU4控制板。從參數(shù)上來看,ODROID XU4的整體性能基本和目前的中端智能手機(jī)相似,它搭載了主頻為2 GHz的三星Exynos5422八核處理器與2GB RAM,主板上設(shè)有以太網(wǎng)接口、2個(gè)USB 3.0接口、1個(gè)USB 2.0接口、1個(gè)HDMI視頻接口以及1個(gè)GPIO接口。由于采用了ARM架構(gòu),ODROID XU4可以運(yùn)行基于ARM架構(gòu)所設(shè)計(jì)的操作系統(tǒng),包括Debian,Ubuntu以及 Android等。
視覺定位系統(tǒng)中所有的視覺信息處理和控制均在機(jī)載計(jì)算機(jī)上完成。因此,需在機(jī)載計(jì)算機(jī)上安裝Ubuntu系統(tǒng),實(shí)現(xiàn)視覺定位算法以及和無人機(jī)的通信。另外,在Ubuntu系統(tǒng)上安裝機(jī)器人操作系統(tǒng)(Robot Operating System,ROS),幫助建立定位算法、模塊通信、采集傳感器數(shù)據(jù)。ROS主要應(yīng)用在機(jī)器人平臺(tái)操作與控制系統(tǒng)的軟件框架,其最大優(yōu)勢為點(diǎn)對點(diǎn)設(shè)計(jì),工具包豐富,系統(tǒng)模塊化,非常便于應(yīng)用。
機(jī)載嵌入式計(jì)算機(jī)與Pixhawk飛行控制板之間的通信接口節(jié)點(diǎn)是實(shí)現(xiàn)機(jī)載計(jì)算機(jī)實(shí)時(shí)獲取飛行器飛行狀態(tài)和自主控制飛行狀態(tài)的關(guān)鍵。該節(jié)點(diǎn)主要通過Mavlink協(xié)議接收多旋翼飛行器的心跳包、姿態(tài)角數(shù)據(jù)包和位置數(shù)據(jù)包等,并按類別以特定消息格式將數(shù)據(jù)發(fā)布到不同的主題上。同時(shí)訂閱了vision 和position 等主題,再以Mavlink協(xié)議的形式將這些主題數(shù)據(jù)發(fā)送到飛行控制板,獲取外部傳感器的數(shù)據(jù)并實(shí)現(xiàn)自主飛行控制。自主控制節(jié)點(diǎn)的設(shè)計(jì)原理可以總結(jié)為訂閱飛行器的當(dāng)前位置主題,提供位置反饋,再將位置控制命令發(fā)布到通信節(jié)點(diǎn)的/mavros/setpoint/local_position主題上。通過對無人飛行器狀態(tài)的實(shí)時(shí)監(jiān)測調(diào)整位置控制信息。
本文無人機(jī)視覺定位系統(tǒng)框架如圖2所示,描述了硬件系統(tǒng)和軟件系統(tǒng)各組成部分之間的連接關(guān)系。
本節(jié)主要研究一種實(shí)時(shí)、穩(wěn)定的單目視覺定位算法,該算法能夠通過采集單目相機(jī)信息,在機(jī)載計(jì)算機(jī)上實(shí)時(shí)運(yùn)行,實(shí)現(xiàn)無人機(jī)的定位。由于單目相機(jī)獲得的視覺信息是沒有深度的,因此必須移動(dòng)相機(jī)之后能估計(jì)它的運(yùn)動(dòng),優(yōu)點(diǎn)在于成本低,處理視覺信息消耗的計(jì)算資源小。
SVO(Semi-direct Visual Odoemtry)是瑞士蘇黎世理工學(xué)院提出的一種半直接法視覺里程計(jì),可建立稀疏地圖,實(shí)現(xiàn)實(shí)時(shí)的無人機(jī)定位[7]。SVO里程計(jì)的跟蹤線程框架如圖3所示。SVO框架包括了運(yùn)動(dòng)估計(jì)和建圖兩個(gè)線程,采用稀疏關(guān)鍵點(diǎn)的灰度值匹配法得到估計(jì)位置。
圖3 SVO里程計(jì)算法流程
該算法使用直接法最小化稀疏關(guān)鍵點(diǎn)的重投影殘差來獲取位置,假設(shè)Tk,k-1為位置變化,通過不斷優(yōu)化位置Tk,k-1最小化殘差損失函數(shù),如公式1所示。
(1)
其中,δI(T,u)為相鄰圖像幀對應(yīng)關(guān)鍵點(diǎn)的灰度值差,如公式2所示。
δI(T,u)=Ik(π(T·π-1(u,du)))-Ik-1(u)
(2)
本節(jié)將對設(shè)計(jì)的無人機(jī)視覺定位系統(tǒng)進(jìn)行試驗(yàn)分析,驗(yàn)證視覺定位的實(shí)時(shí)性和穩(wěn)定性。以開源數(shù)據(jù)集airground_rig_s3_2013-03-18_21-38-48.bag作為圖像輸入,在本文設(shè)計(jì)的硬件系統(tǒng)下,運(yùn)行視覺定位算法,運(yùn)行結(jié)果顯示,圖像處理幀率在10 fps~25 fps,視覺定位系統(tǒng)數(shù)據(jù)集運(yùn)行實(shí)驗(yàn)如圖4所示。視覺定位系統(tǒng)單目相機(jī)運(yùn)行實(shí)驗(yàn)如圖5所示,幀率平均值為15 fps。
圖4 視覺定位系統(tǒng)運(yùn)行數(shù)據(jù)集實(shí)驗(yàn)
圖5 視覺定位系統(tǒng)單目相機(jī)運(yùn)行實(shí)驗(yàn)。
多旋翼無人機(jī)的應(yīng)用需求促進(jìn)了智能化的趨勢,在未知和復(fù)雜環(huán)境下,視覺定位成了重要手段。本文提出了基于單目視覺的無人機(jī)定位系統(tǒng),搭建了定位系統(tǒng)的軟件硬件架構(gòu),研究了單目視覺定位算法。實(shí)驗(yàn)驗(yàn)證結(jié)果表明本文的定位系統(tǒng)滿足實(shí)時(shí)性和穩(wěn)定性要求。