保姆级教程:在Ubuntu 20.04上搞定浙大lidar_IMU_calib,并适配你的激光雷达(以RS-Helios 5515为例)

张开发
2026/4/12 18:19:21 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 20.04上搞定浙大lidar_IMU_calib,并适配你的激光雷达(以RS-Helios 5515为例)
保姆级教程在Ubuntu 20.04上搞定浙大lidar_IMU_calib并适配你的激光雷达以RS-Helios 5515为例当你第一次拿到一台RoboSense RS-Helios 5515激光雷达想要和IMU进行标定却发现官方开源包只支持VLP-16时那种手足无措的感觉我太熟悉了。本文将带你一步步解决这个痛点从环境配置到源码修改再到最终成功标定整个过程就像有个经验丰富的工程师在旁边手把手指导。1. 环境准备与依赖安装在开始之前确保你的Ubuntu 20.04系统已经安装了ROS Noetic。这个版本是官方推荐与Ubuntu 20.04搭配使用的ROS发行版。如果你还没有安装可以通过以下命令快速完成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-noetic-desktop-full接下来我们需要创建一个专门的工作空间来编译lidar_IMU_calibmkdir -p ~/catkin_li_calib/src cd ~/catkin_li_calib/src catkin_init_workspace常见问题很多人在这一步会遇到权限问题。如果你看到Permission denied错误记得在命令前加上sudo或者检查你的用户是否在dialout和tty组中。2. 源码获取与初步编译从GitHub克隆浙大的lidar_IMU_calib仓库git clone https://github.com/APRIL-ZJU/lidar_IMU_calib然后安装必要的依赖项。这里有个小技巧先安装ndt_omp它能显著提高后续编译的成功率wstool init wstool merge lidar_IMU_calib/depend_pack.rosinstall wstool update cd lidar_imu_calib ./build_submodules.sh cd ../.. catkin_make source ./devel/setup.bash提示如果编译过程中遇到PCL或C版本问题记得检查你的CMakeLists.txt文件确保它适配Ubuntu 20.04的PCL 1.10和C14标准。3. 适配RS-Helios 5515雷达这是最关键的步骤。原始代码只支持VLP-16我们需要手动添加RS-Helios 5515的支持。主要修改集中在三个文件include/utils/vlp_common.h- 定义雷达参数include/dataset_reader.h- 添加新雷达类型识别src/ui/calib_helper.cpp- 实现新雷达的具体处理逻辑RS-Helios 5515的关键参数参数名称值说明水平视场角360°全向扫描垂直视场角55° (-25°~30°)比VLP-16更广的垂直范围线数128线高密度点云水平角分辨率0.1°非常精细的水平分辨率测距精度±2cm高精度测距在vlp_common.h中添加如下代码// RS-Helios 5515 specific parameters constexpr int RS_HELIOS_5515_LINES 128; constexpr double RS_HELIOS_5515_VERTICAL_ANGLES[RS_HELIOS_5515_LINES] { -25.0, -24.8, -24.6, ..., 29.8, 30.0 // 实际需要填写完整128个角度值 }; constexpr double RS_HELIOS_5515_HORIZONTAL_RESOLUTION 0.1;4. 解决Ubuntu 20.04特有依赖问题Ubuntu 20.04的一个常见问题是Pangolin库与Python 3.7的链接问题。解决方法如下首先修改项目中的CMakeLists.txt注释掉原有的Pangolin路径设置# set(PANGOLIN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/build-pangolin) find_package(Pangolin REQUIRED)然后重新安装系统级的Pangolinsudo apt-get install libpangolin-dev最后确保系统能找到Pangolin库。编辑你的.bashrc文件添加export LD_LIBRARY_PATH/usr/local/lib:$LD_LIBRARY_PATH验证安装运行pango-plot命令如果能看到图形界面说明安装成功。5. 数据采集与标定技巧采集优质数据是成功标定的关键。根据我的经验以下几点特别重要环境选择中等大小的房间约5×5米效果最好太小会限制运动太大则点云特征不明显运动模式组合以下动作效果最佳绕Z轴旋转偏航绕X/Y轴倾斜俯仰/横滚8字形平移运动持续时间通常2-3分钟的数据足够但运动要充分在launch文件中设置正确的参数arg nametopic_imu default/imu/data / arg namepath_bag default$(find li_calib)/data/your_data.bag / arg namebag_start default1 / arg namebag_durr default120 / !-- 120秒 2分钟 -- arg namescan4map default15 / arg namelidar_model defaultRS_HELIOS_5515 / !-- 这是我们添加的新型号 --6. 运行标定与结果解读有两种方式启动标定使用calib.sh脚本需要先编辑脚本中的参数./src/lidar_IMU_calib/calib.sh直接运行launch文件推荐roslaunch li_calib licalib_gui.launch常见运行错误及解决方案找不到libpython3.7m.so.1.0不需要安装Python 3.7按照第4节的Pangolin配置方法解决优化迭代卡在0次 修改thirdparty/Kontiki/kontiki/sensors.const_bias_imu.h文件bool LockGyroscopeBias(bool lock) { gyro_bias_locked_ lock; return true; // 添加这行 } bool LockAccelerometerBias(bool lock) { acc_bias_locked_ lock; return true; // 添加这行 }标定完成后你会看到类似这样的结果P_LinI: [0.1, 0.05, -0.02] # Lidar在IMU坐标系下的平移(m) euler_LtoI: [-1.5, 0.8, 90.0] # Lidar到IMU的欧拉角(度)这些数值表示你的激光雷达相对于IMU的精确位置和姿态。在实际应用中将这些参数填入你的SLAM系统或传感器融合算法中就能获得更精确的定位结果。7. 进阶技巧与性能优化经过多次标定实验我总结出几个提升标定精度的技巧温度稳定性IMU对温度敏感建议在设备开机15分钟后再开始标定多数据集验证采集3-5组不同运动模式的数据比较标定结果的一致性NDT分辨率调整室内场景0.3-0.5米室外场景1.0-2.0米时间偏移校准如果发现点云和IMU数据有明显的时间不同步可以尝试调整time_offset_padding参数对于RS-Helios 5515这种高线数雷达你还可以尝试修改scan4map参数增加用于建图的扫描次数例如从默认的15增加到25这能提高特征匹配的鲁棒性但会稍微增加计算量。

更多文章