李一凡,杜世通,李爽,黃璐,楊子寒,陳沖
(1.衛(wèi)星導(dǎo)航系統(tǒng)與裝備技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,石家莊 050081;2.中國(guó)電科網(wǎng)絡(luò)通信研究院,石家莊 050081)
同時(shí)定位和地圖構(gòu)建(simultaneous localization and mapping,SLAM)是移動(dòng)機(jī)器人執(zhí)行導(dǎo)航和交互任務(wù)的關(guān)鍵技術(shù)之一.SLAM 框架通常包括前端里程計(jì)、后端和回環(huán)檢測(cè).前端里程計(jì)是SLAM 系統(tǒng)的基礎(chǔ),也是后端和回環(huán)檢測(cè)的前提.它使用環(huán)境感知傳感器,如視覺(jué)相機(jī)或激光雷達(dá),獲取周?chē)h(huán)境的圖像和點(diǎn)云信息,并利用相鄰幀間的環(huán)境信息變化估計(jì)幀間的位姿變化,從而計(jì)算出前端里程計(jì).
根據(jù)傳感器輸出數(shù)據(jù)的類(lèi)型,前端里程計(jì)分為兩類(lèi): 基于視覺(jué)傳感器的視覺(jué)里程計(jì)(visual odometry,VO)[1]和基于激光雷達(dá)的激光里程計(jì)[2].視覺(jué)傳感器有許多缺陷,如受光照影響大,深度信息的尺度不確定性[3].相較之下,激光雷達(dá)不受環(huán)境光影響,具有厘米級(jí)的測(cè)距離精度,且抗干擾能力強(qiáng),更具魯棒性和精確性[4].因此,基于激光雷達(dá)的SLAM 方法是自主機(jī)器人定位研究的一個(gè)熱點(diǎn).
激光里程計(jì)是通過(guò)最小化相鄰幀點(diǎn)云之間關(guān)于位姿變化的誤差函數(shù)得到幀間位姿變化.基于激光雷達(dá)的SLAM 方法被分為三個(gè)不同的類(lèi)別:基于點(diǎn)匹配的迭 代最近 點(diǎn)算法(iterative closest point,ICP)、基于概率分布的正態(tài)分布變換(normal distributions transform,NDT)算法和基于特征的匹配的算法[5].ICP算法具有實(shí)現(xiàn)簡(jiǎn)單、運(yùn)算速度快的優(yōu)點(diǎn),對(duì)于較小的場(chǎng)景和運(yùn)動(dòng)較緩慢的情況下表現(xiàn)良好.但I(xiàn)CP 算法對(duì)噪聲和異常值較為敏感,且對(duì)預(yù)測(cè)值要求高,容易陷入局部最優(yōu)解.NDT 是一種基于高斯分布的概率匹配算法,它能夠更好地處理激光雷達(dá)傳感器噪聲和數(shù)據(jù)不完整性的問(wèn)題,對(duì)于復(fù)雜場(chǎng)景下的建圖和定位表現(xiàn)優(yōu)秀.但NDT 算法對(duì)于場(chǎng)景的平滑度和連續(xù)性有一定要求,同時(shí)計(jì)算復(fù)雜度較高、精度較低.Zhang等[6]首先提出了基于特征的激光雷達(dá)里程計(jì)和建圖(LIDAR odometry and mapping,LOAM)算法,特征提取能夠?qū)?fù)雜的點(diǎn)云數(shù)據(jù)簡(jiǎn)化為一組可用的特征點(diǎn),從而減少數(shù)據(jù)量,提高算法效率,同時(shí)也為后續(xù)的點(diǎn)云匹配并最終得到激光里程計(jì)提供基礎(chǔ).LOAM 算法實(shí)現(xiàn)了實(shí)時(shí)的、低漂移的激光里程計(jì),解決了ICP 算法對(duì)噪聲敏感、NDT 算法要求場(chǎng)景平滑的問(wèn)題.但LOAM 算法中采用簡(jiǎn)單的平滑度判定點(diǎn)云的特征,在噪聲、動(dòng)態(tài)物體等復(fù)雜環(huán)境下容易出現(xiàn)漏檢或誤檢的情況,從而影響SLAM 的精度和魯棒性.因此,在復(fù)雜環(huán)境下的特征提取和匹配仍是一項(xiàng)極大的挑戰(zhàn).
為進(jìn)一步提升激光里程計(jì)的魯棒性和精確性,研究者們提出了許多改進(jìn)方法來(lái)解決特征提取的問(wèn)題.Horache等[7]提出利用多尺度架構(gòu)和無(wú)監(jiān)督轉(zhuǎn)移學(xué)習(xí)的3D 點(diǎn)云配準(zhǔn)方法,實(shí)現(xiàn)高精度的特征提取和匹配.Serafin等[8]提出了一種使用點(diǎn)鄰域的主成分分析(principal components analysis,PCA)方法,利用該方法得出數(shù)學(xué)原理的線(xiàn)和平面特征.Abedini等[9]提出引入激光雷達(dá)點(diǎn)云的強(qiáng)度數(shù)據(jù),利用尺度不變特征變換(scale invariant feature transform,SIFT)算法從航空?qǐng)D像中提取不同的特征.另外,Arshad等[10]提出利用仿射尺度不變特征變換、線(xiàn)性方程、粒子群優(yōu)化等方法提取優(yōu)化激光里程計(jì)特征提取算法.引入更多數(shù)據(jù)和更復(fù)雜的算法可以有效提高激光里程計(jì)算法中特征提取和匹配的準(zhǔn)確性和魯棒性.然而,這些復(fù)雜的算法和需要處理的更多數(shù)據(jù)會(huì)對(duì)處理設(shè)備的要求產(chǎn)生較大壓力,難以在輕量化平臺(tái)上應(yīng)用.為了解決上述問(wèn)題,本文提出了一種基于點(diǎn)云分割的激光里程計(jì)算法.該算法通過(guò)分析激光雷達(dá)點(diǎn)云數(shù)據(jù)特征,有針對(duì)性地對(duì)激光雷達(dá)點(diǎn)云進(jìn)行分割并賦予標(biāo)簽,并根據(jù)標(biāo)簽與物體掃描情況提出了對(duì)應(yīng)的特征提取和匹配方法,從而提高了特征提取的準(zhǔn)確性和里程計(jì)的精確性,并且占用較少的計(jì)算資源.
如圖1 所示,基于特征的激光雷達(dá)里程計(jì)算法通常包括三個(gè)模塊:點(diǎn)云分割、特征提取、特征匹配.點(diǎn)云分割將點(diǎn)云聚類(lèi)并賦予點(diǎn)標(biāo)簽.特征提取從點(diǎn)云中提取直線(xiàn)和平面這兩種特征點(diǎn).隨后,每個(gè)直線(xiàn)和平面特征點(diǎn)會(huì)被分別投影到地圖特征點(diǎn)云中進(jìn)行匹配,并計(jì)算點(diǎn)到直線(xiàn)的距離和點(diǎn)到平面的距離與位姿有關(guān),累加這些距離的和即為與位姿相關(guān)的誤差函數(shù),最小化誤差函數(shù)以得到激光里程計(jì).
圖1 基于特征的激光里程計(jì)流程框圖
點(diǎn)云的特征提取是指對(duì)激光雷達(dá)獲取的點(diǎn)云數(shù)據(jù)進(jìn)行處理,從中提取出具有定位特征的點(diǎn).準(zhǔn)確性和魯棒性對(duì)于激光里程計(jì)的性能至關(guān)重要.本文針對(duì)機(jī)械式激光雷達(dá)的工作原理及所得點(diǎn)云特點(diǎn),提出了一種新的點(diǎn)云分割算法,該算法具有計(jì)算簡(jiǎn)單、計(jì)算量小的優(yōu)勢(shì),并且能夠判定并提取的特征點(diǎn)受噪點(diǎn)影響較小,具有更好的定位特性.
在特征提取前利用點(diǎn)云分割將點(diǎn)云分割、聚類(lèi)并賦予標(biāo)簽[11].點(diǎn)云分割階段接收激光雷達(dá)獲取的點(diǎn)云數(shù)據(jù),通過(guò)分割算法將點(diǎn)云分割成若干個(gè)子集,并為每個(gè)子集標(biāo)記一個(gè)標(biāo)簽.特征提取階段基于分割結(jié)果提取特征點(diǎn)云,通過(guò)對(duì)點(diǎn)云分割所得標(biāo)簽判定物體掃描狀態(tài),保留符合條件的特征點(diǎn)云,同時(shí)剔除噪點(diǎn).相較于傳統(tǒng)的特征提取算法,本文提出的算法可以提高特征提取的準(zhǔn)確性和魯棒性,并且能夠處理大規(guī)模點(diǎn)云數(shù)據(jù).
由于激光雷達(dá)機(jī)器本身的固有特性,其依靠?jī)?nèi)部多對(duì)激光發(fā)射器360°水平旋轉(zhuǎn)掃描周?chē)h(huán)境,以獲取深度信息并形成點(diǎn)云.如圖2 所示,激光雷達(dá)的垂直分辨率取決于其掃描線(xiàn)數(shù).舉例來(lái)說(shuō),常用的16 線(xiàn)激光雷達(dá)垂直分辨率僅為2°.但由于激光發(fā)射器的高發(fā)射頻率,其水平分辨率可以高達(dá)0.18°.因此,通過(guò)對(duì)掃描線(xiàn)點(diǎn)云進(jìn)行水平角度分割,可以更加精確地進(jìn)行處理點(diǎn)云.
圖2 激光雷達(dá)工作原理示意圖
由于激光雷達(dá)點(diǎn)云數(shù)據(jù)中每個(gè)點(diǎn)的存儲(chǔ)順序與掃描順序相同,因此只需遍歷激光雷達(dá)點(diǎn)云中的每一個(gè)點(diǎn),并使用式(1)計(jì)算其俯仰角度 α .然后,根據(jù)俯仰角度 α 將 點(diǎn)云按照掃描 線(xiàn)進(jìn)行劃分.例 如針對(duì)16 線(xiàn)激光雷達(dá),可以按照?qǐng)D2 所示的掃描角度將點(diǎn)云劃分為16 份掃描線(xiàn)點(diǎn)云.
式中,x、y、z分別為點(diǎn)在激光雷達(dá)坐標(biāo)系下的三維坐標(biāo).
后續(xù)的點(diǎn)云分割需使用點(diǎn)云的水平掃描角度,為降低計(jì)算資源的消耗,利用式(2)計(jì)算了點(diǎn)云的水平角度
由于反正弦函數(shù)取值范圍為 (-90,90),因此當(dāng)(x,y) 處于第三、四象限時(shí) β 還需增加180°.
在激光雷達(dá)運(yùn)轉(zhuǎn)時(shí),同一掃描線(xiàn)上相鄰掃描點(diǎn)的角度間隔極小(0.18°),因此在激光雷達(dá)探測(cè)物體距離較近時(shí),相鄰點(diǎn)僅存在兩種情況:1)兩點(diǎn)為同一物體上的點(diǎn);2)兩點(diǎn)為不同物體上的點(diǎn).如圖3 所示,通過(guò)計(jì)算相鄰掃描點(diǎn)連線(xiàn)所成向量,與兩點(diǎn)中較遠(yuǎn)距離點(diǎn)坐標(biāo)向量所成夾角φ,可以判斷相鄰點(diǎn)是否屬于同一物體[12].以相鄰點(diǎn)A、B為例,可以根據(jù)它們的水平掃描角度差和三維坐標(biāo)進(jìn)行計(jì)算,得到
圖3 激光雷達(dá)掃描線(xiàn)俯視示意圖
式中:x、y、z分為點(diǎn)在激光雷達(dá)坐標(biāo)系下的三維坐標(biāo);ΔβAB為利用式(2)計(jì)算所得A、B兩點(diǎn)水平角差值.
為了將點(diǎn)云分割為不同的物體,本文按掃描線(xiàn)遍歷點(diǎn)云中的所有點(diǎn),并計(jì)算每個(gè)點(diǎn)與其下一點(diǎn)之間的夾角φ.如果該夾角φ大于設(shè)定的閾值(在本文中為30°,即連續(xù)兩點(diǎn)橫向變化超過(guò)深度變化的兩倍),則將這兩個(gè)連續(xù)的點(diǎn)視為不屬于同一物體.基于相鄰點(diǎn)是否屬于同一物體,本文將同一物體上的點(diǎn)標(biāo)記為內(nèi)點(diǎn),而不同物體上距離更近的點(diǎn)則被標(biāo)記為物體邊緣點(diǎn),距離稍遠(yuǎn)的點(diǎn)則標(biāo)記為離散點(diǎn).通過(guò)這種方式,本文可以完成點(diǎn)云的分割.
激光雷達(dá)通過(guò)發(fā)射激光并接收反射的激光測(cè)距形成點(diǎn)云,而由于激光會(huì)被物體遮擋,因此物體被掃描的區(qū)域會(huì)隨著激光雷達(dá)的運(yùn)動(dòng)而變化.如圖4 所示,黃色定位特征被激光雷達(dá)掃描的情況主要包括兩種:a) 完全掃描;b) 部分掃描.由于激光雷達(dá)是按一定順序旋轉(zhuǎn)掃描,物體被部分掃描時(shí)還需要區(qū)分左部分、右部分兩種情況,可通過(guò)遍歷掃描線(xiàn)中的每一個(gè)點(diǎn),根據(jù)點(diǎn)云分割中賦予的標(biāo)簽與表面點(diǎn)的順序判定左、右部分掃描的情況.
圖4 物體掃描情況示意圖
在城市場(chǎng)景中,物體通常呈現(xiàn)出結(jié)構(gòu)化的標(biāo)準(zhǔn)形狀,例如墻壁、汽車(chē)、房屋等可視為長(zhǎng)方體、棱錐等的組合.物體的邊緣可視為直線(xiàn),表面則可視為平面.被掃描區(qū)域較小的、或本身較小的物體難以從中提取準(zhǔn)確的定位特征,因此僅從橫向掃描長(zhǎng)度大于一定閾值(防止較小物體左右邊沿點(diǎn)相互干擾,設(shè)定最鄰近搜索的距離為0.5 m)的物體提取其邊緣點(diǎn)為直線(xiàn)特征,表面點(diǎn)為平面特征.而城市中含有許多橫向較小的物體,例如電線(xiàn)桿、樹(shù)干等,它們也是不可或缺的定位特征,可視為圓柱體,橫截面視為圓.因此對(duì)于完整掃描但物體橫向距離較小(與較小物體判斷相對(duì)應(yīng))的情況,若其表面點(diǎn)數(shù)量大于5 (圓心擬合最少5 個(gè)點(diǎn)可以判定擬合誤差),則認(rèn)為點(diǎn)云中存在足夠的點(diǎn)用于擬合,以保證擬合的可靠性.則將所有通過(guò)點(diǎn)帶入并優(yōu)化最小二乘式
式中:a、b分別為在物體掃描點(diǎn)最小、最大點(diǎn)的點(diǎn)云中的序號(hào);xc、yc是所擬合圓心的坐標(biāo),;xi、yi為點(diǎn)的坐標(biāo);R為所擬合圓心的半徑.
若優(yōu)化上式所得圓的半徑小于物體兩邊邊緣點(diǎn)之間的距離,即所掃描物體具有圓柱屬性且掃描區(qū)域大于橫截面的三分之一,則認(rèn)為擬合成功,并將圓心視為直線(xiàn)特征點(diǎn).除上述符合條件的點(diǎn)作為定位特征點(diǎn)以外,其他點(diǎn)均視為離散點(diǎn),不作為定位特征點(diǎn),僅用作建圖.特征提取的具體流程如圖5 所示.
圖5 特征提取流程圖
在LOAM 算法中,特征點(diǎn)的匹配分為兩個(gè)步驟.首先,將當(dāng)前時(shí)刻點(diǎn)云中的特征點(diǎn)投影到歷史點(diǎn)云上,形成一組候選匹配點(diǎn).然后,根據(jù)一定的距離閾值,選擇與每個(gè)候選點(diǎn)最近的點(diǎn)作為最終匹配點(diǎn).特征點(diǎn)的匹配質(zhì)量將影響到后續(xù)的位姿估計(jì)和地圖構(gòu)建質(zhì)量,因此需要考慮匹配的可靠性和效率.本文也采用了類(lèi)似的特征點(diǎn)匹配策略,對(duì)當(dāng)前時(shí)刻點(diǎn)云中提取的每一個(gè)特征點(diǎn)進(jìn)行候選匹配點(diǎn)的搜索,進(jìn)而確定最終匹配點(diǎn).為了提高匹配效率和精度,本文對(duì)匹配點(diǎn)的搜索進(jìn)行了優(yōu)化,使用了KD-Tree等數(shù)據(jù)結(jié)構(gòu),加速匹配過(guò)程.假定激光雷達(dá)為均速運(yùn)動(dòng),特征點(diǎn)的投影公式為
式中:為投影至地圖的位姿;Pi為特征點(diǎn)的三維坐標(biāo);Rk-1、tk-1分別為上一幀激光雷達(dá)的姿態(tài)變化矩陣和位移.
對(duì)于直線(xiàn)特征點(diǎn),先將其投影到地圖的坐標(biāo)系下,然后利用KD-tree 在地圖直線(xiàn)特征點(diǎn)云中搜索最鄰近的5 個(gè)點(diǎn).接著,采用PCA 分析這5 個(gè)點(diǎn)所構(gòu)成的矩陣的最大特征值.如果最大特征值遠(yuǎn)大于第二大特征值,就可視為最大特征值所對(duì)應(yīng)的向量是該5 個(gè)點(diǎn)所擬合直線(xiàn)的方向.否則應(yīng)該舍棄該特征點(diǎn).該直線(xiàn)必過(guò)經(jīng)過(guò)該5 個(gè)點(diǎn)的平均坐標(biāo)點(diǎn),由此可求得點(diǎn)到直線(xiàn)的距離為
式中:di為點(diǎn)到直線(xiàn)的距離;為5 個(gè)點(diǎn)的平均坐標(biāo)向量;vi為最大特征值對(duì)應(yīng)的特征向量;
同理,平面特征點(diǎn)也投影到地圖坐標(biāo)系下,然后利用KD-tree 在地圖直線(xiàn)特征點(diǎn)云中搜索最鄰近的5 個(gè)點(diǎn).由于PCA 算法耗時(shí)長(zhǎng),且平面特征點(diǎn)較多,因此采用最小二乘法將該5 個(gè)點(diǎn)擬合為一個(gè)平面.通過(guò)最小化帶入5 個(gè)點(diǎn)的坐標(biāo),最小化S為
式中:S為待優(yōu)化的量;A、B、C、D為平面標(biāo)準(zhǔn)方程的四參數(shù);xl、yl、zl分別為點(diǎn)的三維坐標(biāo)值.
即可得到標(biāo)準(zhǔn)平面方程,由此可計(jì)算點(diǎn)到平面的距離為
式中:dj為點(diǎn)到平面的距離;為地圖特征點(diǎn)的三維坐標(biāo);
將所有特征點(diǎn)中點(diǎn)到直線(xiàn)的距離、點(diǎn)到平面的距離累加即可得到關(guān)于位姿的誤差函數(shù)
將該誤差函數(shù)最小化即可得到當(dāng)前激光雷達(dá)姿態(tài)、位移的最優(yōu)估計(jì).
為了驗(yàn)證本文提出的激光里程計(jì)算法的有效性、精確性和魯棒性,本文進(jìn)行了實(shí)驗(yàn)驗(yàn)證.使用開(kāi)源的KITTI 數(shù)據(jù),同時(shí)在真實(shí)場(chǎng)景中模擬導(dǎo)致算法漂移的復(fù)雜情況,以對(duì)比本文提出的基于LOAM 算法和點(diǎn)云分割的激光里程計(jì)算法的性能.
KITTI00 數(shù)據(jù)集是在典型的城市環(huán)境中采集的,該環(huán)境的特征豐富且場(chǎng)景簡(jiǎn)單,因此LOAM 算法和本文提出的算法都能夠魯棒地運(yùn)行,里程計(jì)結(jié)果如圖6 所示.本文提出算法所得軌跡與基準(zhǔn)軌跡的平均誤差為3.3 m,誤差始終保持較小水平,且最終誤差為11.43 m,而LOAM 算法的里程計(jì)平均誤差為6.8 m,軌跡因誤差累計(jì)導(dǎo)致逐漸偏離基準(zhǔn),最終誤差為62.17 m.由此可得,與LOAM 算法相比,本文提出的基于點(diǎn)云分割的激光里程計(jì)算法更具精確性.
圖6 實(shí)驗(yàn)驗(yàn)證硬件平臺(tái)圖
圖7 為搭建的一個(gè)簡(jiǎn)易組合導(dǎo)航系統(tǒng)硬件平臺(tái).該硬件平臺(tái)包括16 線(xiàn)激光雷達(dá)、低成本微機(jī)械陀螺儀(micro electro mechanical systems,MEMS)、高精度光纖陀螺、高精度雙天線(xiàn)GNSS等傳感器以及一臺(tái)計(jì)算機(jī).實(shí)驗(yàn)運(yùn)行環(huán)境為Ubuntu16.04+ROS 環(huán)境.平臺(tái)記錄了真實(shí)的激光雷達(dá)實(shí)驗(yàn)數(shù)據(jù)包,并通過(guò)仿真驗(yàn)證了本文算法的特征提取和激光里程計(jì)運(yùn)算結(jié)果的優(yōu)越性.同時(shí),本文使用雙天線(xiàn)高精度GNSS 和高精度光纖陀螺的組合導(dǎo)航結(jié)果作為激光里程計(jì)的基準(zhǔn),以評(píng)估算法的精確性.
如圖8 所示,實(shí)驗(yàn)驗(yàn)證環(huán)境為典型的城市環(huán)境,道路兩旁包含樓房、廣場(chǎng)以及樹(shù)林等場(chǎng)景,能夠良好、全面的檢驗(yàn)算法的有效性.
圖8 真實(shí)實(shí)驗(yàn)場(chǎng)景俯視圖
如圖9(a)所示,在房屋樓梯處,場(chǎng)景特征非常復(fù)雜,且存在大量難以提取的復(fù)雜定位特征.本文用綠色框標(biāo)記出可用于定位的區(qū)域位置,由圖9(b)與圖9(c)的對(duì)比可知,本文提出的基于點(diǎn)云分割算法所提取的特征具有良好的直線(xiàn)特征,且特征清晰、離散點(diǎn)少,因此本文算法在特征提取方面優(yōu)于LOAM算法.此外,本文所提出的特征提取部分計(jì)算量更小,經(jīng)實(shí)驗(yàn)驗(yàn)證,在該數(shù)據(jù)集下的特征提取平均耗時(shí)為23.46 ms,而LOAM 算法為35.43 ms,本文算法更具實(shí)時(shí)性.如圖10 所示,當(dāng)機(jī)器人穿越這個(gè)復(fù)雜環(huán)境時(shí),本文基于點(diǎn)云分割的激光里程計(jì)算法在復(fù)雜環(huán)境下依舊魯棒運(yùn)行,而LOAM 算法發(fā)生了較大的漂移現(xiàn)象.由此可得,較LOAM 算法,本文提出的基于點(diǎn)云分割的激光里程計(jì)算法更具魯棒性.
圖9 特征提取對(duì)比圖
圖10 里程計(jì)軌跡對(duì)比圖
本文針對(duì)機(jī)械式激光雷達(dá)點(diǎn)云橫向分辨率遠(yuǎn)高于豎直分辨率的特點(diǎn),提出了一種根據(jù)掃描線(xiàn)分割點(diǎn)云并為其賦予標(biāo)簽的方法.通過(guò)標(biāo)簽的賦予,可以判定物體的掃描情況,從而提取出點(diǎn)云中的直線(xiàn)和平面特征點(diǎn).最后,將這些特征點(diǎn)投影并搜索匹配地圖特征點(diǎn),并分別擬合直線(xiàn)或平面.利用點(diǎn)到直線(xiàn)的距離和點(diǎn)到平面的距離,可以計(jì)算位姿誤差方程,從而得到對(duì)激光里程計(jì)的最優(yōu)估計(jì).本文利用KITTI 數(shù)據(jù)集和真實(shí)實(shí)驗(yàn)數(shù)據(jù),通過(guò)ROSBAG 數(shù)據(jù)錄影并回訪(fǎng)進(jìn)行了仿真驗(yàn)證,結(jié)果表明本文提出的基于點(diǎn)云分割的激光里程計(jì)在特征提取方面比LOAM 算法更準(zhǔn)確,并且具有更高的定位精度和魯棒性.