雪花台湾

在激光SLAM中,使用傳統的輪式里程計和通過scan_match的激光里程計的優缺點在哪裡?

比如,我在gmapping演算法中,使用激光里程計和高精度的輪式里程計表現出來的區別是什麼?


里程計作為SLAM的前端是值得專門研究的。畢竟後端的閉環是為了減小累計誤差。里程計的累計誤差越小,後端就越輕鬆。而一個糟糕的里程計配上非常厲害的閉環也不會有好的效果。

輪式里程計的精度很大程度上取決於標定。良好的標定可以達到極高的精度,甚至高於激光里程計。在實際工程中,我最推薦的做法是進行輪式里程計和激光的聯合標定。聯合標定包括內參和外參,這裡內參是指左右輪的半徑和輪距;而外參是指激光雷達與底盤的位置關係。經過聯合標定後,不僅輪式里程計誤差極低,還可以把兩種里程計進行融合。效果如下,在odom frame下可視化laserscan,憑肉眼是看不出漂移的。

輪式+激光里程計融合袁博融的視頻 · 289 播放

畢竟其它答主也提到了,輪子可能存在打滑,因此偶爾也有失效的情況。但輪式里程計在靜態時是絕對不會漂移的。減小輪子打滑影響的方式之一是在從動輪上增加編碼器做里程計。因為打滑主要發生在主動輪上。但這會導致更複雜的機械設計。激光里程計在靜態時仍可能漂移,產生累計誤差,取決於具體實現。據我測試,laser_scan_matcher精度並不算高,我更推薦rf2o_laser_odometry。激光里程計的挑戰是有動態障礙物的環境,尤其是當視野被嚴重遮擋時。就像你在火車上看對面的火車動了,可能並不確定是對面的車開了還是自己的車開了。如果有條件的話,盡量把激光雷達視野做大,會省掉很多麻煩。畢竟買個360度的激光只用180度也會有點不爽吧。至於聯合標定工具,推薦曠視SLAM組的OdomLaserCalibraTool。裡面文檔有詳細的理論推導。而在實際應用中,因為輪子磨損會導致輪子半徑減小,標定應定期更新。而改進聯合標定的調用方式可以做到在線自動標定和更新,保證機器人在整個生命周期內的精度。

除了題主問到的這兩種里程計外,視覺慣導里程計(VIO)也是推薦使用的。VIO目前看來性價比極高,千元以內的雙目慣導就有極高的精度。視覺和IMU也是取長補短的關係,近幾年發展出的演算法很多。這裡就不過多介紹了,可展開討論的太多了,以後在合適的問題下可以再仔細談談。


談一談個人理解哈,沒太深入思考,結論不一定正確,還望給位大佬批評指正。

輪式里程計:

優點:

缺點:

激光里程計:

優點:

缺點:


輪式里程計的優點就是速度快,但是長時間了肯定不準,一是感測器不準,二是在運動過程中會有滑動存在;而通過scan_match計算位姿精度會更高,缺點就是計算量比較大。

一種更好的方法就是將兩者結合,在兩個scan_match之間使用輪式里程計的增量得噹噹前位姿,在有激光數據可用時執行scan_match進一步修正位姿;這樣的話位姿輸出速率就可以很高,同時保持精度。


前面幾位都說了輪式里程計和激光里程計各自的優缺點,其實在實際工程中,單一感測器存在測量的局限性,魯棒性和精度都難以保證,因此一般都會選擇多感測器融合的方法;常見的就是基於濾波或者是優化的方法,比如gmapping就是一種濾波的方法,cartographer就是一種基於優化的方法,兩種方法本質上都可行,融合的難點在於怎麼準確的描述測量的不確定性,數據怎麼對齊(時間+空間),另外現在都2020年了,就不要再研究gmapping了。


後驗(定位/建圖)=先驗(里程計)*似然(激光觀測)

類似編碼器的這種里程計屬於內部感測器,只能提供先驗預測,而這種預測是可以可無的(勻速模型/隨便給個大概值...)。優缺點無從談起,只是不同使用場景下的不同方案。

硬要比較的話,按照題主提問中的這種場景(猜測室內小車),採用gmapping這種粒子濾波原理的定位時,首先要有個二維柵格地圖,然後走兩步才能完成初始化。遇到過於方正對稱的環境容易失效;高精度里程計開機就完成內部初始化,相對地圖的位姿初始化需要手動標定。


計算一個輪式里程計的過程通常不需要環境信息,其精度主要是受限於感測器本身精度,當然在凹凸不平和容易打滑的地方觀測精度會下降。

激光里程計的計算是依靠san to can 或者scan to map的scanMatch實現的。由於激光數據是對外部環境的觀測,儘管激光的測量精度很高,但是極其容易受環境影響的,如長走廊無法推理走廊方向上的運動,感測器被遮擋會導致直接無法進行推理。

總的來說是兩種不同類型的觀測信息,是高效互補的一對組合。在gmapping裡面,一般使用輪式里程計作為里程計的輸入源,在長走廊一般也不會表現的太差。更一般來說,如果有輪式里程計,就盡量用到它,它對維持系統的魯棒性尤為重要,其他觀測源用於提高精度。


輪式里程計頻率高,局部精度也高,但存在累計誤差,使用時間長了了絕對精度下降。兒激光里程計相反,使用scan_match演算法後絕對精度較高,但計算需要耗時,所以頻率相對前者低,精度則有激光雷達精度決定。但要注意的是,激光雷達里程計同樣存在累積誤差,需要通過迴環優化消除。


輪子里程計一般局限在二維平面,scan match可以得到三維姿態。


輪式里程計+scan matching豈不是很完美

所以說多感測器融合才是王道


輪式里程計精度再高也沒啥意義,打滑一下不也是涼涼的。


推薦閱讀:
相关文章