从零到一:Ubuntu 18.04 + ROS Melodic环境下的LIO-SAM实战部署手册
当第一次接触激光SLAM时,那种看到点云地图逐渐成型的兴奋感至今难忘。LIO-SAM作为当前最先进的激光惯性里程计框架之一,其性能与实时性在各类移动平台上都得到了验证。但对于刚入门的新手来说,从环境配置到成功运行往往充满挑战。本文将带你一步步完成整个部署过程,避开那些令人头疼的"坑"。
1. 环境准备:打好基础才能走得更远
在开始之前,我们需要确保系统环境满足LIO-SAM的基本要求。我推荐使用纯净的Ubuntu 18.04系统,这样可以避免很多因版本冲突导致的问题。
1.1 系统与ROS基础安装
首先更新系统软件包:
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 sudo apt update sudo apt install ros-melodic-desktop-full安装完成后,别忘了初始化rosdep:
sudo rosdep init rosdep update1.2 必要依赖项安装
LIO-SAM需要一些额外的ROS功能包支持:
sudo apt install -y \ ros-melodic-navigation \ ros-melodic-robot-localization \ ros-melodic-robot-state-publisher \ ros-melodic-tf2-sensor-msgs常见问题:如果在安装过程中遇到"无法定位软件包"的错误,请先确保你的软件源配置正确,并已添加ROS官方源。
2. GTSAM编译:性能优化的关键一步
GTSAM是LIO-SAM的核心依赖之一,正确的编译选项直接影响系统性能。我强烈建议从源码编译而不是使用预编译版本,这样可以针对你的硬件进行优化。
2.1 下载与编译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 -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ -DGTSAM_USE_SYSTEM_EIGEN=ON \ -DGTSAM_BUILD_TESTS=OFF \ -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF ..各参数含义:
DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF:禁用特定CPU指令集优化,避免兼容性问题DGTSAM_USE_SYSTEM_EIGEN=ON:使用系统Eigen库而非内置版本- 后两个参数用于减少编译时间
编译并安装:
make -j$(nproc) sudo make install2.2 验证安装
安装完成后,可以通过以下命令验证:
pkg-config --modversion gtsam应该输出4.0.0-alpha2版本号。
3. LIO-SAM源码部署与编译
现在我们可以开始部署LIO-SAM本体了。建议在工作空间的src目录下进行操作。
3.1 创建工作空间与下载源码
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/TixiaoShan/LIO-SAM.git3.2 解决依赖关系
在编译前,确保所有依赖都已安装:
cd ~/catkin_ws rosdep install --from-paths src --ignore-src -y3.3 编译与常见错误处理
开始编译:
catkin_make -j$(nproc)可能遇到的错误及解决方案:
Eigen相关错误:
fatal error: Eigen/Core: No such file or directory解决方法:
sudo apt install libeigen3-dev sudo ln -s /usr/include/eigen3/Eigen /usr/include/EigenPCL版本冲突:
undefined reference to `pcl::PCLBase::setInputCloud...解决方法:确保PCL版本一致,可能需要重新安装:
sudo apt install libpcl-devGTSAM未找到: 如果编译时提示找不到GTSAM,尝试设置环境变量:
export GTSAM_DIR=/usr/local/lib/cmake/GTSAM
4. 参数配置与系统调优
成功编译只是第一步,合理的参数配置才能发挥LIO-SAM的最佳性能。
4.1 传感器参数配置
编辑params.yaml文件,主要关注以下参数:
pointCloudTopic: "points_raw" # 必须与你的激光雷达发布话题一致 imuTopic: "/imu_correct" # IMU话题名称 odomTopic: "odometry/imu" # IMU预积分输出话题 gpsTopic: "odometry/gpsz" # GPS话题(可选) sensor: velodyne # 雷达类型:velodyne或ouster N_SCAN: 16 # 雷达通道数(16/32/64等) Horizon_SCAN: 1800 # 水平分辨率(Velodyne通常为1800)4.2 外参标定
外参标定对系统精度至关重要:
extrinsicTrans: [0.0, 0.0, 0.0] # 平移向量[x,y,z] extrinsicRot: [1, 0, 0, 0, 1, 0, 0, 0, 1] # 旋转矩阵 extrinsicRPY: [1, 0, 0, 0, 1, 0, 0, 0, 1] # 欧拉角提示:如果不知道精确外参,可以使用标定工具如lidar_align进行标定。
4.3 性能优化参数
downsampleRate: 1 # 降采样率,点数过多时可增大 lidarMinRange: 1.0 # 最小有效距离 lidarMaxRange: 100.0 # 最大有效距离(根据环境调整)5. 运行与结果可视化
一切就绪后,就可以启动系统了。
5.1 启动LIO-SAM
roslaunch lio_sam run.launch5.2 Rviz配置
建议使用LIO-SAM自带的rviz配置:
rosrun rviz rviz -d `rospack find lio_sam`/rviz/lio_sam.rviz在Rviz中你应该能看到:
- 绿色点:角点特征
- 粉色点:平面特征
- 黑色轨迹:估计的机器人路径
5.3 数据回放与调试
如果使用已有数据集,可以通过rosbag回放:
rosbag play --clock your_bag.bag调试技巧:
- 使用
rostopic list确认所有话题都已正确发布 - 使用
rviz的TF显示检查坐标系是否正确 - 查看终端输出中的警告和错误信息
6. 常见问题深度解析
在实际部署中,我遇到过各种奇怪的问题,这里分享几个典型案例。
6.1 点云不显示问题
现象:Rviz中看不到任何点云。
排查步骤:
- 检查
rostopic echo /lio_sam/feature/cloud_map是否有数据 - 确认
params.yaml中的话题名称与实际发布一致 - 检查雷达驱动是否正常运行
6.2 IMU数据异常处理
现象:轨迹漂移严重或系统崩溃。
解决方案:
- 检查IMU数据的坐标系定义
- 确保IMU频率足够高(建议≥100Hz)
- 在
params.yaml中调整IMU噪声参数
6.3 性能优化技巧
对于资源有限的设备,可以尝试:
- 增大
downsampleRate减少处理点数 - 调整
keyframePerSecond降低关键帧频率 - 关闭不必要的功能如GPS和回环检测
7. 进阶应用与扩展
成功运行基础版本后,你可能想进一步定制系统。
7.1 多传感器融合
LIO-SAM框架支持灵活添加其他传感器:
- GPS:在开阔区域提高全局一致性
- 视觉:增加特征丰富性
- 轮式里程计:提供额外约束
7.2 自定义特征提取
可以修改featureExtraction.cpp实现:
- 不同的特征选择策略
- 自适应阈值算法
- 特定场景优化
7.3 部署到实际机器人
在实际机器人上部署时注意:
- 传感器时间同步
- 运动畸变补偿
- 实时性保证
经过这些步骤,你应该已经成功在Ubuntu 18.04和ROS Melodic环境下部署了LIO-SAM系统。记住,每个硬件环境和应用场景都有其独特性,可能需要针对性的调整和优化。