1. 环境准备与ROS安装在Ubuntu 20.04上部署Lego-LOAM的第一步是搭建基础开发环境。我强烈建议使用纯净系统开始避免已有软件包造成冲突。实测发现ROS Noetic专为Ubuntu 20.04设计的版本与Lego-LOAM的兼容性最佳。安装过程可能会遇到网络问题这时候更换软件源往往能解决90%的下载失败情况。执行以下命令更换国内镜像源以阿里云为例sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list接着安装ROS Noetic桌面完整版这个版本包含所有必要工具如RViz和Gazebosudo sh -c echo deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install ros-noetic-desktop-full安装完成后需要初始化rosdep这里有个坑点国内直接运行sudo rosdep init可能会超时。可以先修改hosts文件echo 199.232.28.133 raw.githubusercontent.com | sudo tee -a /etc/hosts rosdep update最后别忘了配置环境变量否则每次打开终端都要重新sourceecho source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc2. 关键依赖GTSAM编译Lego-LOAM依赖GTSAM库进行位姿优化但官方仓库的版本可能存在兼容性问题。经过多次测试我发现4.0.0-alpha2版本最稳定。编译过程需要约15分钟建议在性能较好的机器上操作。首先下载指定版本源码wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip unzip ~/Downloads/gtsam.zip -d ~/Downloads/编译安装时需要特别注意CMake参数配置。我建议开启SSE优化以获得更好性能cd ~/Downloads/gtsam-4.0.0-alpha2 mkdir build cd build cmake -DGTSAM_BUILD_WITH_MARCH_NATIVEON .. make -j$(nproc) sudo make install如果遇到Could NOT find Boost错误需要先安装开发版本sudo apt install libboost-all-dev3. Lego-LOAM源码适配与编译直接从GitHub克隆源码可能会遇到PCL1.10的兼容性问题。这里分享几个关键修改点都是我踩过坑后总结的经验。首先创建工作空间并克隆代码mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git必须修改的三处关键点PCL头文件兼容性修改否则会报Eigen索引错误sudo sed -i s/for (Eigen::Index ni 0/for (int ni 0/g /usr/include/pcl-1.10/pcl/filters/voxel_grid.hCMakeLists.txt需要添加C14支持和完整Boost组件set(CMAKE_CXX_FLAGS -stdc14) find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono system filesystem)OpenCV头文件路径更新新版本已变更目录结构// 修改utility.h中的 #include opencv2/imgproc.hpp编译时建议先单线程运行便于定位错误cd ~/catkin_ws catkin_make -j14. 数据集准备与运行调试Lego-LOAM支持KITTI等标准数据集但需要转换为ROS bag格式。我测试过最稳定的是Velodyne HDL-64E数据运行前需要检查话题名称匹配。准备数据集的建议步骤创建专用文件夹存放数据集mkdir -p ~/dataset/loam cd ~/dataset/loam下载示例数据集如KITTI的2011_09_30_drive_0027使用kitti2bag工具转换格式运行时需要两个终端窗口 窗口1启动Lego-LOAM核心节点source ~/catkin_ws/devel/setup.bash roslaunch lego_loam run.launch窗口2播放数据集注意时钟同步参数rosbag play *.bag --clock --topic /velodyne_points /imu/data常见问题排查如果显示No messages received检查launch文件中的话题名称点云显示异常可能是PCL版本问题尝试重新编译轨迹漂移严重时调整config中的ICP参数5. 进阶调优与可视化技巧要让Lego-LOAM达到最佳性能还需要进行参数调优。根据我的经验以下几个参数对建图质量影响最大关键帧选择阈值在utility.h中const float scanPeriod 0.1; // 扫描周期 const int systemDelay 20; // 初始延迟帧数点云降采样参数在run.launch中param namevoxel_leaf_size value0.2/ !-- 值越大处理越快但精度越低 --闭环检测灵敏度在mapOptmization.cpp中loopClosureFrequency 1; // 检测频率(Hz)可视化建议在RViz中添加/laser_cloud_surround话题查看全局地图使用tf视图观察坐标系变换关系对于性能分析可以rostopic hz /integrated_to_init我在实际使用中发现将scanPeriod从默认0.1调整到0.15能显著降低CPU占用同时保持不错的精度。对于室内场景建议将voxel_leaf_size减小到0.1以获得更清晰的墙面特征。
Ubuntu20.04部署Lego-LOAM:从依赖配置到点云建图实战
发布时间:2026/5/20 21:08:39
1. 环境准备与ROS安装在Ubuntu 20.04上部署Lego-LOAM的第一步是搭建基础开发环境。我强烈建议使用纯净系统开始避免已有软件包造成冲突。实测发现ROS Noetic专为Ubuntu 20.04设计的版本与Lego-LOAM的兼容性最佳。安装过程可能会遇到网络问题这时候更换软件源往往能解决90%的下载失败情况。执行以下命令更换国内镜像源以阿里云为例sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list接着安装ROS Noetic桌面完整版这个版本包含所有必要工具如RViz和Gazebosudo sh -c echo deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install ros-noetic-desktop-full安装完成后需要初始化rosdep这里有个坑点国内直接运行sudo rosdep init可能会超时。可以先修改hosts文件echo 199.232.28.133 raw.githubusercontent.com | sudo tee -a /etc/hosts rosdep update最后别忘了配置环境变量否则每次打开终端都要重新sourceecho source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc2. 关键依赖GTSAM编译Lego-LOAM依赖GTSAM库进行位姿优化但官方仓库的版本可能存在兼容性问题。经过多次测试我发现4.0.0-alpha2版本最稳定。编译过程需要约15分钟建议在性能较好的机器上操作。首先下载指定版本源码wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip unzip ~/Downloads/gtsam.zip -d ~/Downloads/编译安装时需要特别注意CMake参数配置。我建议开启SSE优化以获得更好性能cd ~/Downloads/gtsam-4.0.0-alpha2 mkdir build cd build cmake -DGTSAM_BUILD_WITH_MARCH_NATIVEON .. make -j$(nproc) sudo make install如果遇到Could NOT find Boost错误需要先安装开发版本sudo apt install libboost-all-dev3. Lego-LOAM源码适配与编译直接从GitHub克隆源码可能会遇到PCL1.10的兼容性问题。这里分享几个关键修改点都是我踩过坑后总结的经验。首先创建工作空间并克隆代码mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git必须修改的三处关键点PCL头文件兼容性修改否则会报Eigen索引错误sudo sed -i s/for (Eigen::Index ni 0/for (int ni 0/g /usr/include/pcl-1.10/pcl/filters/voxel_grid.hCMakeLists.txt需要添加C14支持和完整Boost组件set(CMAKE_CXX_FLAGS -stdc14) find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono system filesystem)OpenCV头文件路径更新新版本已变更目录结构// 修改utility.h中的 #include opencv2/imgproc.hpp编译时建议先单线程运行便于定位错误cd ~/catkin_ws catkin_make -j14. 数据集准备与运行调试Lego-LOAM支持KITTI等标准数据集但需要转换为ROS bag格式。我测试过最稳定的是Velodyne HDL-64E数据运行前需要检查话题名称匹配。准备数据集的建议步骤创建专用文件夹存放数据集mkdir -p ~/dataset/loam cd ~/dataset/loam下载示例数据集如KITTI的2011_09_30_drive_0027使用kitti2bag工具转换格式运行时需要两个终端窗口 窗口1启动Lego-LOAM核心节点source ~/catkin_ws/devel/setup.bash roslaunch lego_loam run.launch窗口2播放数据集注意时钟同步参数rosbag play *.bag --clock --topic /velodyne_points /imu/data常见问题排查如果显示No messages received检查launch文件中的话题名称点云显示异常可能是PCL版本问题尝试重新编译轨迹漂移严重时调整config中的ICP参数5. 进阶调优与可视化技巧要让Lego-LOAM达到最佳性能还需要进行参数调优。根据我的经验以下几个参数对建图质量影响最大关键帧选择阈值在utility.h中const float scanPeriod 0.1; // 扫描周期 const int systemDelay 20; // 初始延迟帧数点云降采样参数在run.launch中param namevoxel_leaf_size value0.2/ !-- 值越大处理越快但精度越低 --闭环检测灵敏度在mapOptmization.cpp中loopClosureFrequency 1; // 检测频率(Hz)可视化建议在RViz中添加/laser_cloud_surround话题查看全局地图使用tf视图观察坐标系变换关系对于性能分析可以rostopic hz /integrated_to_init我在实际使用中发现将scanPeriod从默认0.1调整到0.15能显著降低CPU占用同时保持不错的精度。对于室内场景建议将voxel_leaf_size减小到0.1以获得更清晰的墙面特征。