傅 博,焦艷梅,丁夏清,吳 俊,熊 蓉
(1.浙江大學(xué)智能系統(tǒng)與控制研究所,杭州310027;2.浙江大學(xué)工業(yè)控制技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,杭州310027)
深空探測(cè)任務(wù)對(duì)空間機(jī)器人提出了全自主漫游的要求,其關(guān)鍵是機(jī)器人的精確自定位能力。深空探測(cè)作為一種機(jī)器人特殊應(yīng)用場(chǎng)景,與地面環(huán)境存在很多相似,可以借鑒目前快速發(fā)展的地面即時(shí)定位與建圖(SLAM)技術(shù)來滿足上述新需求。
目前公開的美國(guó)火星探測(cè)機(jī)器人(MER)的定位主要通過視覺實(shí)現(xiàn)[1-2],由雙目相機(jī)通過匹配當(dāng)前時(shí)刻與前一時(shí)刻的圖像實(shí)現(xiàn)對(duì)自身前后兩個(gè)時(shí)刻位姿變換的估計(jì)[3],并利用慣性測(cè)量單元(IMU)對(duì)翻滾角和俯仰角能觀的特性,提升了視覺里程計(jì)的性能[4]。雙目相機(jī)利用兩個(gè)相機(jī)之間的基線,相比于單目相機(jī)要更加穩(wěn)定和精確[5],但視野較小,難以形成全位置、豐富視角的回訪定位;若遇到相機(jī)視野被障礙物遮擋、視覺特征不明顯、特征紋理重復(fù)性高以致難以匹配等情況,往往會(huì)丟失定位[3],也難以用于機(jī)器人運(yùn)動(dòng)速度過快以致成像模糊的情況[4]。
多目相機(jī)能夠利用多個(gè)視角的信息提供一個(gè)更廣闊的視野,可以解決視野問題。其中,Multi-Col-SLAM[6]將ORB-SLAM[7-8]擴(kuò)展到了多目的情況,提出了多目SLAM優(yōu)化方法,并且實(shí)現(xiàn)了多目情況下的回環(huán)檢測(cè)。Yang等[9-10]將 PTAMSLAM[11]擴(kuò)展到了多目的情況,給出了多目視覺SLAM中測(cè)量誤差雅克比的求解方法,并且基于上述方法在SLAM的數(shù)值優(yōu)化中引入了多個(gè)相機(jī)獲取的局部視覺特征。相比于單目、雙目視覺定位方法,多目視覺方法需要配置更多的硬件和運(yùn)算資源。以MultiCol-SLAM為例,在i7處理器上采集多目相機(jī)數(shù)據(jù),定位可以獲得3 Hz的信息,而采集雙目相機(jī)數(shù)據(jù)并運(yùn)行ORB-SLAM定位,可以獲得15 Hz信息。不過實(shí)際使用中,3 Hz足夠完成實(shí)時(shí)定位,而多目視覺定位可以帶來魯棒性和定位精度的提升。
針對(duì)機(jī)器人快速運(yùn)動(dòng)帶來的問題,Liu等[12]提出了一種適用于車體的多目視覺慣性算法,在計(jì)算相對(duì)位姿時(shí),利用IMU獲得的翻滾角和俯仰角的信息簡(jiǎn)化需要求解的每一次運(yùn)動(dòng)的旋轉(zhuǎn)矩陣,進(jìn)而簡(jiǎn)化了位姿估計(jì)過程。然而由于IMU的信息帶有噪聲,直接用于運(yùn)動(dòng)估計(jì)會(huì)帶來一定的誤差;另外,其方法是分別求出相機(jī)和IMU的位姿,再在此基礎(chǔ)上進(jìn)行聯(lián)合優(yōu)化,這是一種松耦合的優(yōu)化方法,無法得出精確的優(yōu)化結(jié)果。
為解決上述問題,本文提出一種新的多目視覺慣性定位方法,結(jié)合多目相機(jī)的廣闊視野和IMU提供的高頻運(yùn)動(dòng)信息來完成定位。與現(xiàn)有的松耦合優(yōu)化方法[12-13]不同,所提方法基于緊耦合優(yōu)化,將圖像的特征點(diǎn)加入至狀態(tài)向量,直接優(yōu)化出相機(jī)和IMU的位姿,得到精確的機(jī)器人位姿。
如圖1所示,在多目VINS系統(tǒng)中,多相機(jī)提供視覺信息,IMU提供高頻運(yùn)動(dòng)信息。算法流程分為3步:數(shù)據(jù)采集預(yù)處理、初始化以及優(yōu)化定位。數(shù)據(jù)采集模塊對(duì)采集到的圖像進(jìn)行特征提取,對(duì)IMU數(shù)據(jù)進(jìn)行預(yù)積分輸出給下一模塊。在初始化模塊,視覺前端進(jìn)行不同時(shí)刻不同相機(jī)之間的位姿解算,得到機(jī)器人相鄰兩個(gè)時(shí)刻的位姿更新。IMU完成初始化,得到世界坐標(biāo)系相對(duì)于慣性系的相對(duì)位姿,完成視覺慣性配準(zhǔn)。在優(yōu)化定位模塊,融合視覺重投影誤差和IMU誤差進(jìn)行緊耦合聯(lián)合優(yōu)化,輸出機(jī)器人位姿。
圖1 系統(tǒng)流程圖Fig.1 System flowchart
世界坐標(biāo)系定義為W,機(jī)器人坐標(biāo)系定位為B,并定義旋轉(zhuǎn)矩陣R和平移向量t,則k時(shí)刻機(jī)器人坐標(biāo)系相對(duì)于世界坐標(biāo)系的變換矩陣WBkT可以表示為式(1):
考慮硬件通用性,定義機(jī)器人固定相機(jī)數(shù)為N,第i個(gè)相機(jī)的相機(jī)坐標(biāo)系為Ci。 本文統(tǒng)一使用機(jī)器人坐標(biāo)系來表示機(jī)器人的運(yùn)動(dòng)。因?yàn)橄鄼C(jī)之間都是剛性固定的,假定外參系數(shù)已知,那么各相機(jī)的位姿和觀測(cè)到的特征都可以通過外參轉(zhuǎn)到機(jī)器人坐標(biāo)系下,從而統(tǒng)一了待優(yōu)化量的坐標(biāo)系。
參考Yang等[9-10]的工作,多目的投影模型(第j個(gè)特征點(diǎn)在第i個(gè)相機(jī)坐標(biāo)系下的圖像投影)如式(2):
式中:π(·)為任意第n個(gè)相機(jī)的相機(jī)坐標(biāo)系相對(duì)于像素坐標(biāo)系的投影變換;為機(jī)器人在世界坐標(biāo)系的位姿;為第i個(gè)相機(jī)相對(duì)于機(jī)器人坐標(biāo)系的位姿(也就是外參),由于傳感器剛性固定于機(jī)器人上,可以認(rèn)為BCiT是不變的;pj為第j個(gè)世界坐標(biāo)系下的空間3D點(diǎn);uij為投影之后獲得的第ij個(gè)像素點(diǎn)。投影原理如圖2所示。圖中五角星為空間中3D點(diǎn),紅色圓點(diǎn)為2D像素點(diǎn)。
圖2 投影原理圖Fig.2 Schematic diagram of projection
不失一般性,先計(jì)算機(jī)器人本體的位姿更新,再經(jīng)由外參的轉(zhuǎn)化更新為每一個(gè)相機(jī)的位姿更新?;跈C(jī)器人從時(shí)刻k到時(shí)刻k+1的位姿變換,和機(jī)器人在時(shí)刻k的位姿,可以推導(dǎo)出機(jī)器人在時(shí)刻k+1的位姿,如式(3):
同理,在已知相機(jī)與機(jī)器人之間外參的前提下,第i個(gè)相機(jī)從時(shí)刻k到時(shí)刻k+1的位姿更新可以表示為式(4):
在本文方法中,SLAM系統(tǒng)有2個(gè)并行的線程,位姿跟蹤和地圖優(yōu)化??紤]空間環(huán)境的復(fù)雜與大尺度,為了能盡可能的保持算法的穩(wěn)定性,位姿跟蹤在前端實(shí)時(shí)完成,而地圖優(yōu)化部分則在后端運(yùn)行。
IMU預(yù)積分得到兩幀之間的約束,放入地圖中完成聯(lián)合優(yōu)化。本方法所提SLAM系統(tǒng)的地圖包含了N個(gè)相機(jī)在不同時(shí)刻的位姿、一組被這些相機(jī)觀測(cè)到的地圖3D點(diǎn)以及2個(gè)位姿之間的預(yù)積分約束。圖優(yōu)化框架如圖3所示。可以看到,機(jī)器人上固定的多相機(jī)使得機(jī)器人在任意時(shí)刻都可以觀測(cè)到更多的路標(biāo)點(diǎn),而不同時(shí)刻之間的觀測(cè)也有了更密集的數(shù)據(jù)關(guān)聯(lián),從而提升定位的準(zhǔn)確性和魯棒性。優(yōu)化變量的損失函數(shù)可以表示為式(5):
式中:Eproj為重投影誤差,由像素點(diǎn)的測(cè)量值與公式(2)得到的像素點(diǎn)的估計(jì)值計(jì)算得到;Eimu為IMU項(xiàng)的誤差。兩項(xiàng)誤差同時(shí)優(yōu)化并更新機(jī)器人的位姿和空間中路標(biāo)點(diǎn)的位置。
圖3 圖優(yōu)化框架Fig.3 Framework of graph optimization
多目VINS在使用之前需要完成IMU的初始化,初始化時(shí)要求一定的旋轉(zhuǎn)和平移運(yùn)動(dòng),而且對(duì)于運(yùn)動(dòng)的大小和方式有一定的要求,導(dǎo)致在初始化時(shí)容易因不恰當(dāng)?shù)倪\(yùn)動(dòng)而失敗,進(jìn)而影響多目VINS的跟蹤定位效果。另外,多目VINS的初始化要求在一些情況下無法被滿足,例如安裝在無人車上時(shí),初始化采集的數(shù)據(jù)缺少俯仰角和翻滾角的信息,從而容易導(dǎo)致初始化失敗。本文提出一種穩(wěn)定的靜止初始化算法,在機(jī)器人運(yùn)行前先靜置幾秒完成初始化,從而完成穩(wěn)定的多目VINS算法。
對(duì)于多目VINS系統(tǒng)的自動(dòng)IMU初始化的算法,IMU的測(cè)量值加速度 3×1向量 a滿足式(6)[12]:
式中:einit為需要優(yōu)化的誤差向量,g為重力加速度3×1向量,矩陣為IMU坐標(biāo)系相對(duì)于世界坐標(biāo)系的旋轉(zhuǎn)3×3矩陣,其偏航角設(shè)為零。在靜止?fàn)顟B(tài)下采集多組IMU數(shù)據(jù),然后聯(lián)合優(yōu)化求解得到初始的俯仰角和翻滾角,從而解出旋轉(zhuǎn)矩陣完成靜止初始化,得到世界坐標(biāo)系相對(duì)于慣性系的相對(duì)位姿。
在V-REP中搭建仿真環(huán)境,在移動(dòng)機(jī)器人上安裝多目相機(jī)與IMU,采集數(shù)據(jù)完成了實(shí)驗(yàn),如圖4所示。多目相機(jī)的固定方式為:一個(gè)朝前的雙目相機(jī)和一個(gè)斜朝后的單目相機(jī)。
圖4 移動(dòng)機(jī)器人傳感器配置Fig.4 Configuration of mobile robot
由于移動(dòng)機(jī)器人只能在平面上運(yùn)動(dòng),無法進(jìn)行各角度的充分運(yùn)動(dòng)來完成初始化。用靜止初始化方法,先采集靜置機(jī)器人的數(shù)據(jù),再控制機(jī)器人繞圈運(yùn)動(dòng)采集多目圖像和IMU數(shù)據(jù)。實(shí)驗(yàn)結(jié)果如圖5所示。圖中紅色、黑色的點(diǎn)為地圖路標(biāo)點(diǎn),藍(lán)色的框?yàn)闄C(jī)器人位姿,綠色線為相機(jī)不同時(shí)刻之間的共視。從圖中可以看到,即使機(jī)器人只運(yùn)動(dòng)了較短的一段距離,已經(jīng)能建出全局的地圖,并且不同相機(jī)之間產(chǎn)生了豐富的數(shù)據(jù)關(guān)聯(lián),所以重建出的路標(biāo)點(diǎn)較為稠密,且輪廓分明。此重建結(jié)果可以說明,多目相機(jī)提供的更為廣闊的視野對(duì)于定位是有益的。
圖5 移動(dòng)機(jī)器人實(shí)驗(yàn)結(jié)果Fig.5 Experiment results of mobile robot
保存所提定位算法的軌跡,而軌跡真值則由V-REP仿真平臺(tái)提供,計(jì)算相對(duì)軌跡誤差(RPE)如圖6所示,上圖為平移誤差,單位是m,下圖是旋轉(zhuǎn)誤差,取一個(gè)角度的值,單位是deg。
圖6 相對(duì)軌跡誤差Fig.6 Relative pose error
可以看到,本文所提方法的平移誤差略好約ORB-SLAM方法,旋轉(zhuǎn)誤差遠(yuǎn)優(yōu)于ORB-SLAM方法。主要原因是融合IMU的高頻運(yùn)動(dòng)信息可以帶來更好的旋轉(zhuǎn)精度,而且多目相機(jī)提供了更廣闊的視野和更豐富的數(shù)據(jù)關(guān)聯(lián),可以增加回環(huán)的概率從而修正旋轉(zhuǎn)誤差。
多目相機(jī)帶來了新的觀測(cè)的同時(shí)也帶來了新的外點(diǎn),這些外點(diǎn)的存在一定程度上降低了定位算法的精度。下一部分的工作是利用算法在引入觀測(cè)的同時(shí)去除外點(diǎn),從而使得新增的都是有用的觀測(cè),并且優(yōu)化算法,提高后端優(yōu)化的速度來提升定位精度。
1)多目相機(jī)可以提供一個(gè)更廣闊的視野,提供更多的觀測(cè)和更豐富的數(shù)據(jù)關(guān)聯(lián),提升定位算法的準(zhǔn)確性和魯棒性。
2)多目視覺慣性緊耦合優(yōu)化可以提高定位方法的魯棒性,更好地應(yīng)用于快速移動(dòng)、急停急走的應(yīng)用場(chǎng)景,并且可以在視覺丟失的情況下輔助機(jī)器人繼續(xù)完成定位。
3)自動(dòng)靜止初始化算法,使得所提方法不受應(yīng)用場(chǎng)景的限制,提高了所提定位方法的穩(wěn)定性。