長安大學 汽車學院 西安 710064
三維同步定位與建圖(SLAM)由于定位精度高、累計誤差小等優點,成為國內外研究的熱點,并被廣泛應用于無人駕駛汽車的地圖構建與定位。開源機器人操作系統是一種基于消息傳遞通信的分布式多進程框架[1],聚合了由全世界開發者實現的大量開源功能包,可以極大減小工作量,在各個領域得到大量運用。基于開源機器人操作系統,目前通過激光雷達進行地圖構建的主流方法為激光雷達測距與建圖(LOAM)算法[2]。LOAM算法將SLAM分為高頻運動估計和低頻環境建圖,提高了SLAM的準確性。
評估激光雷達系統輸出的航跡位置精度,以全球定位系統(GPS)真值為標準,將差分GPS的坐標轉換至激光雷達的定位坐標系下,剔除異常值,繪制出GPS與激光雷達的軌跡比較圖,并進行誤差分析。
目前,相關研究多偏于理論,缺少對激光雷達定位精度的評估,而激光雷達在很大程度上決定了地圖構建和定位的效果。筆者通過采用16線激光雷達實現無人駕駛汽車SLAM,并基于差分GPS評估其精度。
筆者采用的16線激光雷達是Velodyne公司出品的最小型三維激光雷達[3],保留了電機轉速可調節的功能,實時上傳周圍目標距離和反射率測量值,具有100 m遠程測量距離,安裝方便,質量僅830 g。這一激光雷達可以實現每秒30萬個點數據的輸出,具有±15°豎直視場、360°水平視場掃描功能,防塵、防濕氣等級為IP67,支持兩次回波接收,能夠測量第一次回波和最后一次回波的距離與反射強度,水平方向角度分辨率為0.1°~0.4°,測量頻率為5~20 Hz,具有很高的精度。
激光傳感器數據在開源機器人操作系統分布式架構下封裝為sensor_msgs與PointCloud數據格式[4],由/laser_odom_to_init完成激光數據的發布工作,通過節點即可獲得激光數據。
高精度車載GPS是當前無人駕駛汽車進行全方位定位不可或缺的設備,但僅僅依靠車載GPS進行定位,難以達到無人駕駛汽車的定位要求。在無人駕駛汽車領域,差分GPS應運而生。當前,差分基站通過電臺或者4G網絡將定位信息傳輸至車載GPS定位端,用于提高車載GPS的定位精度[5]。應用已知精確三維坐標的差分GPS基準臺,求得偽距修正量或位置修正量,再將這個修正量實時或事后發送至GPS導航儀,對用戶的測量數據進行修正,進而提高GPS的定位精度。
LOAM算法將激光雷達和慣性測量單元的信息作為輸入[6],分為高頻運動估計和低頻環境建圖兩個部分。高頻運動估計指在高頻率保真度下執行雷達里程計,消除運動畸變。在此過程中,慣性測量單元提供優先運動,并有助減輕總的高頻運動。低頻環境建圖時,以同一個數量級的低頻率運行,匹配和注冊點云信息。

圖1 LOAM算法框架
雷達里程計計算激光雷達在兩次連續掃描之間的運動,去除Pk中的運動畸變,以10 Hz頻率運行,稱為里程計算法。雷達建圖時進一步處理輸出,對未失真的點云進行匹配,并以1 Hz頻率輸出至地圖,稱為繪圖算法。對以上兩個輸出進行姿勢變換集成,以10 Hz頻率輸出。
激光雷達獲取點云數據,提取特征點。特征點選取邊緣點和平面點,通過曲率計算進行選取。曲率C計算式為:
(1)




圖2 點云投影

激光雷達運動在掃描期間以恒定的角度和線速度建模,通過一幀數據終止點相對于起始點的轉換矩陣,可以對這一幀數據中的任意點按照其獲得時相對于起始點的時間進行插值。獲得每一個點的位姿。插值表達式為:
(2)

為了獲得這一幀數據中的點和上一幀數據中點的對應關系,使用一個旋轉矩陣R和一個平移向量τ來表示[7]。
(3)

通過計算點到線和點到面的距離,可以計算出用于優化的誤差函數:
(4)
式中:d為距離。

(5)
式中:J為雅可比矩陣;λ為由Levenberg-Marquardt算法確定的因數[8]。
特征點到對應邊或對應面的距離越大,分配的權重就越小。如果距離大于閾值,那么將權重設置為0。
在算法中,將已經消除畸變的點云先轉換至全局坐標系,再與局部地圖進行匹配。局部地圖指在已經匹配好并且轉換至全局坐標系下的前10 m3點云。特征點的數量是里程計算法的10倍,在地圖點云Qk中確定特征點的關聯時,通過對特征點周圍點云簇進行主成分分析[9],求點云簇的協方差矩陣特征值和特征向量,從而得到對應邊和對應面。


圖3 姿勢變換集成
在LOAM算法的兩種具體算法中,需要提取位于目標邊緣和平面上的特征點,并分別將特征點匹配至目標邊緣直線段和平面。在里程計算法中,通過保證快速計算得到特征點的對應關系。在繪圖算法中,通過保證精度得到特征點的對應關系。
試驗平臺為一輛黃色園區車,其實物如圖4所示。激光雷達安裝在車前方,差分GPS安裝在車頂。Linux嵌入式平臺是一套免費使用和自由傳播的類Unix操作系統[10]。通過無線保真與計算機進行通信,計算機端運算能力強,可進行數據量較大的運算。Linux嵌入式平臺由于運算能力有限,只能運行基本的功能包。筆者采用如圖5所示GPS數據采集和繪圖軟件,繪制GPS路網文件和無人駕駛汽車實時路徑。當前幀GPS 數據顯示當前通過通用串行總線接口截取到的原始數據,當前GPS位置顯示當前無人駕駛汽車定位的經緯度,在GPS設備和測試通信區域,可以通過按鈕打開GPS設備。測試按鈕用于測試當前GPS數據采集和繪圖軟件與主控制軟件是否通信正常。

圖4 試驗平臺實物

圖5 GPS數據采集和繪圖軟件
試驗以圖6所示環境地圖為試驗場景,其中黑色曲線為GPS軌跡,由車載GPS得到。將GPS定位數據與激光雷達獲得的傳感器點云數據記錄在文件中,采用LOAM算法進行定位與建圖,對定位的精度進行評估。
在激光雷達的測量數據中,如果有非常明顯的異常值,可以對該值進行處理。在試驗中,為方便研究,將GPS數據值進行有效提取,使GPS數據與激光雷達數據長度保持一致,兩組數據的一次差值如果大于60 cm,那么認為是異常值。通過MATLAB軟件進行繪圖,對差分GPS和激光雷達的曲線進行誤差分析,如圖7、圖8所示。

圖6 試驗場景

圖7 差分GPS與激光雷達軌跡對比

圖8 激光雷達誤差分布
由圖7和圖8可以看出,基于LOAM算法的激光雷達定位精度較高,雖存在一定誤差,但能將誤差控制在30 cm內,累積誤差不隨無人駕駛汽車行駛距離的增大而增大。
在不同車速和轉向時,LOAM算法能很好地消除位姿估計誤差。隨著無人駕駛汽車的行駛,位姿估計累積誤差可以得到有效控制。彎道誤差波動較大,主要原因是無人駕駛汽車姿態瞬時改變量較大,從而造成障礙物匹配不佳。
筆者應用16線激光雷達和差分GPS進行SLAM試驗,對比基于LOAM算法的激光雷達定位和基于差分GPS的定位,確認激光雷達定位曲線與差分GPS軌跡基本保持一致。通過圖形直觀展示了激光雷達定位誤差分布的特點和變化規律,對影響定位誤差的主要因素進行了分析,對LOAM算法中的應用和SLAM的精度評估具有參考價值。