ROS Gmapping大场景建图能否媲美Google Cartographer及调优方法咨询
Gmapping 100×100m大尺寸建图弯曲问题优化方案
1 前置校准操作
- 激光外参校准:确保激光雷达相对底盘base_footprint的坐标变换无偏差,安装俯仰/横滚角度误差控制在0.5°以内,避免雷达扫描地面或倾斜扫描导致的匹配误差。
- 轮式里程计校准:
- 线速度校准:控制机器人直线行驶10m,对比里程计读数与实际行驶距离,修正线速度比例系数
- 角速度校准:控制机器人原地旋转360°,对比里程计角度读数与实际旋转角度,修正角速度比例系数
- 时间同步校准:确保激光雷达、里程计的时间戳偏差小于10ms,避免扫描数据与位姿不匹配导致的漂移。
2 Launch配置优化
你当前的配置存在参数拼写错误、适配小场景的问题,可针对性调整:
注意:原配置中
map_udpate_interval为拼写错误,正确应为map_update_interval,拼写错误会导致该参数无法生效,是引发漂移的常见原因。
优化后的核心参数调整参考如下:
<?xml version="1.0"?> <launch> <!-- Gmapping --> <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen"> <remap from="scan" to="/scan_front"/> <param name="base_frame" value="/base_footprint"/> <param name="odom_frame" value="/odom"/> <param name="map_frame" value="/map"/> <param name="map_update_interval" value="2.0"/> <!-- 降低大场景下的地图更新频率,减少计算负载 --> <param name="maxUrange" value="18.0"/> <!-- 取值为激光最大可靠测距的90%,丢弃边缘无效数据 --> <param name="sigma" value="0.05"/> <param name="kernelSize" value="1"/> <param name="lstep" value="0.05"/> <param name="astep" value="0.05"/> <param name="iterations" value="10"/> <param name="lsigma" value="0.075"/> <param name="ogain" value="3.0"/> <param name="lskip" value="0"/> <param name="srr" value="0.05"/> <!-- 按里程计精度调整,精度越低取值越高 --> <param name="srt" value="0.03"/> <param name="str" value="0.03"/> <param name="stt" value="0.05"/> <param name="linearUpdate" value="0.2"/> <!-- 每移动0.2m触发一次扫描匹配,提升位姿精度 --> <param name="angularUpdate" value="0.2"/> <!-- 每旋转0.2rad触发一次扫描匹配,减少转弯漂移 --> <param name="temporalUpdate" value="-1.0"/> <param name="resampleThreshold" value="0.5"/> <param name="particles" value="150"/> <!-- 大场景下提升粒子数,增强位姿估计可靠性 --> <param name="xmin" value="-100.0"/> <!-- 提前预设地图边界,避免动态扩张导致的漂移 --> <param name="ymin" value="-100.0"/> <param name="xmax" value="100.0"/> <param name="ymax" value="100.0"/> <param name="delta" value="0.05"/> <!-- 降低地图分辨率到5cm,减少大场景计算压力 --> <param name="llsamplerange" value="0.01"/> <param name="llsamplestep" value="0.01"/> <param name="lasamplerange" value="0.005"/> <param name="lasamplestep" value="0.005"/> <param name="inverted_laser" value="true"/> </node> </launch>
3 建图操作规范
- 建图过程中保持机器人匀速移动,转弯速度控制在0.3rad/s以内,避免急走急停
- 空旷区域移动速度适当降低,保证雷达扫描到足够多的环境特征,避免无特征区域位姿估计失效
- 建图中途可重复行驶已扫描过的区域,帮助算法修正累计漂移
- 场景存在动态障碍物时,提前过滤动态点云,避免匹配错误
内容的提问来源于stack exchange,提问作者Richard Brada
相关产品推荐
相关产品推荐

