本仓库的默认入口是经过测试的 21 状态误差状态卡尔曼滤波松组合程序
integrated_navigation。仓库只保留重构后的实现;清理前的旧版单体程序可通过
Git 标签 legacy-baseline 查阅。
正式经验配置已经在所给开阔场 IMU/PVT 数据上满足既定收敛合同:
- 1253 个 PVT 历元全部匹配,位置和速度原始检验均通过
1253/1253; - 565 个动态历元的位置和速度检验均通过
565/565; - all-epoch 水平、垂直、三维速度 RMS 分别为
0.266261 m、0.120030 m、0.094704 m/s; - 无 NaN/Inf、无非预期分段,重复运行的有效输出逐字节一致;
- Debug、Release、MSVC ASan 三种构建均通过全部 22 项测试。
这里的“经验收敛”只表示该 IMU/PVT 会话内部的一致性,不能替代独立真值精度或 跨会话泛化验证。
正式解算使用:
- IMU:
data/open_field/imu_rawimusa.ASC - PVT:
data/open_field/gnss_pvt.txt - 配置:
config/open_field_empirical.ini - IMU 输入格式:
novatel_rawimusa_ascii
原始数据不提交到 Git。文件名、哈希和放置方法见 本地数据说明。
在 Visual Studio 2022 x64 环境中:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
.\build\Release\integrated_navigation.exe --config .\config\open_field_empirical.ini配置中的相对路径以配置文件所在目录为基准。config/open_field.ini 是保留的原始
RED 基线,不是正式经验配置。
配置项 run.output_dir 指定运行目录,程序生成:
solution.txt:位置、NED 速度和姿态;state.csv:闭环反馈前修正量、IMU 标定状态和协方差标准差;innovation.csv:位置/速度残差、raw/final NIS、接受状态、适配状态和实际 观测协方差倍率;events.log:输入丢弃、补齐、重复 GNSS、时间线间隔和分段事件;summary.txt:样本、匹配、全段/动态接受计数、RMS、健康状态和纯惯导尾段。
文件字段保持稳定的机器可读英文名称;面向使用者的说明、验证报告和结论使用中文。
正式合同同时要求:
- 全段位置与速度接受率各不低于 95%;
- 动态段位置与速度接受率各不低于 95%;
- all-epoch 水平、垂直、三维速度 RMS 分别不超过
0.5 m、1.0 m、0.1 m/s; - 输出有限且健康,适配更新必须在诊断中显式标记。
接受率 100% 不等于完整收敛。使用
data/open_field/imu_converted_frd.txt 的专项诊断虽然最终接受
1253/1253、动态接受 565/565,但三维速度 RMS 为 0.470908 m/s,
超过门限;其中 1163 次速度更新依赖观测协方差适配。因此该文件未被选作正式输入。
它采用 converted_increment_text 语义,内容已经是角增量和速度增量,不能再应用
RAWIMUSA 原始计数比例因子。
旧源码不再位于默认分支,也不参与构建和测试。清理前快照保存在
legacy-baseline 标签中;已知缺陷和迁移边界见
旧版实现说明。