对于SLAM定位中各类坐标系的理解(坐标系,里程计坐标系,基座坐标系与雷达坐标系)

3 篇文章 0 订阅
1 篇文章 0 订阅

最近系统性学习了一遍LIO-SAM,开始的时候一直搞不懂里程计坐标系,经过不断学习才有了一点自己的拙见。

引言:首先我们搞清楚SLAM算法主要是解决建图与定位问题,其更侧重定位,即让机器人知道自己在全局地图的哪个位置,只有这样才能继续后续的预测、感知、控制等模块。但是 SLAM算法做定位 这件事存在的意义就是为了解决当GPS这类非自主定位传感器信号不连续时的定位问题。SLAM算法主要是靠激光雷达/相机、IMU等传感器来做定位,但是不管是精度再高的激光雷达通过点云匹配得出位姿还是IMU预积分给出的位姿都会和map中的绝对位姿产生不断变化的误差,这个不断变化的误差便造就了不断变化的“里程计坐标系”。

继续往下看:

1.地图坐标系(map)

        地图坐标系就是全局坐标系,其原点就是机器人刚开始出现在地图的那一点,属于固定坐标系,是不会动的。

2.里程计坐标系(odom)

        这一部分是我想讲的重点,我会尽量讲详细,方便大家理解。

        首先我们通过引言知道,里程计坐标系的产生是由于传感器的误差。举个例子:假设机器人在激光雷达第n帧走到了A点,A点在map上的坐标为(2,0),但是由于传感器的误差,导致传感器解算出来的坐标在(3,0),这个时候在odom下的坐标就是(3,0),因此可以说,odom相对于map在x方向上漂移了1m,如下图:

 黑色代表odom,蓝色代表map。但是此时上图中的odom只存在于激光雷达第n帧的范畴内,假设到了激光雷达第n+1帧的时候,机器人走到了B点,B点在map上的坐标为(2,1),但是再次由于传感器的误差,导致传感器解算出来的坐标在(3,2),这个时候在odom下的坐标就是(3,2),因此可以说,odom相对于map在x方向上漂移了1m,y方向上漂移了1m,此时的odom与第n帧的odom就不同了,如下图

 我们知道map坐标系是固定的,所以我们可以得到一个结论odom是会随着每一帧激光雷达帧的输入而变化的。

         我们回过头来看引言,SLAM算法做定位 这件事存在的意义就是为了解决当GPS这类传感器信号不连续时的定位问题,因此通过算法得出来的定位结果,本就不是绝对位姿,是一个通过解算估计出来的位姿,结合上面的图来说,我们通过SLAM算法得到的定位结果是B’而不是B(B是理想情况下的绝对位姿),但是我们最终需要得到的定位结果是在map坐标系下的位姿而不是odom下的。因此我们需要做一步操作,令每一帧的odom与map重合,即下图这样:

 上图意思就是:机器人通过传感器解算得到的坐标在map中为(3,2),但是机器人实际在map中的绝对位置为(2,1)(这里不要理解错了,在地图中机器人是在(2,1)这个点的,B’这个点是传感器解算出来的,实际在地图中(3,2)这个点是没有机器人的,举个栗子,我(机器人)在家门口蒙着眼往家里面走,走了十步,我凭我自己在家里生活了这么多年的经验(传感器1)再加上我耳朵(传感器2)听到电视机的声音大小判断出来我这个时候在客厅并且距离电视机还有一米的距离(传感器结算出来的定位结果),但是我妈妈告诉我其实距离电视机还有两米的距离(绝对位置),这里的一米就相当于传感器解算的位置,妈妈告诉我的两米是绝对位置,因此我这个时候真正的位置是距离电视机两米的那个地方,而距离电视机只有一米的那个地方是没有人的,现在回到B点和B’点,机器人实际位置是在B点那个地方,B’这个点是没有机器人的。)算法解算位置与绝对位置在x与y方向有1的误差。(当然在实际的SLAM算法中的误差并没有这么大,只是为了方便大家理解,公司项目上就是用的LIOSAM这套代码,如果定位有1m的误差早把人撞si了哈哈哈)

OK现在回过头来看上面那个结论:我说odom是会随着每一帧而变化的,现在可能大家会问,odom与map重合以后不是固定了吗?我直接说答案,其实还是在变的,在坐标系重合之前,odom就是通过map中的绝对坐标与算法解算出来的坐标的误差创造出来的,只不过变化是相对的,现在坐标系虽说固定了,但是算法解算出来的坐标与实际坐标的误差是在不断变化的,因此可以理解为odom还是在不断变化的,只不过是看上去不变了。

总结:一句话概括,odom就是一个由于实际坐标与解算坐标两者的误差而产生的一个不断变化的坐标系。

3.基座坐标系(base_link)

        这个就是机器人自身的坐标系,固定在机器人身上的某个位置,没啥好说的。

4.激光坐标系(laser_link)

        这个就是激光雷达的坐标系,这个坐标系也很重要,对点云的操作(例如点云去畸变、提取特征点等等)就是在这个坐标系下完成的,也是固定在机器人身上的某个位置,与base_link的转换是固定的,甚至有些框架中base_link与laser_link是重合的,也没啥好说的。

到这里坐标系的部分就讲完了。我发这篇博客的目的,首先还是为了写一些有关SLAM坐标系的个人理解,如果能帮到大家也是我的荣幸;其次就是如果我哪里写错了,大家能纠正出来的话对我个人也有帮助,也欢迎大家积极留言评论。

                                                                                                                       码字不易,感谢大家!

SLAM(Simultaneous Localization and Mapping)是一种同时进行定位和地图构建的技术,用于在未知环境实现机器人的自主导航和环境认知。在SLAM坐标系起着重要的作用,它用于描述机器人的位姿和环境的特征点位置。 SLAM常用的坐标系包括世界坐标系(World Coordinate System)、机器人坐标系(Robot Coordinate System)和地图坐标系(Map Coordinate System)。 世界坐标系是一个固定的参考坐标系,通常与地图的原点相关联。它用于描述全局的物理空间,包含环境的障碍物、特征点等。在SLAM开始时,机器人位于世界坐标系的某个位置。 机器人坐标系是固连于机器人身上的坐标系,它随着机器人的运动而变化。通常,机器人坐标系的原点与机器人心位置或某个特定传感器(如激光雷达)的位置相关联。机器人坐标系用于表示机器人的位姿,包括坐标位置和姿态方向。 地图坐标系机器人SLAM过程构建的地图所采用的坐标系。它是相对于世界坐标系坐标系,用于描述环境的特征点和障碍物的位置。地图坐标系通常通过机器人的位姿变换来与世界坐标系对齐。 在SLAM过程机器人通过传感器获取环境信息,并根据自身的运动进行定位和地图构建。通过不断观测和更新,机器人可以在未知环境实现自主导航和建立精确的地图。坐标系的正确使用和转换是实现SLAM算法的关键之一。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值