本文回顾 2026 年 7—8 月的项目,包含后续整理与补充。实验数字和验证范围按原始项目记录陈述;文末仓库路径为记录索引。

相机打开了,视频也存下来了,这下总能知道车在哪儿了吧?

B3 观测阶段的记录告诉我,事情没这么顺。视频能保存,时间对齐也可能通过,但 AprilTag 只认出了一部分帧。剩下那些帧没有姿态,轨迹就断在那里。如果这时候写一句“相机通过”,后面的融合和标定都会跟着误会。

视频、时间与姿态分别检查

当前的观测证据至少分成以下层次:

观测门 关注的问题 当前状态
视频写入 是否读到帧,并把帧写入了文件 在受控运行中可以验证
时间对齐 相机记录和 telemetry 是否能按声明的时间边界匹配 部分运行通过,边界仍需审计
AprilTag 解码 一帧里是否真实检测到目标标签 受视角、遮挡和处理预算影响
姿态连续性 相邻有效姿态之间是否有过大的空洞 多次运行仍出现长间隔
真实轨迹可信度 轨迹是否足以支持标定、holdout 或性能比较 INSUFFICIENT EVIDENCE

表里每一行都得单独查。时间对上了,丢掉的姿态不会自己回来;预测把线连上了,也不能说标签都识别到了。后面两个例子正好把这件事暴露得很清楚。

调整高度后,姿态仍不连续

在 2026-08-08 的一次授权相机高度复跑中,采集条件记录为 1280x720 / MJPG / 30 fps。相机成功读取了 389 帧,其中 154 帧生成了姿态,检测比例为 39.59%。235 个失败帧都被分类为 candidates_rejected,并保留了 8 张代表性失败缩略图。

这次运行的时间对齐门通过了:覆盖率为 100%,p95 时间误差为 15.36 ms。但这并不等于观测准备完成。严格的离线观测分析又发现,帧 380 和 381 的相机时间戳相同;检测耗时 p95 为 64.75 ms,最大姿态间隔达到 28 个帧记录。按照当前规则,观测门仍然不能通过。

这次时间对齐达标,但姿态空缺和重复时间戳仍在。后续标定需要同时满足这些条件,因此不能只按同步结果放行。

用失败帧定位检测问题

一开始日志只告诉我“没有姿态”。那到底是标签不在画面里,形状不符合检测条件,被挡住了,还是处理太慢?光看失败计数猜不出来。于是给原来的采集路径加了这些记录:

  • 按失败原因保留代表性 JPEG 缩略图;
  • 区分 candidates_rejected 和 no_markers;
  • 记录尝试过的检测尺度、匹配尺度和检测耗时;
  • 保留帧索引、相机时间和错误信息,方便回放;
  • 不因为分析失败就覆盖原始视频或改变主采集生命周期。

这些记录本身不会提高识别率,但能帮助下一轮选择要调整的变量。先看失败样本,再分别检查视野、遮挡、模糊、阈值和吞吐,才能知道哪项变化可能起了作用。

将姿态分析移出采集循环

后来又发现,视频写入和 AprilTag 分析挤在同一个采集循环里。分析一慢,后面的读帧和写视频就跟着等。这样连原始记录都可能受影响,回放时想查相机到底拍到了什么,也查不完整。

后续的代码修复把两者拆开:采集线程继续负责读帧、写视频、维护会话和停止流程;分析线程使用有界队列处理姿态;队列满时只记录分析任务丢弃,不把它伪装成视频帧丢失。分析结果仍然带着原始帧索引和采集时间,完成后再回填到帧记录中。

这次改动在离线代码和测试里过了,但还不能顺势宣布相机性能变好了。先解决的是记录和分析互相拖累的问题,真实采集效果要另外跑。

姿态输出 100%,标签却没全认出来

我也尝试过一个明确受限的 flow_long60 离线状态层候选。在保留的 1920x1080、30 fps、655 帧视频上,它得到过以下回放结果:

  • 真正的 tag decode ratio 为 88.70%;
  • pose output ratio 达到 100.00%;
  • 最大姿态间隔为 1 帧;
  • 其中 74 个姿态来自预测;
  • 处理耗时 p95 为 92.79 ms。

只看 100.00% 那一行,很容易以为问题解决了。可其中 74 个姿态是预测补出来的,真正解码的比例还是 88.70%。预测可能让显示和估计少一些空洞,但不能替相机认标签。这也是为什么两个比例必须分开记,B3 观测门不能靠补点通过。

两帧时间一样,还得回头查时钟

前面还有两帧时间戳相同的问题。主机时间源分辨率不够时,连续帧确实可能被记到同一个时刻。后来我把相机、telemetry 和 health 的采集时间统一到高分辨率的 perf_counter_ns() 路径,超时和心跳调度仍保留原有时钟语义。

目前查过的是离线代码契约和回放逻辑,旧运行的原始数据没有改。新时间戳要在下一次授权采集中验证;标签可见性与标定精度仍需分别检查。

观测恢复仍需一次受控采集

视频记录、失败帧、诊断字段、录制与分析解耦,以及预测与真实解码的区分,已经有软件检查支持。相机高度、遮挡、候选几何和吞吐都是后续排查方向,目前还不能将失败归到某一个原因。现有数据也不足以证明连续 AprilTag 跟踪、真实轨迹准确、IMU/相机融合准确或 B3 观测准备完成。

当时准备固定相机视野和标定条件,结合失败样本做单变量实验;取得稳定观测后,再做真实标定和独立 holdout。项目现已基本停止维护,这些仍是待验证项。

相关记录