保姆级教程:在Ubuntu 18.04上从零搭建LeGO-LOAM,搞定KITTI和速腾RS-16数据

张开发
2026/4/17 18:10:18 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 18.04上从零搭建LeGO-LOAM,搞定KITTI和速腾RS-16数据
从零搭建LeGO-LOAMUbuntu 18.04实战指南与多雷达适配技巧第一次接触SLAM算法时我被LeGO-LOAM的轻量级特性所吸引——它能在普通笔记本电脑上实时处理16线激光雷达数据这对学生和预算有限的开发者来说简直是福音。但真正尝试在Ubuntu 18.04上部署时才发现从环境配置到不同雷达适配的每个环节都暗藏玄机。本文将带你完整走通这条路径特别针对速腾RS-16这类国产雷达的适配痛点提供经过实战检验的解决方案。1. 环境准备ROS Melodic与GTSAM的精准部署在Ubuntu 18.04上搭建LeGO-LOAM首要任务是构建稳定的基础环境。ROS Melodic作为官方推荐的版本其软件源在国内的访问速度直接影响安装效率。建议先更换为国内镜像源sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update sudo apt upgrade -y接下来是ROS Melodic的核心安装步骤设置软件源sudo sh -c echo deb http://packages.ros.org/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完整安装桌面版ROSsudo apt install ros-melodic-desktop-full echo source /opt/ros/melodic/setup.bash ~/.bashrc source ~/.bashrc安装构建工具sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential sudo rosdep init rosdep updateGTSAM 4.0.0-alpha2的编译需要特别注意CMake参数。以下是优化后的编译流程wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip unzip ~/Downloads/gtsam.zip -d ~/Downloads/ cd ~/Downloads/gtsam-4.0.0-alpha2/ mkdir build cd build cmake -DGTSAM_BUILD_WITH_MARCH_NATIVEOFF .. make -j$(nproc) sudo make install提示-DGTSAM_BUILD_WITH_MARCH_NATIVEOFF可避免在某些CPU架构上出现的指令集兼容性问题2. LeGO-LOAM源码编译与系统调优创建工作空间时建议单独为LeGO-LOAM建立隔离环境避免与其他ROS包产生依赖冲突mkdir -p ~/lego_loam_ws/src cd ~/lego_loam_ws/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git cd ..编译前需要检查系统资源分配。LeGO-LOAM对内存带宽敏感建议关闭不必要的图形界面CtrlAltF1进入终端模式调整swap空间当物理内存8GB时sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile编译时使用单线程模式更可靠catkin_make -j1常见编译错误解决方案错误类型可能原因解决方案Eigen3找不到路径配置错误sudo apt install libeigen3-devPCL版本冲突系统预装版本不匹配sudo apt install libpcl-dev1.8.1dfsg1-7ubuntu1boost报错符号链接缺失sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so /usr/lib/x86_64-linux-gnu/libboost_system-mt.so3. KITTI数据集适配实战KITTI数据集的点云格式与标准Velodyne有所不同需要修改utility.h中的关键参数// 文件位置~/lego_loam_ws/src/LeGO-LOAM/LeGO-LOAM/include/utility.h extern const string pointCloudTopic /kitti/velo/pointcloud; extern const string imuTopic /kitti/oxts/imu; extern const bool useCloudRing false; // KITTI数据不含ring信息运行前需要转换KITTI原始数据为ROS bag格式。推荐使用kitti2bag工具pip install kitti2bag kitti2bag -t 2011_09_30 -r 0018 raw_synced播放数据时注意时间同步问题roslaunch lego_loam run.launch rosbag play kitti_2011_09_30_drive_0018_synced.bag --clock --pause注意KITTI的IMU数据频率较低10Hz可能导致初始位姿估计不准确建议在开阔场景下初始化4. 速腾RS-16雷达的深度适配技巧速腾雷达的点云结构需要特别处理useCloudRing参数。以下是完整的配置流程驱动安装cd ~/lego_loam_ws/src git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git cd rslidar_sdk git submodule update --init cd ../.. catkin_make -DCATKIN_WHITELIST_PACKAGESrslidar_sdkutility.h关键配置extern const string pointCloudTopic /rslidar_points; extern const string imuTopic /imu/data; extern const bool useCloudRing false; // 速腾雷达使用自定义点类型启动参数优化 修改run.launch文件中的以下参数param nameminimumRange typedouble value1.0/ !-- 过滤近距离噪声 -- param namemapFilterSize typedouble value0.4/ !-- 适应RS-16的角分辨率 --实测中发现的性能优化技巧点云降采样在雷达驱动层添加体素滤波rosrun pcl_ros voxel_grid input:/rslidar_points output:/rslidar_points_downsampled leaf_size:0.1IMU对齐速腾雷达与IMU的物理安装需要标定rosrun tf static_transform_publisher 0 0 0 0 0 0 base_link imu_link 100针对RS-16的特别调试建议检查点云强度值范围必要时在featureAssociation.cpp中调整强度归一化参数在室内场景将edgeFeatureMinValidNum从10调整为5增强特征提取鲁棒性对于高速移动场景适当减小loopClosureFrequency以降低计算负载5. 实战问题排查与性能优化常见运行时错误速查表现象诊断方法解决方案点云不显示rostopic echo /rslidar_pointshead地图漂移rviz中查看IMU坐标系确认IMU数据与雷达时间同步程序崩溃dmesggrep -i kill性能优化参数对照参数文件关键参数推荐值作用utility.hlaserCloudWidth1600点云水平分辨率featureAssociation.cppedgeThreshold0.1边缘特征敏感度mapOptmization.cppsurroundingKeyframeSize50闭环检测范围内存优化技巧# 限制ROS节点内存使用 ulimit -Sv 4000000 # 设置为4GB roslaunch lego_loam run.launch对于长期运行的建图任务建议定期保存子地图// 在mapOptmization.cpp中添加 if (cloudKeyPoses3D-size() % 100 0) { pcl::io::savePCDFile(/tmp/submap_std::to_string(cloudKeyPoses3D-size()).pcd, *laserCloudSurroundDS); }6. 多场景测试与效果评估KITTI与RS-16数据对比测试测试项KITTI速腾RS-16点云密度64线16线最大测距120m150m水平FOV360°360°垂直FOV26.8°30°典型场景建图效果城市道路KITTI优势高线数雷达提供丰富立面细节挑战动态物体较多需后处理过滤室内走廊RS-16调整pointFilterNum为2以提高点云密度将imuHistorySize增至2000改善初始估计地下车库启用loopClosureEnableFlag增强闭环检测设置noiseFilter去除悬挂物反光点实测中发现在植被茂密的户外场景将edgeFeatureMinValidNum从默认值10降至5可显著增加可用特征点数量。而在结构化程度高的室内场景适当提高surfaceFeatureThreshold到0.05能获得更平整的墙面效果。

更多文章