Ubuntu 20.04 下 LVI-SAM 复现全记录:从 gtsam 版本踩坑到 OpenCV 头文件修改
Ubuntu 20.04 下 LVI-SAM 复现实战从 gtsam 版本适配到 OpenCV 接口升级全解析在机器人感知与定位领域LVI-SAM 作为融合激光雷达与视觉信息的 SLAM 系统因其优异的实时性和鲁棒性备受关注。然而其复杂的依赖环境配置常常让开发者陷入依赖地狱。本文将分享我在 Ubuntu 20.04 系统上从零开始复现 LVI-SAM 的完整历程重点解决 gtsam 版本兼容性和 OpenCV 接口升级两大核心痛点。1. 环境准备与基础依赖安装1.1 系统环境确认首先确保系统环境符合以下要求Ubuntu 20.04.6 LTS推荐使用官方镜像ROS Noetic 完整版NVIDIA 显卡驱动 ≥ 510如需 GPU 加速CUDA 11.4可选视硬件配置提示建议使用全新的 Ubuntu 系统进行操作避免已有环境变量或旧版库造成冲突1.2 基础工具链配置安装必要的编译工具和依赖库sudo apt update sudo apt install -y \ build-essential cmake git wget \ libeigen3-dev libboost-all-dev \ libopencv-dev python3-catkin-tools验证 Eigen3 版本需 ≥ 3.3.7pkg-config --modversion eigen32. 关键依赖库的精确版本控制2.1 Ceres Solver 1.4.0 编译指南虽然 Ubuntu 20.04 软件源提供 Ceres但建议手动编译确保版本匹配git clone --branch 1.14.0 https://ceres-solver.googlesource.com/ceres-solver cd ceres-solver mkdir build cd build cmake .. -DBUILD_TESTINGOFF -DBUILD_EXAMPLESOFF make -j$(nproc) sudo make install关键参数说明-DBUILD_TESTINGOFF跳过测试节省编译时间-DBUILD_EXAMPLESOFF禁用示例程序构建-j$(nproc)使用全部 CPU 核心加速编译2.2 gtsam 4.0.3 的黄金组合经过多次验证gtsam 4.0.3 是与 LVI-SAM 兼容的最佳版本git clone --branch 4.0.3 https://github.com/borglab/gtsam.git cd gtsam mkdir build cd build cmake .. -DGTSAM_BUILD_WITH_MARCH_NATIVEOFF make -j$(nproc) sudo make install常见问题排查若遇到undefined reference to boost错误需确认已安装libboost-all-dev编译时内存不足可尝试减少并行任务数如make -j23. LVI-SAM 源码深度适配3.1 项目克隆与基础修改获取适配性更好的社区维护版本git clone https://github.com/YJZLuckyBoy/lviorf.git cd lviorf mkdir build cd build必须进行的 CMake 修改修改CMakeLists.txt第 8 行set(CMAKE_CXX_FLAGS -stdc14) # 原为 c11在第 37 行后添加find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)3.2 OpenCV 接口现代化改造由于 OpenCV 4.x 的 API 变更需要修改以下文件原接口新接口文件位置CV_RGB2GRAYcv::COLOR_RGB2GRAYBRIEF.cppCV_FONT_HERSHEY_SIMPLEXcv::FONT_HERSHEY_SIMPLEXkeyframe.cppopencv/cv.hopencv2/opencv.hpputility.h具体修改示例// 修改前 #include opencv/cv.h cv::cvtColor(image, gray, CV_RGB2GRAY); // 修改后 #include opencv2/imgproc.hpp cv::cvtColor(image, gray, cv::COLOR_RGB2GRAY);4. 编译排错与性能优化4.1 常见编译错误解决方案Eigen 冲突错误sudo rm -f /usr/include/eigen3/Eigen/src/Core/util/Memory.hBoost 链接错误 在CMakeLists.txt中添加link_directories(/usr/lib/x86_64-linux-gnu)C14 特性未启用 确保所有依赖库都用相同标准重新编译export CXXFLAGS-stdc144.2 运行时性能调优启用 AVX2 指令集需 CPU 支持cmake .. -DCMAKE_CXX_FLAGS-marchnative内存管理优化 在launch/run.launch中添加param namenum_threads value4 /可视化优化 修改config/params.yamlvisualization: point_size: 2 frame_rate: 155. 传感器适配与实战测试5.1 多品牌雷达配置指南LVI-SAM 默认支持 Velodyne如需适配其他品牌需修改修改src/lidar_odometry/utility.h中的点云类型定义更新config/params.yaml中的雷达参数lidar: topic: /livox/lidar # Livox 雷达话题 time_offset: 0.0 num_lines: 645.2 相机-雷达标定技巧使用lidar_camera_calibration工具时注意标定板尺寸需与配置文件一致建议采集至少 20 组不同位姿数据标定结果验证命令rosrun camera_calibration_parsers convert result.yaml output.ini6. 进阶调试与可视化技巧6.1 RViz 高级配置创建自定义 RViz 配置保存以下内容为lvi_sam.rvizVisualization Manager: Class: rviz::VisualizationManager Displays: - Class: rviz::PointCloud2 Name: Lidar Points Topic: /laser_cloud_surround6.2 关键帧调试方法在src/visual_odometry/visual_loop/loop_detection.cpp中添加调试输出std::cout Loop detected between frame current_frame_id and matched_frame_id std::endl;7. 系统集成与部署建议对于实际机器人部署建议进行以下优化降低 CPU 占用的编译选项cmake .. -DCMAKE_BUILD_TYPERelease -DENABLE_MARCH_NATIVEOFF内存管理优化配置system: max_queue_size: 100 memory_pool_size: 1024实时性保障措施sudo nice -n -20 roslaunch lvi_sam run.launch经过三天的反复调试和验证这套配置在 Intel i7-11800H NVIDIA RTX 3060 的移动平台上实现了稳定的 15Hz 实时建图性能。最关键的发现是 gtsam 4.0.3 与 OpenCV 4.2.0 的组合最为稳定而盲目使用最新版本反而会导致难以排查的运行时错误。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2475296.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!