简介
定位是导航中的重要实现之一,所谓定位,就是参考某个坐标系(比如:以机器人的出发点为原点创建坐标系)在该坐标系中标注机器人。定位原理看似简单,但是这个这个坐标系不是客观存在的,我们也无法以上帝视角确定机器人的位姿,定位实现需要依赖于机器人自身,机器人需要逆向推导参考系原点并计算坐标系相对关系,该过程实现常用方式有两种:
通过里程计定位
时时收集机器人的速度信息计算并发布机器人坐标系与父级参考系的相对关系。
通过传感器定位
通过传感器收集外界环境信息通过匹配计算并发布机器人坐标系与父级参考系的相对关系。 两种方式在导航中都会经常使用。
里程计定位
优点
里程计定位信息是连续的,没有离散的跳跃。
缺点
里程计存在累计误差,不利于长距离或长期定位。
传感器定位
优点
比里程计定位更精准
缺点
传感器定位会出现跳变的情况,且传感器定位在标志物较少的环境下,其定位精度会大打折扣。 两种定位方式优缺点互补,应用时一般二者结合使用。 坐标系变换
上述两种定位实现中,机器人坐标系一般使用机器人模型中的根坐标系(base_link 或 base_footprint),里程计定位时,父级坐标系一般称之为 odom,如果通过传感器定位,父级参考系一般称之为 map。当二者结合使用时,map 和 odom 都是机器人模型根坐标系的父级,这是不符合坐标变换中"单继承"的原则的,所以,一般会将转换关系设置为: map -> doom -> base_link 或 base_footprint。