ros中的坐标系,主要包括:
map,odom,base_link(base_footprint) 以及如laser,camera等传感器的坐标系;
这些坐标系间的关系可以用下图表示:
这是一个有向图,图中涉及四个坐标系,分别为map,odom,base_link和laser。
箭头分别表示从父节点到子节点的变换,所以这里注意在写变换矩阵的时候,是先平移,后旋转,并且是按照动轴的方式(矩阵右乘)定义的变换矩阵,这种方式的好处就是直观,可以想着怎么把父节点,一步一步地变换为子节点的姿态。
odom到base_link的变换是由里程计获得的;
map到laser的变换是由定位模块给出,例如,可以通过扫描匹配给定;
base_link到laser是我们自己定义的激光传感器在机器人中的安装位置;
我们注意到,这个图是存在环的,也就是有两条路径都可以从map到laser,并且里程计是存在漂移的,所以两条路径存在误差,我们下面可以采用图优化的方式…,不对,这里不是slam…
既然odom到base_link,map到laser,base_link到laser是确定的,那么我们就把误差传递给map到odom就好了!
所以,我们有时候会看到,刚开始的时候map和odom坐标系是重合的,跑着跑着map和odom就不重合了,因为这里把map到odom的变换定义为误差项了!
---------------------
作者:IQIT
来源:CSDN
原文:https://blog.csdn.net/qit1314/article/details/83833950
版权声明:本文为博主原创文章,转载请附上博文链接!