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,减少了回环的次数。

你可能感兴趣的:(cartographer,学习)