任务动机:通过Cartographer调参,达到在Rockchip rk3399开发板上实时和精度兼顾的效果。
任务描述:参照Cartographer官方调参文档,通过逐个调参,记录真实机器人建立的地图和系统资源消耗。
1. 硬件及OS信息
name | type |
---|---|
CPU | RK3399 双核Cortex-A72(大核)+四核Cortex-A53(小核) |
Kernel | 4.4.179 |
ROS | Meloc |
lidar | ToF |
bag | Speed 0.266 m/s Turn 1.0 Rad/s |
使用预先录制好的bag,然后用同一个bag对比不同的参数效果
2. 参数效果
评判调参效果,从两方面进行:
- 建图中的优化实时性,即在建图中纠偏优化的实时速度;
- 建图完成后的优化速度或者优化时间。
建图完成以后,地图的保存分成三步,写成一个脚本文件,这里并没有用通用变量,用起来需要进入脚本修改名称。使用cartographer_ros/offline_node 进行参数粗调,找到建图质量较好的地图后,记录实时的CPU使用情况。
2.1 官方给出的调参教程
### Low latency 调整
#### local
- 提高 voxel_filter_size
- 提高 submaps.resolution
- 降低 min_num_points max_range 提高 max_length
- 降低 max_range
- 降低 submap.num_range_data
#### global
- 降低 optimize_every_n_nodes
- 提高 num_background_threads <= CPU 核数
- 降低 linear_xy_search_window linear_z_search_window angular_search_window
- 提高global_constraint_search_after_n_seconds
- 降低max_num_iterations
2.2 参数调整
第一个调整的参数推荐 MAP_BUILDER.num_background_threads 先明确预留的CPU资源,在这个基础上进行调整。
2.2.1 Local SLAM(optimize_every_n_nodes = 0)
a.submap.num_range_data
构建子图需要的scan数据量
- value = 90(default)
过程效果 = 1
最终效果 = 4
CPU使用情况
- value = 10
过程中
优化后
CPU
- value = 50
过程中
优化后
- value = 30