最近系統(tǒng)性學(xué)習(xí)了一遍LIO-SAM,開始的時候一直搞不懂里程計坐標系,經(jīng)過不斷學(xué)習(xí)才有了一點自己的拙見。
引言:首先我們搞清楚SLAM算法主要是解決建圖與定位問題,其更側(cè)重定位,即讓機器人知道自己在全局地圖的哪個位置,只有這樣才能繼續(xù)后續(xù)的預(yù)測、感知、控制等模塊。但是 SLAM算法做定位 這件事存在的意義就是為了解決當GPS這類非自主定位傳感器信號不連續(xù)時的定位問題。SLAM算法主要是靠激光雷達/相機、IMU等傳感器來做定位,但是不管是精度再高的激光雷達通過點云匹配得出位姿還是IMU預(yù)積分給出的位姿都會和map中的絕對位姿產(chǎn)生不斷變化的誤差,這個不斷變化的誤差便造就了不斷變化的“里程計坐標系”。
繼續(xù)往下看:
1.地圖坐標系(map)
? ? ? ? 地圖坐標系就是全局坐標系,其原點就是機器人剛開始出現(xiàn)在地圖的那一點,屬于固定坐標系,是不會動的。
2.里程計坐標系(odom)
? ? ? ??這一部分是我想講的重點,我會盡量講詳細,方便大家理解。
? ? ? ? 首先我們通過引言知道,里程計坐標系的產(chǎn)生是由于傳感器的誤差。舉個例子:假設(shè)機器人在激光雷達第n幀走到了A點,A點在map上的坐標為(2,0),但是由于傳感器的誤差,導(dǎo)致傳感器解算出來的坐標在(3,0),這個時候在odom下的坐標就是(3,0),因此可以說,odom相對于map在x方向上漂移了1m,如下圖:
?黑色代表odom,藍色代表map。但是此時上圖中的odom只存在于激光雷達第n幀的范疇內(nèi),假設(shè)到了激光雷達第n+1幀的時候,機器人走到了B點,B點在map上的坐標為(2,1),但是再次由于傳感器的誤差,導(dǎo)致傳感器解算出來的坐標在(3,2),這個時候在odom下的坐標就是(3,2),因此可以說,odom相對于map在x方向上漂移了1m,y方向上漂移了1m,此時的odom與第n幀的odom就不同了,如下圖
?我們知道m(xù)ap坐標系是固定的,所以我們可以得到一個結(jié)論:odom是會隨著每一幀激光雷達幀的輸入而變化的。
? ? ? ? ?我們回過頭來看引言,SLAM算法做定位 這件事存在的意義就是為了解決當GPS這類傳感器信號不連續(xù)時的定位問題,因此通過算法得出來的定位結(jié)果,本就不是絕對位姿,是一個通過解算估計出來的位姿,結(jié)合上面的圖來說,我們通過SLAM算法得到的定位結(jié)果是B’而不是B(B是理想情況下的絕對位姿),但是我們最終需要得到的定位結(jié)果是在map坐標系下的位姿而不是odom下的。因此我們需要做一步操作,令每一幀的odom與map重合,即下圖這樣:
?上圖意思就是:機器人通過傳感器解算得到的坐標在map中為(3,2),但是機器人實際在map中的絕對位置為(2,1)(這里不要理解錯了,在地圖中機器人是在(2,1)這個點的,B’這個點是傳感器解算出來的,實際在地圖中(3,2)這個點是沒有機器人的,舉個栗子,我(機器人)在家門口蒙著眼往家里面走,走了十步,我憑我自己在家里生活了這么多年的經(jīng)驗(傳感器1)再加上我耳朵(傳感器2)聽到電視機的聲音大小判斷出來我這個時候在客廳并且距離電視機還有一米的距離(傳感器結(jié)算出來的定位結(jié)果),但是我媽媽告訴我其實距離電視機還有兩米的距離(絕對位置),這里的一米就相當于傳感器解算的位置,媽媽告訴我的兩米是絕對位置,因此我這個時候真正的位置是距離電視機兩米的那個地方,而距離電視機只有一米的那個地方是沒有人的,現(xiàn)在回到B點和B’點,機器人實際位置是在B點那個地方,B’這個點是沒有機器人的。)算法解算位置與絕對位置在x與y方向有1的誤差。(當然在實際的SLAM算法中的誤差并沒有這么大,只是為了方便大家理解,公司項目上就是用的LIOSAM這套代碼,如果定位有1m的誤差早把人撞si了哈哈哈)
OK現(xiàn)在回過頭來看上面那個結(jié)論:我說odom是會隨著每一幀而變化的,現(xiàn)在可能大家會問,odom與map重合以后不是固定了嗎?我直接說答案,其實還是在變的,在坐標系重合之前,odom就是通過map中的絕對坐標與算法解算出來的坐標的誤差創(chuàng)造出來的,只不過變化是相對的,現(xiàn)在坐標系雖說固定了,但是算法解算出來的坐標與實際坐標的誤差是在不斷變化的,因此可以理解為odom還是在不斷變化的,只不過是看上去不變了。
總結(jié):一句話概括,odom就是一個由于實際坐標與解算坐標兩者的誤差而產(chǎn)生的一個不斷變化的坐標系。
3.基座坐標系(base_link)
? ? ? ? 這個就是機器人自身的坐標系,固定在機器人身上的某個位置,沒啥好說的。
4.激光坐標系(laser_link)
? ? ? ? 這個就是激光雷達的坐標系,這個坐標系也很重要,對點云的操作(例如點云去畸變、提取特征點等等)就是在這個坐標系下完成的,也是固定在機器人身上的某個位置,與base_link的轉(zhuǎn)換是固定的,甚至有些框架中base_link與laser_link是重合的,也沒啥好說的。
到這里坐標系的部分就講完了。我發(fā)這篇博客的目的,首先還是為了寫一些有關(guān)SLAM坐標系的個人理解,如果能幫到大家也是我的榮幸;其次就是如果我哪里寫錯了,大家能糾正出來的話對我個人也有幫助,也歡迎大家積極留言評論。文章來源:http://www.zghlxwxcb.cn/news/detail-437209.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 碼字不易,感謝大家!文章來源地址http://www.zghlxwxcb.cn/news/detail-437209.html
到了這里,關(guān)于對于SLAM定位中各類坐標系的理解(坐標系,里程計坐標系,基座坐標系與雷達坐標系)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!