(1)POSE_GRAPH.optimize_every_n_nodes
设置成0
把后端优化去掉,相当于把前端和后端区分开来,这样如果建图有问题,说明是前端的参数需要调整,先优化前端
而如果前端没有问题,再把此数值改回去,调整后端的参数
(2)cere匹配器相关参数
TRAJECTORY_BUILDER_nD.ceres_scan_matcher.translation_weight
【翻译官方文档:在我们的例子中,扫描匹配器可以在不影响分数的情况下*地前后移动匹配。我们希望通过让扫描匹配器为偏离它得到的先验而付出更多代价来惩罚这种情况。控制它的两个参数是TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight和rotation_weight。越高,将结果移离先验的代价就越大,或者换句话说:扫描匹配必须在另一个位置产生更高的分数才能被接受。】
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.occupied_space_weight
权重越高,提供的先验位姿越不容易被改变
如果雷达频率低,就把地图的权重调大,而把平移和旋转的权重调小
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight
(3)雷达测量范围
TRAJECTORY_BUILDER_nD.min_range
TRAJECTORY_BUILDER_nD.max_range
带通滤波器,并且只将范围值保持在某个最小和最大范围之间。根据机器人和传感器的规格选择这些最小值和最大值
(4)提高实时性
低延迟是指在接收到传感器输入后不久就可以使用优化的局部姿态,通常在一秒钟内,并且全局优化没有积压。在线算法需要低延迟,例如机器人定位。在前台运行的本地 SLAM 直接影响延迟。Global SLAM 建立了一个后台任务队列。当全局 SLAM 无法跟上队列时,漂移会无限累积,因此应调整全局 SLAM 以使其实时工作。