保姆级教程:在Ubuntu 18.04 + ROS Melodic上,用LeGO-LOAM跑通KITTI和速腾RS-16数据集

张开发
2026/4/18 7:35:22 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 18.04 + ROS Melodic上,用LeGO-LOAM跑通KITTI和速腾RS-16数据集
保姆级教程Ubuntu 18.04 ROS Melodic环境下的LeGO-LOAM全流程实战在自动驾驶和机器人领域激光雷达SLAM技术扮演着至关重要的角色。LeGO-LOAM作为轻量级地面优化激光里程计与建图算法因其高效性和适应性广受研究者青睐。本文将带你从零开始在Ubuntu 18.04系统中配置ROS Melodic环境并完整实现LeGO-LOAM在KITTI数据集和速腾RS-16激光雷达数据上的运行。1. 环境准备与依赖安装1.1 系统基础配置开始前请确保你的系统满足以下条件Ubuntu 18.04 LTS推荐纯净安装至少4GB内存处理KITTI数据集建议8GB以上50GB可用磁盘空间首先更新系统软件包sudo apt update sudo apt upgrade -y1.2 ROS Melodic安装ROS是机器人开发的基石Melodic是Ubuntu 18.04的官方支持版本。执行以下命令安装完整版ROSsudo 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 sudo apt update sudo apt install ros-melodic-desktop-full -y安装完成后初始化rosdep并设置环境变量sudo rosdep init rosdep update echo source /opt/ros/melodic/setup.bash ~/.bashrc source ~/.bashrc1.3 GTSAM依赖安装LeGO-LOAM依赖GTSAM库进行位姿优化推荐安装4.0.0-alpha2版本wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip cd ~/Downloads/ unzip gtsam.zip -d ~/Downloads/ cd ~/Downloads/gtsam-4.0.0-alpha2/ mkdir build cd build cmake .. sudo make install注意编译GTSAM时若出现内存不足可尝试减少并行编译线程数make -j22. LeGO-LOAM工程配置与编译2.1 创建工作空间ROS开发通常使用catkin工作空间管理项目mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace2.2 下载与编译LeGO-LOAM克隆官方仓库并编译cd ~/catkin_ws/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git cd ~/catkin_ws catkin_make -j1关键提示首次编译务必使用-j1参数避免并行编译错误后续修改后可尝试增加线程数2.3 环境验证编译成功后测试环境是否正常source ~/catkin_ws/devel/setup.bash roslaunch lego_loam run.launch若看到Waiting for data...提示说明系统已准备就绪。3. KITTI数据集运行实战3.1 数据准备与格式转换KITTI数据集使用Velodyne HDL-64E激光雷达需转换为ROS bag格式下载原始KITTI数据集如2011_09_30_drive_0027使用kitti2bag工具转换pip install kitti2bag kitti2bag -t 2011_09_30 -r 0027 raw_synced3.2 参数配置调整修改~/catkin_ws/src/LeGO-LOAM/LeGO-LOAM/include/utility.h关键参数// KITTI配置 extern const string pointCloudTopic /kitti/velo/pointcloud; extern const string imuTopic /kitti/oxts/imu; extern const bool useCloudRing true; // Velodyne雷达需启用ring通道重新编译工程cd ~/catkin_ws catkin_make3.3 运行与结果可视化启动LeGO-LOAM并播放数据roslaunch lego_loam run.launch rosbag play kitti_2011_09_30_drive_0027_synced.bag --clock在RViz中添加/laser_cloud_surround话题可查看建图效果。4. 速腾RS-16雷达数据处理4.1 硬件配置与数据采集速腾RS-16是16线机械式激光雷达配置时需注意安装官方驱动cd ~/catkin_ws/src git clone https://github.com/RoboSense-LiDAR/ros_rslidar.git cd .. catkin_make启动雷达节点roslaunch rslidar_pointcloud rs_lidar_16.launch录制数据包rosbag record /rslidar_points /imu -O rs16_data.bag4.2 参数适配与优化针对RS-16修改utility.h// 速腾RS-16配置 extern const string pointCloudTopic /rslidar_points; extern const string imuTopic /imu; extern const bool useCloudRing false; // 速腾雷达不使用ring通道 // 角度参数调整根据雷达规格 extern const float ang_res_x 0.2; // 水平角分辨率(度) extern const float ang_res_y 2.0; // 垂直角分辨率(度) extern const float ang_bottom 15.0; // 底部角度(度)4.3 常见问题排查问题1点云显示异常检查useCloudRing设置是否正确确认雷达驱动发布的点云包含强度信息问题2IMU数据不同步检查时间同步rosbag play --clock参数确认IMU话题与配置一致问题3建图漂移严重尝试降低loopClosureFrequency参数值检查IMU数据质量必要时进行标定5. 多数据集对比与性能优化5.1 参数对比表参数项KITTI (Velodyne)速腾RS-16备注useCloudRingtruefalse通道使用差异ang_res_y自动计算2.0RS-16垂直分辨率固定pointCloudTopic/kitti/velo/pointcloud/rslidar_points话题名称配置imuTopic/kitti/oxts/imu/imuIMU数据源差异5.2 性能优化技巧编译优化catkin_make -DCMAKE_BUILD_TYPERelease实时性调整在run.launch中增加参数param namemapping_skip_frame typeint value2 /内存管理定期清理点云缓存rosclean purge -y5.3 效果评估指标使用evo工具评估轨迹精度pip install evo --upgrade --no-binary evo evo_ape kitti ground_truth.txt estimated.txt -va --plot实际项目中我们发现RS-16在室内场景的建图精度可达±5cm而KITTI数据在开阔道路环境下表现更稳定。

更多文章