保姆级教程在Ubuntu 20.04上搞定浙大lidar_IMU_calib从编译到避坑当激光雷达LiDAR和惯性测量单元IMU需要协同工作时标定这两个传感器之间的外参是必不可少的步骤。浙大开源项目lidar_IMU_calib提供了一种无需特定标定目标的解决方案特别适合实际应用场景。本文将带你从零开始在Ubuntu 20.04系统上完成整个标定流程包括环境准备、源码编译、常见问题解决以及实际标定操作。1. 环境准备与依赖安装在开始之前确保你的Ubuntu 20.04系统已经安装了ROS Noetic。如果没有安装可以通过以下命令完成基础环境配置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 install curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt update sudo apt install ros-noetic-desktop-full echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc接下来安装必要的依赖项sudo apt-get install -y git cmake libeigen3-dev libboost-all-dev libpcl-dev python3-catkin-tools特别需要注意的是Pangolin库的安装可能会遇到问题。建议从源码编译安装最新版本git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake .. make -j$(nproc) sudo make install2. 项目编译与配置创建工作空间并获取源码mkdir -p ~/catkin_li_calib/src cd ~/catkin_li_calib/src catkin_init_workspace git clone https://github.com/APRIL-ZJU/lidar_IMU_calib安装子模块依赖wstool init wstool merge lidar_IMU_calib/depend_pack.rosinstall wstool update cd lidar_imu_calib ./build_submodules.sh在编译主项目前需要对CMakeLists.txt做一些调整注释掉PANGOLIN_DIR的指定路径确保Eigen3和Boost被正确找到检查PCL版本是否为1.10修改完成后进行编译cd ../.. catkin_make -DCMAKE_BUILD_TYPERelease source ./devel/setup.bash提示如果遇到Python相关错误可能是因为系统默认Python版本与项目要求不符。可以通过修改CMakeLists.txt中的Python相关配置来解决。3. 雷达型号适配与源码修改原项目默认支持Velodyne VLP-16雷达如果你的设备是其他型号如RS-Helios5515需要进行以下修改在include/utils/vlp_common.h中添加新雷达的配置参数更新dataset_reader.h中的雷达类型枚举修改src/ui/calib_helper.cpp中的相关处理逻辑主要修改内容包括雷达的水平/垂直角度分辨率扫描线数量有效距离范围点云话题名称修改完成后需要重新编译项目catkin_make4. 数据采集与准备高质量的数据采集是成功标定的关键。以下是一些实用建议环境选择室内空间至少5×5米有丰富几何特征如墙角、家具等运动模式包含各个轴向的旋转运动线性运动速度控制在0.5-1m/s避免剧烈震动和急停持续时间建议采集3-5分钟数据录制数据包的命令rosbag record -O calibration_data.bag /imu/data /lidar_points注意确保IMU和LiDAR的时间同步问题。如果设备支持硬件同步最好否则需要在后期处理中进行时间对齐。5. 标定执行与参数调整准备好启动文件licalib_gui.launch主要参数配置如下arg nametopic_imu default/imu/data / arg namepath_bag default$(find li_calib)/data/calibration_data.bag / arg namebag_start default0 / arg namebag_durr default300 / arg namescan4map default15 / arg namelidar_model defaultRS_Helios5515 / arg namendtResolution default0.5 /启动标定程序roslaunch li_calib licalib_gui.launch常见问题及解决方案优化迭代卡在0次修改thirdparty/Kontiki/kontiki/sensors/constant_bias_imu.h在LockGyroscopeBias和LockAccelerometerBias函数中添加return truePangolin相关错误检查LD_LIBRARY_PATH是否包含Pangolin库路径确认系统Python版本与链接库一致点云显示异常检查雷达型号配置是否正确确认点云话题名称匹配6. 结果验证与应用标定完成后程序会输出以下关键参数P_LinILiDAR在IMU坐标系下的平移向量euler_LtoILiDAR到IMU的欧拉角可转换为旋转矩阵验证标定质量的实用方法重投影误差检查观察优化过程中误差的收敛情况运动一致性测试比较IMU积分轨迹与LiDAR定位结果闭环检测在相同起点和终点检查位姿一致性将标定结果应用到你的SLAM系统时记得考虑以下因素时间同步补偿传感器噪声特性温度变化对IMU偏置的影响7. 高级技巧与性能优化对于追求更高标定精度的用户可以考虑以下进阶方法多段数据联合标定采集不同运动模式的数据集使用加权优化方法合并结果在线标定策略实现标定参数的实时微调结合SLAM系统进行联合优化自动参数调优使用网格搜索法优化NDT分辨率自适应调整优化权重性能优化建议# 在启动时添加性能优化参数 roslaunch li_calib licalib_gui.launch ndtResolution:0.3 scan4map:20关键参数对性能的影响参数推荐值影响ndtResolution0.3-0.5值越小精度越高但计算量越大scan4map15-30控制用于建图的扫描次数bag_durr120-300标定使用的数据时长(秒)8. 实际项目中的经验分享在多次实际标定过程中我发现以下几个要点特别值得注意IMU预热至少让IMU工作10分钟后再开始采集数据确保偏置稳定环境多样性在多个不同环境中采集数据可以提高标定鲁棒性运动充分性包含丰富的旋转运动对估计旋转外参特别重要数据分段将长时间数据分成几段分别标定检查结果一致性一个典型的工作流程早晨开始工作时先启动IMU预热在不同环境中采集3组数据各5分钟分别进行标定并比较结果取中值或加权平均作为最终标定参数在实际应用中持续监控标定质量对于时间敏感的应用可以考虑以下优化# 快速标定模式精度稍低但速度快 roslaunch li_calib licalib_gui.launch ndtResolution:1.0 scan4map:10 bag_durr:120
保姆级教程:在Ubuntu 20.04上搞定浙大lidar_IMU_calib(从编译到避坑)
发布时间:2026/5/24 16:41:54
保姆级教程在Ubuntu 20.04上搞定浙大lidar_IMU_calib从编译到避坑当激光雷达LiDAR和惯性测量单元IMU需要协同工作时标定这两个传感器之间的外参是必不可少的步骤。浙大开源项目lidar_IMU_calib提供了一种无需特定标定目标的解决方案特别适合实际应用场景。本文将带你从零开始在Ubuntu 20.04系统上完成整个标定流程包括环境准备、源码编译、常见问题解决以及实际标定操作。1. 环境准备与依赖安装在开始之前确保你的Ubuntu 20.04系统已经安装了ROS Noetic。如果没有安装可以通过以下命令完成基础环境配置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 install curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt update sudo apt install ros-noetic-desktop-full echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc接下来安装必要的依赖项sudo apt-get install -y git cmake libeigen3-dev libboost-all-dev libpcl-dev python3-catkin-tools特别需要注意的是Pangolin库的安装可能会遇到问题。建议从源码编译安装最新版本git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake .. make -j$(nproc) sudo make install2. 项目编译与配置创建工作空间并获取源码mkdir -p ~/catkin_li_calib/src cd ~/catkin_li_calib/src catkin_init_workspace git clone https://github.com/APRIL-ZJU/lidar_IMU_calib安装子模块依赖wstool init wstool merge lidar_IMU_calib/depend_pack.rosinstall wstool update cd lidar_imu_calib ./build_submodules.sh在编译主项目前需要对CMakeLists.txt做一些调整注释掉PANGOLIN_DIR的指定路径确保Eigen3和Boost被正确找到检查PCL版本是否为1.10修改完成后进行编译cd ../.. catkin_make -DCMAKE_BUILD_TYPERelease source ./devel/setup.bash提示如果遇到Python相关错误可能是因为系统默认Python版本与项目要求不符。可以通过修改CMakeLists.txt中的Python相关配置来解决。3. 雷达型号适配与源码修改原项目默认支持Velodyne VLP-16雷达如果你的设备是其他型号如RS-Helios5515需要进行以下修改在include/utils/vlp_common.h中添加新雷达的配置参数更新dataset_reader.h中的雷达类型枚举修改src/ui/calib_helper.cpp中的相关处理逻辑主要修改内容包括雷达的水平/垂直角度分辨率扫描线数量有效距离范围点云话题名称修改完成后需要重新编译项目catkin_make4. 数据采集与准备高质量的数据采集是成功标定的关键。以下是一些实用建议环境选择室内空间至少5×5米有丰富几何特征如墙角、家具等运动模式包含各个轴向的旋转运动线性运动速度控制在0.5-1m/s避免剧烈震动和急停持续时间建议采集3-5分钟数据录制数据包的命令rosbag record -O calibration_data.bag /imu/data /lidar_points注意确保IMU和LiDAR的时间同步问题。如果设备支持硬件同步最好否则需要在后期处理中进行时间对齐。5. 标定执行与参数调整准备好启动文件licalib_gui.launch主要参数配置如下arg nametopic_imu default/imu/data / arg namepath_bag default$(find li_calib)/data/calibration_data.bag / arg namebag_start default0 / arg namebag_durr default300 / arg namescan4map default15 / arg namelidar_model defaultRS_Helios5515 / arg namendtResolution default0.5 /启动标定程序roslaunch li_calib licalib_gui.launch常见问题及解决方案优化迭代卡在0次修改thirdparty/Kontiki/kontiki/sensors/constant_bias_imu.h在LockGyroscopeBias和LockAccelerometerBias函数中添加return truePangolin相关错误检查LD_LIBRARY_PATH是否包含Pangolin库路径确认系统Python版本与链接库一致点云显示异常检查雷达型号配置是否正确确认点云话题名称匹配6. 结果验证与应用标定完成后程序会输出以下关键参数P_LinILiDAR在IMU坐标系下的平移向量euler_LtoILiDAR到IMU的欧拉角可转换为旋转矩阵验证标定质量的实用方法重投影误差检查观察优化过程中误差的收敛情况运动一致性测试比较IMU积分轨迹与LiDAR定位结果闭环检测在相同起点和终点检查位姿一致性将标定结果应用到你的SLAM系统时记得考虑以下因素时间同步补偿传感器噪声特性温度变化对IMU偏置的影响7. 高级技巧与性能优化对于追求更高标定精度的用户可以考虑以下进阶方法多段数据联合标定采集不同运动模式的数据集使用加权优化方法合并结果在线标定策略实现标定参数的实时微调结合SLAM系统进行联合优化自动参数调优使用网格搜索法优化NDT分辨率自适应调整优化权重性能优化建议# 在启动时添加性能优化参数 roslaunch li_calib licalib_gui.launch ndtResolution:0.3 scan4map:20关键参数对性能的影响参数推荐值影响ndtResolution0.3-0.5值越小精度越高但计算量越大scan4map15-30控制用于建图的扫描次数bag_durr120-300标定使用的数据时长(秒)8. 实际项目中的经验分享在多次实际标定过程中我发现以下几个要点特别值得注意IMU预热至少让IMU工作10分钟后再开始采集数据确保偏置稳定环境多样性在多个不同环境中采集数据可以提高标定鲁棒性运动充分性包含丰富的旋转运动对估计旋转外参特别重要数据分段将长时间数据分成几段分别标定检查结果一致性一个典型的工作流程早晨开始工作时先启动IMU预热在不同环境中采集3组数据各5分钟分别进行标定并比较结果取中值或加权平均作为最终标定参数在实际应用中持续监控标定质量对于时间敏感的应用可以考虑以下优化# 快速标定模式精度稍低但速度快 roslaunch li_calib licalib_gui.launch ndtResolution:1.0 scan4map:10 bag_durr:120