实验结果
法石雷达 12m
雷神雷达 12 m
思岚雷达 12m
法石和雷神参数完全一致, 回环稳定建图效果良好。
雷神因为路径不一样回环不正确, 故更改了 loop_search_maximum_distance: 3.0 减小错误的回环
雷神30m 雷达参数和结果
参数对比
主要参数 | 30m范围雷达 | 12m范围雷达 | 解释 | 性能影响 |
---|---|---|---|---|
minimum_travel_distance | 0.8~ 1 | 0.3~0.4 | 大范围雷达视野更远,相邻节点间匹配的差异不大, 但距离小的雷达可能在1m 内环境变化大会导致匹配出错。 | 数值越小,全局的总结点数越多,全局优化会更耗时(与节点数成正比) |
loop_search_maximum_distance | 8 ~ 10 | 3 ~ 5 | 同样大范围雷达视野远,匹配出错可能小 | 搜索范围内的非相邻节点, 数值越大范围也越大,开始匹配的也越早, |
loop_match_maximum_variance_coarse | 3 | 4 -5 | 与雷达数据的可靠性相关, 最好看返回的数值范围确定区间 | 越大越容易回环, 出错的可能性也越大, 如果设置越小很可能检测道德回环一直不符合要求,导致一直寻找,极消耗 cpu |
loop_match_minimum_response_coarse | 0.01 - 0.1 | 0.3 | 与雷达数据的可靠性相关, 最好看返回的数值范围确定区间 | 越小越容易回环, 出错的可能性也越大, 如果设置越小很可能检测道德回环一直不符合要求,导致一直寻找,极消耗 cpu |
loop_match_minimum_response_fine | 0.01 - 0.1 | 0.3 | 与雷达数据的可靠性相关, 最好看返回的数值范围确定区间 | 越小越容易回环, 出错的可能性也越大, 如果设置越小很可能检测道德回环一直不符合要求,导致一直寻找,极消耗 cpu |
map_update_interval | 120 - 2400 | 大于 3 | 发布map的频率 | 越小更新地图越频繁, 极消耗 cpu |
总结
- loop_search_maximum_distance , minimum_travel_distance 范围打的与范围小的雷达有效数据区间不一样,故两个值响应变化
- loop_match_maximum_variance_coarse: 3.0
loop_match_minimum_response_coarse: 0.3
loop_match_minimum_response_fine: 0.3
三个参数和雷达的性质相关, 要求越高回环的准确度越高,但相应的检测的节点数目也会越多,计算量差距较大(cpu 占用率百分之百的元凶), 具体调试看再一个合理范围 - 测出30m雷达, minimum_travel_distance 设置为 0.8时, 地下车库大概为1200个节点; 12m雷达, minimum_travel_distance 设置为 0.4时大概460个节点; 但前者更新一次地图耗时5s 左右, 后者2s左右。 优化后的程序代码, UpdateMap采用双线程,对主线程 即addScan, trycloseloop 和影响不大。 同时对 tryCloseLoop部分采用4线程处理, 回环处理速度提升50%, 但每次回环检测还需要3s 左右时间。