避坑指南:在Ubuntu 20.04上搞定浙大lidar_imu_calib(附Ceres 1.14安装)

张开发
2026/4/16 21:45:00 15 分钟阅读

分享文章

避坑指南:在Ubuntu 20.04上搞定浙大lidar_imu_calib(附Ceres 1.14安装)
避坑指南在Ubuntu 20.04上搞定浙大lidar_imu_calib附Ceres 1.14安装当你在Ubuntu 20.04上尝试部署浙大开源的lidar_imu_calib工具时可能会遇到各种依赖冲突和编译错误。官方推荐使用Ubuntu 18.04但现实中很多开发者已经升级到更新的系统版本。本文将带你一步步解决这些跨版本适配问题无需降级系统就能成功运行lidar_imu_calib。1. 环境准备与依赖安装在开始之前确保你的Ubuntu 20.04系统已经安装了ROS Noetic对应Ubuntu 20.04的ROS版本。如果你还在使用Melodic建议先升级到Noetic因为不同ROS版本间的依赖关系可能会导致更多问题。首先安装基础依赖sudo apt-get install ros-noetic-pcl-ros ros-noetic-velodyne-msgs接下来需要处理几个关键依赖项Pangolin用于3D可视化的轻量级库Ceres Solver 1.14非线性优化库的特定版本GLEWOpenGL扩展加载库安装这些依赖时Ubuntu 20.04的默认软件源可能不包含所需版本特别是Ceres Solver。我们需要手动编译安装。2. 手动编译安装Ceres Solver 1.14Ceres Solver 1.14是lidar_imu_calib的关键依赖但Ubuntu 20.04的软件源通常提供的是更新版本。以下是编译安装步骤# 安装依赖 sudo apt-get install libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev # 下载源码 wget https://github.com/ceres-solver/ceres-solver/archive/refs/tags/1.14.0.tar.gz tar zxf 1.14.0.tar.gz cd ceres-solver-1.14.0 # 编译安装 mkdir build cd build cmake .. make -j$(nproc) sudo make install安装完成后可以通过以下命令验证版本pkg-config --modversion ceres应该输出1.14.0。如果显示其他版本可能需要调整PKG_CONFIG_PATH环境变量。3. 解决常见依赖冲突3.1 LZ4头文件冲突在编译过程中你可能会遇到LZ4头文件冲突的错误conflicting declaration typedef struct LZ4_stream_t LZ4_stream_t解决方法如下sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h3.2 GLEW缺失问题另一个常见错误是找不到GLEW库Could NOT find GLEW安装以下依赖可以解决sudo apt-get install libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev g libzip-dev libpng-dev libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev libglew-dev libssl-dev如果遇到特定版本问题可以尝试sudo apt install libglew-dev4. 构建lidar_imu_calib工作空间现在我们可以按照标准流程构建lidar_imu_calib但需要做一些调整以适应Ubuntu 20.04环境。# 创建工作空间 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 wstool init wstool merge lidar_IMU_calib/depend_pack.rosinstall wstool update # 构建Pangolin cd lidar_IMU_calib ./build_submodules.sh5. 编译与问题排查在编译前我们需要确保CMake能找到正确版本的Cerescd ~/catkin_li_calib catkin_make -DCeres_DIR/usr/local/lib/cmake/Ceres如果编译过程中出现Python相关错误可能是因为ROS Noetic使用Python3而原项目可能基于Python2。解决方法检查所有Python脚本的shebang是否为#!/usr/bin/env python3确保所有ROS包都兼容Python36. 测试与验证编译成功后可以测试校准功能source devel/setup.bash roslaunch lidar_imu_calib calib.launch常见测试问题及解决方案问题现象可能原因解决方案启动后立即崩溃Pangolin初始化失败检查OpenGL驱动和GLEW安装无法加载点云PCL版本不兼容确保使用ROS Noetic的pcl_ros优化不收敛Ceres版本不正确验证Ceres是否为1.14.07. 性能优化建议成功运行后可以考虑以下优化措施多线程处理修改代码以利用现代CPU的多核性能GPU加速对于大规模点云考虑使用CUDA加速内存优化调整Pangolin的缓冲区大小以减少内存占用// 示例启用Ceres的多线程 ceres::Solver::Options options; options.num_threads std::thread::hardware_concurrency();8. 维护与更新由于这是在非官方支持的环境下运行建议定期检查上游仓库的更新备份成功编译的环境配置记录所有自定义修改便于未来迁移或升级遇到问题时可以尝试以下调试步骤检查ROS日志roscd grep -r ERROR验证依赖版本dpkg -l | grep -E ceres|glew|pcl使用gdb调试核心转储gdb -c core最后提醒这类跨版本适配工作虽然可行但会增加维护复杂度。对于生产环境建议考虑使用Docker容器化方案将成功配置的环境打包为镜像便于部署和分享。

更多文章