SLAM:经典算法表格对比

本文对比了Karto、Hector、Gmapping、Cartographer等ROS下的激光雷达SLAM算法,详细分析了各算法的特点、适用场景及优劣,为选择合适算法提供指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇主要记录目前在ROS下开源的几种基于激光雷达的SLAM算法的特点以及优劣,目的在于对日后工作中选择合适的算法提供指导,因此,下面将Karto,Hector,Gmapping,Cartographer等几种开源算法通过列表的形式进行了对比:

Hector

Gmapping

Karto

cartographer

scan-matching(Gaussian-Newton equation) +传感器的要求高

mapping采用的是RBPF的方法

KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系统解耦作为解.

artographer是Google的实时室内建图项目,传感器安装在背包上面,可以生成分辨率为5cm的2D格网地图

 要求: 高更新频率小测量噪声的激光扫描仪.不需要里程计,使空中无人机与地面小车在不平坦区域运行存在运用的可能性.

粒子滤波的方法一般需要大量的粒子来获取好的结果,但这必会引入计算的复杂度;粒子是一个依据过程的观测逐渐更新权重与收敛的过程,这种重采样的过程必然会代入粒子耗散问题(depletion problem), 大权重粒子显著,小权重粒子会消失(有可能正确的粒子模拟可能在中间的阶段表现权重小而消失).

 图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新.

获得的每一帧laser scan数据,利用scan match在最佳估计位置处插入子图(submap)中,且scan matching只跟当前submap有关。在生成一个submap后,会进行一次局部的回环(loop close),利用分支定位和预先计算的网格,所有submap完成后,会进行全局的回环。

利用已经获得的地图对激光束点阵进行优化, 估计激光点在地图的表示,和占据网格的概率.

为避免局部最小而非全局最优的出现,地图采用多分辨率的形式.

 自适应重采样技术引入减少了粒子耗散问题 , 计算粒子分布的时候不单单仅依靠机器人的运动(里程计),同时将当前观测考虑进去, 减少了机器人位置在粒子滤波步骤中的不确定性.

KartoSLAM的ROS版本,其中采用的稀疏点调整(the Spare Pose Adjustment(SPA))与扫描匹配和闭环检测相关.landmark越多,内存需求越大,然而图优化方式相比其他方法在大环境下制图优势更大.在某些情况下KartoSLAM更有效,因为他仅包含点的图(robot pose),求得位置后再求map.

submap的构造是一个重复迭代配准scan和submap的过程。利用配准估算出pose对scan进行刚体变换,插入到submap中。

连续的scan用来构造submap,这里submap以概率格网的形式表现。每一个scan,在插入格网(submap)时,每一个grid有hits和miss两种情况。离scan终点最近的grid为hits,在scan原点和终点之间相交的grid为miss。之前未观察的grid分配一个概率,已观察的grid进行概率更新。

<think>好的,用户想了解如何使用Evo工具对比两个算法的性能或差异。首先,我需要回忆一下Evo工具的基本功能和常用命令。根据之前的引用内容,Evo主要用于评估SLAM轨迹的精度,支持多种数据集格式,如kitti、tum、euroc,还能处理ROS的bag文件。用户提到对比两个算法,可能是比较它们生成的轨迹数据。 首先,用户可能需要知道如何将两个算法的轨迹数据转换成Evo支持的格式。比如,ORB-SLAM3生成的轨迹文件可能需要转换成tum或euroc格式。根据引用[3],ORB-SLAM3运行后会生成轨迹文件,可以用evo来评估。所以,可能需要先确保两个算法的轨迹都保存为相同的格式,比如tum格式。 接下来,用户需要了解如何使用evo命令进行对比。引用[1]提到evo_traj命令可以绘制轨迹,而引用[2]提到标准差等指标。常用的对比方法可能包括可视化轨迹、计算绝对位姿误差(APE)和相对位姿误差(RPE)。例如,使用evo_ape计算两个轨迹之间的绝对误差,或者用evo_res生成统计结果。 需要注意不同数据集格式的转换,比如从bag文件中提取topic数据。引用[1]提到可以使用evo_traj处理bag文件中的topic,可能需要指定话题名称和时间戳。此外,用户可能需要知道如何安装和配置evo,但问题中没有提到安装步骤,所以可能不需要深入这部分。 可能还需要给出具体的命令示例,比如使用evo_traj同时绘制两个轨迹,或者用evo_ape进行误差计算。例如,将算法A和算法B的轨迹文件(如traj_A.txt和traj_B.txt)进行比较,使用evo_ape tum traj_A.txt traj_B.txt -va --plot。 另外,用户可能关心如何解读结果,比如APE的平均值、中位数、标准差等指标的含义,如引用[2]提到的标准差是离散程度的衡量。需要解释这些指标如何反映算法性能差异。 最后,可能需要提醒用户注意轨迹对齐,比如使用--align参数进行轨迹对齐,确保比较的是同一坐标系下的轨迹。或者使用--correct_scale来校正尺度,特别是在单目SLAM中可能存在尺度漂移的问题。 总结步骤应该是:数据准备(格式统一)、可视化对比、误差指标计算、结果分析。同时给出具体的命令示例和参数说明,帮助用户实际操作。</think>### 使用EVO工具对比两种SLAM算法的方法及示例 #### 1. **数据准备** - 确保两个算法生成的轨迹文件格式一致(如TUM、Euroc或KITTI格式)[^1][^3]。 - 示例文件格式(TUM): ``` 时间戳 x y z qx qy qz qw ``` #### 2. **可视化轨迹对比** ```bash evo_traj tum traj_algorithm1.txt traj_algorithm2.txt --ref=ground_truth.txt -p --plot_mode=xyz --align ``` - `--ref=ground_truth.txt`:以真值轨迹为参考基准[^1]。 - `--align`:对齐轨迹(平移和旋转)以消除初始位姿差异[^3]。 - `--plot_mode=xyz`:显示三维轨迹对比。 #### 3. **计算绝对位姿误差(APE)** ```bash evo_ape tum ground_truth.txt traj_algorithm1.txt -va --plot --save_results results_algorithm1.zip evo_ape tum ground_truth.txt traj_algorithm2.txt -va --plot --save_results results_algorithm2.zip ``` - `-va`:输出详细统计信息(均值、中位数、标准差等)[^2]。 - `--save_results`:保存结果用于后续对比。 #### 4. **对比两种算法的误差** ```bash evo_res results_algorithm1.zip results_algorithm2.zip -p --save_table table.csv ``` - 生成表格对比两种算法的APE指标(如RMSE、标准差)[^2]。 - 表格示例: | 算法 | RMSE | 均值 | 标准差 | |----------|--------|--------|--------| | 算法1 | 0.12 | 0.10 | 0.05 | | 算法2 | 0.08 | 0.07 | 0.03 | #### 5. **分析相对位姿误差(RPE)** ```bash evo_rpe tum ground_truth.txt traj_algorithm1.txt --delta 1 --delta_unit m -va --plot ``` - `--delta 1`:计算每隔1米的相对位姿误差。 - 适用于评估局部一致性(如里程计漂移)。 --- ### 示例:对比ORB-SLAM3与ORB-SLAM2 1. **生成轨迹文件** - 分别运行ORB-SLAM3和ORB-SLAM2,输出轨迹文件`traj_orb3.txt`和`traj_orb2.txt`。 2. **可视化对比** ```bash evo_traj tum traj_orb3.txt traj_orb2.txt --ref=ground_truth.txt -p --align --correct_scale ``` - `--correct_scale`:校正尺度(适用于单目SLAM)。 3. **性能指标输出** ```bash evo_ape tum ground_truth.txt traj_orb3.txt -va --plot evo_ape tum ground_truth.txt traj_orb2.txt -va --plot ``` --- ### 注意事项 - **轨迹对齐**:单目SLAM可能存在尺度漂移,需用`--correct_scale`对齐尺度[^3]。 - **数据同步**:若时间戳不同步,可使用`evo_traj ... --sync`进行时间戳同步。 - **多维度分析**:结合APE(全局精度)和RPE(局部一致性)全面评估算法。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值