Hector SLAM 原理详解、算法解析

目录

  1.原理详解

  2.算法解析


1.原理详解

Hector整体算法很直接,就是将激光点与已有的地图“对齐”,即扫描匹配。扫描匹配就是使用当前帧与已经有的地图数据构建误差函数,使用高斯牛顿法得到最优解和偏差量。其工作是实现激光点到栅格地图的转换,t时刻所有的激光点都能变换到栅格地图中,也就意味着匹配成功。

  具体流程为:

首先初始时刻激光自身的坐标系与栅格地图坐标系重合,即激光在地图中的初始位姿(estimate)已知,激光的第一帧扫描数据在地图中的坐标已知。接着,获取到第二帧激光扫描数据,第二帧数据在激光雷达坐标系下的坐标是可以测出的(根据激光雷达的range、angle便可得到在激光坐标系下的坐标),但是不知道与第一帧的相对位置关系。

下一步就是实现这两帧数据的匹配,我们假设两帧数据无限接近,即激光点在栅格地图占用值接近1(占用值越大,匹配的效果越好)。然后构造最小二乘法,对函数先对括号内部展开,然后对使误差偏导为0,求解高斯牛顿方程(其中有用到地图求偏导的方程(双线性插值法),带入即可求出位姿增量(在hector位姿增量用变量searchDir)。

 接下来就可求出第二帧激光在地图坐标系下的位姿(第一帧位姿加上位姿增量即可得到,estimate += searchDir),slam中定位完成。

接下来建图,后一帧的激光位姿求出,因为已知后一帧激光点在激光坐标系下的坐标,所以可根据后一帧激光位姿得后一帧激光点在地图中坐标,即映射到地图中,完成slam建图过程。

cartographer中的前端匹配使用了双三次线性插值+ceres库求解非线性优化问题(构造最小二乘,优化匹配),而hector slam中使用了双线性插值+高斯牛顿求解非线性优化问题


hector存在的问题:
1、其中对于双线性差值,在理论上存在不连续的可能,Pm可能在计算的时候迭代的过程中跑出P00->P11围成的正方形。这个问题也被google的cartographer改进为三线性差值。

https://github.com.cnpmjs.org/googlecartographer/cartographer
2、没有对地图的修正能力,一旦地图出错,之后的匹配也都会出现问题。

2.算法解析

算法解析参考

### Hector SLAM 算法流程 Hector SLAM 的核心在于通过激光扫描数据来创建环境的地图并估计机器人的位置。该过程主要依赖于激光测距仪提供的精确距离测量,利用这些数据进行地图构建和定位。 #### 主要步骤概述: 1. **初始化** - 启动ROS节点,并加载必要的参数配置文件。 - 初始化内部状态变量以及所需的数据结构用于存储地图信息。 2. **获取传感器读数** - 定期接收来自激光雷达的扫描消息。 - 对原始数据进行预处理,去除噪声点或异常值。 3. **特征提取与配准** - 提取每次扫描中的显著几何特性作为匹配依据。 - 将新获得的一组激光点云同已有地图上的对应部分做对比分析,计算两者之间的相对位姿变化量。 4. **优化求解器应用** - 构造目标函数表示两帧之间差异程度最小化问题。 - 使用高斯-牛顿迭代方法寻找使误差平方和达到极小的最佳平移旋转矩阵[^2]。 5. **更新全局坐标系下的地图表达** - 把最新的观测结果融入到累积形成的环境中去。 - 维护一个不断增长且自洽的世界模型描述。 6. **发布姿态估计** - 输出机器人当前位置的姿态信息给其他订阅者使用。 7. **循环执行上述操作直到任务结束** 下面是基于以上说明绘制的一个简化版Hector SLAM算法流程图: ```mermaid graph TD; A[启动ROS节点] --> B{接收到新的<br>激光扫描?}; B -- 是 --> C[预处理数据]; C --> D[特征提取]; D --> E[配准当前帧<br>至现有地图]; E --> F[运行GN优化]; F --> G[更新地图]; G --> H[广播最新位姿]; H --> I[等待下一周期]; I --> B; B -- 否 --> J[继续监听]; J --> I; ``` 此图表展示了从启动到完成一次完整的SLAM循环所经历的主要阶段及其相互关系。需要注意的是实际实现可能会更加复杂一些,涉及到更多细节和技术考量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值