cartographer学习之调参小结

cartographer使用过程中也涉及到了很多的参数调整,不同的参数对算法的影响是不同的。这里简单记录一下一些常调的参数以及一些比较重要的参数。

1、常调的参数

TRAJECTORY_BUILDER_2D.min_range = 0.3
TRAJECTORY_BUILDER_2D.max_range = 100
TRAJECTORY_BUILDER_2D.min_z = 0.2

雷达参数的最大最小距离,以及z轴的高度。单线的时候min_z需要设置为负数或者可以不用设置min_z。

TRAJECTORY_BUILDER_2D.voxel_filter_size = 0.02

体素滤波的大小。

TRAJECTORY_BUILDER_2D.ceres_scan_matcher.occupied_space_weight = 10
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 1
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 1

扫描匹配相关的几个权重。cartographer没有几个可以调整建图效果的参数,这几个应该是为数不多会影响到建图效果的参数。如果将下述两个改大,算法会倾向于相信预测的位姿。将第一个改大,算法会倾向于相信扫描匹配的结果。

TRAJECTORY_BUILDER_2D.submaps.num_range_data = 80
TRAJECTORY_BUILDER_2D.submaps.grid_options_2d.resolution = 0.1

子图相关的参数,num_range_data代表一个子图插入多少数据,实际数据会在这个基础上乘以2。resolution为地图分辨率。

POSE_GRAPH.optimize_every_n_nodes = 160 --2倍的num_range_data以上
POSE_GRAPH.constraint_builder.sampling_ratio = 0.3
POSE_GRAPH.constraint_builder.max_constraint_distance = 15
POSE_GRAPH.constraint_builder.min_score = 0.48
POSE_GRAPH.constraint_builder.global_localization_min_score = 0.6

优化相关的参数,optimize_every_n_nodes代表插入多少个节点优化一次,一般设置为2倍的num_range_data。sampling_ratio为优化的采样频率。max_constraint_distance表示回环检测的最大约束距离,min_score为回环检测的阈值。global_localization_min_score表示大回环匹配的阈值。如果建图时发现回环检测效果不好,存在误匹配的情况,可以提高这两个阈值。

2、降低延迟与减少计算量

2.1、前端部分
减小max_range,减少了需要处理的点数,在雷达数据远距离的点不准时一定要减小这个值。
增大voxel_filter_size,相当于减小了需要处理的点数。
增大submaps.resolution,相当于减小了匹配的搜索量。
对于自适应体素滤波,减小min_num_points与max_range,增大max_length,相当于减小了需要处理的点数。
2.2、后端部分
增大optimize_every_n_nodes,降低优化频率,减小计算量。
增大MAP_BUILDER.num_background_threads,增加计算速度。线程数,可以降低延迟。
减小global_sampling_ratio,减小计算全局约束的频率。
减小constraint_builder.sampling_ratio,减少了约束的数量。
增大constraint_builder.min_score,减少了约束的数量。
减小分支定界搜索窗的大小,包括linear_xy_search_window,linear_z_search_window,angular_search_window
增大global_constraint_search_after_n_seconds,减小计算全局约束的频率。
减小max_num_ietrations,减小迭代次数

3、降低内存

增大子图分辨率submaps.resolution

这是唯一可以降低内存的参数。

4、降低纯定位时错误重定位的概率

可以通过修改一部分pose_graph.lua文件下的参数提高纯定位模式的稳定性:

4.1、提高optimize_every_n_nodes,减少优化的次数。
4.2、减小sampling_ratio,减少了计算约束的次数。
4.3、减小max_constraint_distance,减少了计算约束的距离。
4.4、提高min_score,减小了计算约束的数量。
4.5、提高global_localization_min_score,减小了计算约束的数量。
4.6、提高global_constraint_search_after_n_seconds,减少了回环的次数。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
对于cartographer调参,我可以给你一些基本的指导。Cartographer是一个用于实时三维同步定位和地图构建的开源SLAM(Simultaneous Localization and Mapping)系统。 首先,你需要了解一些关键的参数:resolution(分辨率)、range(范围)、variance(方差)等。这些参数将直接影响到地图的精度和性能。 一种常见的调参方法是通过修改配置文件来调整Cartographer的参数。你可以使用Google Cartographer的官方文档中提供的样例配置文件作为起点,并根据你的需求进行修改。 以下是一些常见的参数及其含义: 1. submaps.resolution:地图分辨率。较高的分辨率会得到更精确的地图,但也会增加计算量。 2. submaps.range_data_inserter.hit_probability、miss_probability:用于构建概率地图的参数。调整这些参数可以影响地图的清晰度和噪声。 3. trajectory_builder_2d.motion_filter.max_angle_radians、max_distance_meters:用于过滤运动时的噪声。适当调整这些参数可以提高定位的准确性。 4. trajectory_builder_2d.num_accumulated_range_data:积累多少个测距数据才进行一次处理。增加此值可以提高精度,但会增加计算量。 值得注意的是,Cartographer还有许多其他参数,根据你的具体应用场景和硬件配置,你可能需要进一步进行调整。 在调参过程中,建议你先从默认配置开始,并逐步修改参数进行测试和评估。观察地图的质量、定位的准确性和系统的实时性能,根据实际情况进行调整。 同时,也可以参考Cartographer的论文和官方文档,了解更多关于算法原理和参数调优的细节。希望这些信息对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶执念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值