3 步跑通 MULLS-SLAM:KITTI 序列实战、实时可视化与地图输出全流程教程
3 步跑通 MULLS-SLAMKITTI 序列实战、实时可视化与地图输出全流程教程【免费下载链接】MULLS MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square [ICRA 21]项目地址: https://gitcode.com/gh_mirrors/mu/MULLSMULLS-SLAM是 ICRA 2021 收录的高效、低漂移、多用途 LiDAR SLAM 系统全称 Multi-metric Linear Least Square多度量线性最小二乘。本文为新手准备了一份 3 步上手教程从环境编译、示例数据快速体验到 KITTI 序列实战、实时可视化与地图输出全程无需修改一行算法代码跟着操作即可跑通这套 LiDAR SLAM。目录速览 MULLS-SLAM 是什么为什么值得一试第 1 步编译前准备与依赖安装第 2 步用内置示例数据快速体验 LiDAR SLAM第 3 步KITTI 序列实战数据准备、配置与运行地图与轨迹输出在哪里精度评估与调参提示常见问题与避坑指南MULLS-SLAM 是什么为什么值得一试 MULLS 是一套「前端 后端」完整的纯激光 SLAM 方案核心思路是把点云按几何特征分类地面、柱体、立面、横梁、屋顶、顶点再用多度量线性最小二乘高效求解位姿兼顾精度与速度。它的几个亮点对新手非常友好支持*.pcd / *.ply / *.txt / *.las / *.csv / *.h5 / *.bin等多种点云格式无需 ROS 也能跑内置 16 帧示例数据克隆即可秒级体验适合零基础入门提供 KITTI 城市、高速、超快等多套现成参数开箱即用自带实时 3D 查看器跑起来能直观看到建图过程。第 1 步编译前准备与依赖安装 MULLS 在 Ubuntu 16.04 / 18.04 / 20.04 上测试通过需要支持 OpenMP 的编译器。必装依赖PCL1.7、Glog、Gflags、Eigen3。可选依赖按需Ceres / g2o / gtsam位姿图优化三选一推荐 Ceres、OpenCV2D 地图与图像输出、TEASER全局配准、LibLas、HDF5、Proj4 等。可选的开关都在根目录的 CMakeLists.txt 中用ccmake勾选即可。一键安装脚本项目提供了依赖安装脚本 script/tools/install_dep_lib.sh在 Ubuntu 上直接执行bash script/tools/install_dep_lib.sh编译在项目根目录执行mkdir build cd build cmake .. make cd ..编译完成后bin目录下会生成mulls_slamSLAM 主程序、mulls_reg两帧配准、bin2pcdKITTI 格式转换等可执行文件。若中途改过 CMake 选项导致报错删除build目录重新编译即可。第 2 步用内置示例数据快速体验 LiDAR SLAM 项目在 demo_data 目录内置了 16 帧连续扫描点云pcd/000000.pcd到000015.pcd不需要任何配置直接运行sh script/run_mulls_slam.sh运行脚本 script/run_mulls_slam.sh 默认开启实时可视化--real_time_viewer_on1你可以在 3D 查看器中看到点云地图逐帧拼接、轨迹实时延伸的过程跑完即可在demo_data/result文件夹拿到位姿与地图结果顺带体验点云配准想先感受两帧点云的对齐效果可以运行 script/run_mulls_reg.sh它默认把000000.pcd配准到000015.pcd并输出变换后的点云sh script/run_mulls_reg.sh这一步的意义在于先用内置数据验证编译环境是否 OK再进入真实数据集实战排查问题更高效。第 3 步KITTI 序列实战数据准备、配置与运行 ️示例数据只有 16 帧真正检验 SLAM 能力要用完整序列。KITTI Odometry 数据集是 LiDAR SLAM 的经典基准下面以序列 00城市道路为例。① 准备数据目录下载 KITTI 数据集后按如下结构放置00代表序列号Base Folder └── 00 ├── velodyne # 原始 *.bin 激光数据 ├── pcd # 由 bin 转换而来可自动生成 ├── 00.txt # 真值轨迹可选用于评估 └── calib.txt # 外参标定文件可选② 一键转换 bin 为 pcdMULLS 的输入是逐帧点云文件先运行转换脚本 script/tools/run_kittibin2pcd.sh 把velodyne/*.bin批量转成pcd文件夹脚本会把序列号改为你下载的序列如03sh script/tools/run_kittibin2pcd.sh③ 修改运行脚本的配置编辑 script/run_mulls_slam.sh只需关注三个配置点project_folder指向你的 KITTI 序列根目录pc_formatpcd与转换后的数据格式保持一致config_file切换参数文件官方已备好多套现成配置config_file./script/config/lo_gflag_list_kitti_urban.txt # 城市序列 00/02-10 config_file./script/config/lo_gflag_list_kitti_highway.txt # 高速序列 01 config_file./script/config/lo_gflag_list_kitti_ultrafast.txt # 极速模式④ 运行并实时观看建图过程sh script/run_mulls_slam.sh脚本默认开启实时查看器你能看到点云地图、估计轨迹红色与真值轨迹的叠加对比。序列 00 城市道路场景的建图效果如下序列 01 是高速公路场景弯道与护栏等线性结构对 SLAM 的鲁棒性要求更高MULLS 同样有对应的参数配置 提示跑数据量较大的序列时若嫌查看器卡顿可把脚本里的--real_time_viewer_on1改为0关闭可视化只保留后台计算。地图与轨迹输出在哪里运行结束后结果全部输出到数据目录下的result文件夹主要文件包括文件内容pose_l_lo_xxx.txt/pose_b_lo_xxx.txt激光坐标系 / 车体坐标系下的估计位姿Rt_lo_xxx.txt相邻帧相对变换激光里程计轨迹traj_l_lo_xxx.pcd/traj_l_gt.pcd估计轨迹与真值轨迹的点云形式map_point_clouds/拼接生成的三维点云地图timing_table_xxx.txt每帧耗时统计表如果你的数据目录还放了00.txt真值轨迹与calib.txt标定文件脚本会自动参与评估对比。精度评估与调参提示 快速评估项目提供了 KITTI 官方评估脚本 python/kitti_eval.py在 script/run_mulls_slam.sh 末尾取消对应注释即可运行输出 RMSE、平均耗时等指标也可以使用 evo 工具做轨迹可视化对比。开启回环检测想让后端回环检测 位姿图优化生效在参数文件中把--loop_closure_detection_on改为true。下面是 MULLS 在 KITTI 上的性能对比mc表示多约束优化变体供参考调参入口不同场景的参数文件集中在 script/config/ 目录例如lo_gflag_list_kitti_urban.txt中可调距离滤波范围、地面网格大小、特征点数量、收敛阈值、回环搜索半径等。新手建议先跑通默认参数再逐项微调观察精度变化。常见问题与避坑指南 编译报 HDF5 找不到若本机装有 Anaconda易找到错误的 HDF5可在 CMakeLists.txt 中把BUILD_WITH_HDF5关掉重编修改 CMake 选项后编译失败删除build文件夹后重新执行编译流程没有真值文件能跑吗可以00.txt与calib.txt都是可选项去掉后仅影响评估环节想用自己的数据只需把点云按顺序命名可用 script/tools/batch_rename.sh 批量重命名在脚本里指定project_folder与pc_format即可目录结构可以非常简单。总结 ✅到这里你已经完成了 MULLS-SLAM 的完整闭环编译 → 示例体验 → KITTI 实战 → 地图与轨迹输出 → 精度评估。三步流程的核心其实只有两个脚本run_mulls_slam.sh与run_mulls_reg.sh加一个参数文件切换非常适合新手作为 LiDAR SLAM 的入门起点。想动手尝试的话先克隆仓库到本地git clone https://gitcode.com/gh_mirrors/mu/MULLS然后从第 1 步开始跑通属于你的第一条 SLAM 轨迹吧【免费下载链接】MULLS MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square [ICRA 21]项目地址: https://gitcode.com/gh_mirrors/mu/MULLS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考