map,odom,base_link,base_footprint,傳感器座標系
map:地圖座標系,顧名思義,一般設該座標系爲固定座標系(fixed frame),一般與機器人所在的世界座標系一致。
odom:里程計座標系
base_link:機器人本體座標系,與機器人中心重合
base_footprint:座標系原點爲base_link原點在地面的投影,有些許區別(z值不同)
傳感器座標系:還有一些傳感器座標系,根據傳感器模型和安裝位置來定義
簡單的描述:(https://blog.csdn.net/gadwgdsk/article/details/95206155)
1)在系統計算中,map的原點是fixed的,不會改變,而AMCL計算得到的機器人座標(map座標系下)我們認爲是絕對準確的。
2)odometry節點根據編碼器積分的結果不停地發佈odom到baselink的變換(換算到xy座標系了)
問題:
odom到baselink的變換長時間後不是準確的,爲什麼要一直髮布呢?這不會導致系統使用了錯誤的信息嗎?
解答:在AMCL的代碼中我們可以看到,計算得到map座標系下機器人的座標後並沒有直接發佈map到baselink的變換,而是根據odom和baselink的關係、map和baselink的關係,反推出map和odom的關係,然後發佈map到odom的變換。而map和baselink的地圖中的實際位置是不可能改變的(意思是真實的),因此我們在rviz中能夠看到odom會隨着機器人的運動而改變。總結一下就是:通過改變odom座標系原點的位置使得機器人里程計的信息能夠正確表達機器人的位置(改變的odom原點的量,就是機器人打滑等原因產生的里程計誤差的量)。
參考:
1.https://www.ros.org/reps/rep-0105.html#id18
2.https://blog.csdn.net/flyinsilence/article/details/51854123