(轉(zhuǎn)載請注明作者和出處:https://yangningbocn.github.io 未經(jīng)允許請勿用于商業(yè)用途)
為了更好的集成和重用軟件模塊饥漫,驅(qū)動,模型以及庫的開發(fā)人員需要一個坐標(biāo)系的共享公約担租。該坐標(biāo)系的共享規(guī)約讓開發(fā)者為移動基座創(chuàng)建驅(qū)動和模型提供了一個規(guī)范砖顷。同樣创南,開發(fā)人員用與本規(guī)范兼容的一些移動機(jī)器人基座軟件能很容易的創(chuàng)建相應(yīng)的庫和應(yīng)用涩嚣。
- 世界坐標(biāo)(map)
該map坐標(biāo)系是一個世界固定坐標(biāo)系崇众,其Z軸指向上方掂僵。相對于map坐標(biāo)系的移動平臺的姿態(tài),不應(yīng)該隨時間顯著移動顷歌。map坐標(biāo)是不連續(xù)的锰蓬,這意味著在map坐標(biāo)系中移動平臺的姿態(tài)可以隨時發(fā)生離散的跳變。
典型的設(shè)置中眯漩,定位模塊基于傳感器的監(jiān)測芹扭,不斷的重新計算世界坐標(biāo)中機(jī)器人的位姿,從而消除偏差坤塞,但是當(dāng)新的傳感器信息到達(dá)時可能會跳變冯勉。
map坐標(biāo)系作為長期的全局參考是很有用的澈蚌,但是跳變使得對于本地傳感和執(zhí)行器來說摹芙,其實是一個不好的參考坐標(biāo)。 - 里程計坐標(biāo)系(odom)
odom 坐標(biāo)系是一個世界固定坐標(biāo)系宛瞄。在odom 坐標(biāo)系中移動平臺的位姿可以任意移動浮禾,沒有任何界限。這種移動使得odom 坐標(biāo)系不能作為長期的全局參考份汗。然而盈电,在odom 坐標(biāo)系中的機(jī)器人的姿態(tài)能夠保證是連續(xù)的,這意味著在odom 坐標(biāo)系中的移動平臺的姿態(tài)總是平滑變化杯活,沒有跳變匆帚。
在一個典型設(shè)置中,odom 坐標(biāo)系是基于測距源來計算的旁钧,如車輪里程計吸重,視覺里程計或慣性測量單元。
odom 坐標(biāo)系作為一種精確歪今,作為短期的本地參考是很有用的嚎幸,但偏移使得它不能作為長期參考 - 基座標(biāo)(base_link)
該base_link坐標(biāo)剛性地連接到移動機(jī)器人基座。base_link可以安裝在基座中的任意方位寄猩;對于每個硬件平臺嫉晶,在基座上的不同地方都會提供一個明顯的參考點。
坐標(biāo)之間的關(guān)系
在機(jī)器人系統(tǒng)中田篇,我們使用一棵樹來來關(guān)聯(lián)所有坐標(biāo)系替废,因此每個坐標(biāo)系都有一個父坐標(biāo)系和任意子坐標(biāo)系,如下:
map --> odom --> base_link
世界坐標(biāo)系是odom坐標(biāo)系的父泊柬,odom坐標(biāo)系是base_link的父椎镣。雖然直觀來說,map和odom應(yīng)連接到base_link彬呻,這是不允許的衣陶,因為每坐標(biāo)系只能有一個父類柄瑰。
坐標(biāo)系權(quán)限
odom到base_link的轉(zhuǎn)換是由里程計源計算和發(fā)布的。然而剪况,定位模塊不發(fā)布map到base_link的轉(zhuǎn)換(transform)教沾。相反,定位模塊先接收odom到base_link的 transform译断,并使用這個信息發(fā)布map到odom的transform授翻。
通俗理解
odom和map坐標(biāo)系在機(jī)器人運動開始是重合的。但是孙咪,隨著時間的推移是不重合的堪唐,而出現(xiàn)的偏差就是里程計的累積誤差。那map-->odom的tf就是在一些校正傳感器合作校正的package比如gmapping會給出一個位置估計(localization)翎蹈,這可以得到map-->base_link的tf淮菠,所以估計位置和里程計位置的偏差也就是odom與map的坐標(biāo)系偏差。所以荤堪,如果你的odom計算沒有錯誤合陵,那么map–->odom的tf就是這里寫圖片描述