:环境与编译)
VINS-Fusion 官方只有 ROS1 版。现以其 Humble 版 zinuok/VINS-Fusion-ROS2为底座完成 Jazzy 适配代码开源stronghasaki/VINS-ROS2_jazzyEuRoC MH_01_easy VIO ATE 0.118m与 ROS1 原版同数量级。坑 1Ceres 2.1.0 CMake 报 CXSparse::CXSparse target 不存在现象CMake Error at internal/ceres/CMakeLists.txt:329 (target_link_libraries): Target ceres links to: CXSparse::CXSparse but the target was not found. ... An ALIAS target is missing.根因noble 的 SuiteSparse/CMake 打包方式变更Ceres 2.1.0 自带的FindCXSparse.cmake找不到新的 imported target。该兼容问题在 Ceres 2.2.0 修复。为什么不能升 Ceres 2.2VINS-Fusion 与 camera_modelscamodocal大量使用ceres::LocalParameterization该类 2.1 已 deprecated、2.2 中移除替代品Manifold。升级 手改全部因子类工作量高一个量级。解法VINS 求解器不使用 CXSparse直接关闭cmake..-DBUILD_TESTINGOFF-DBUILD_EXAMPLESOFF-DCXSPARSEOFF原理报错指向的依赖不等于被使用的依赖先确认依赖的实际使用方再决定修复路径。坑 2编译 loop_fusion 时 cc1plus 被 Killed现象c: fatal error: Killed signal terminated program cc1plus无任何 error 行只有 Killed OOM 签名。根因DBoW2 词袋模板代码 Release-O3单翻译单元峰值内存超 2GBcolcon 默认按核数开 8 路并行8G 内存爆掉。解法MAKEFLAGS-j2 colcon build --parallel-workers1原理模板重度代码在-O3下内存膨胀是乘法关系模板实例数 × 优化开销并行度决定峰值内存低配机器先限并行度。坑 3ros:jazzy 基础镜像缺 OpenCV 开发包现象colcon 报Could NOT find OpenCV (missing: OpenCVConfig.cmake)。根因ros 基础镜像只含运行库不含开发头文件OpenCVConfig.cmake在 dev 包里。解法Dockerfile 补装Boost 三件套为 camera_models 所需RUN apt-get install -y libopencv-dev libboost-filesystem-dev \ libboost-program-options-dev libboost-system-dev坑 4ament symlink install 报 …/config 不存在现象ament_cmake_symlink_install_directory() cant find /ws/src/src/vins/../config/。根因CMakeLists 用install(DIRECTORY ../config/)引用包外目录zinuok 原仓库 layout 为 workspace 根下 config/目录结构变化后相对路径断裂。解法照原 layout 将 config/ 放回包的兄弟目录。原理CMake 引用包外路径时编译期不校验、install 期才解析报错点远离出错点。移植他人仓库先执行git grep \.\./排查此类引用。下一篇评测链路的坑Jazzy 移除了 rosbag1 支持.bag需转 rosbag2、VINS 上游vio.csv时间戳被截成整数秒无法对齐真值、evo 的 numpy/scipy 二进制混搭问题。仓库https://github.com/stronghasaki/VINS-ROS2_jazzy Docker 一键复现 MH_01 基准数字