Files
vision-anti-pinch/tests/RISK_CAN_REPORT.md
T
zmv f87e5aad40 Fix live CAN feedback with CH0-only asynchronous risk transmission
Send 0x1F6 risk updates through a bounded latest-result worker on CH0 and disable CH1 initialization, reception, transmission and live display. Preserve the four actual-position bytes from 0x391 and recorded-session compatibility.

Include regression coverage, Orin camera/TensorRT/CAN validation, and the verified standalone binary with refreshed checksums.
2026-09-28 13:59:26 +08:00

3.4 KiB

0x1F6 二值风险发送检查(2026-09-28)

以下为双通道风险发送阶段的历史验证记录,通道、二进制哈希与 Git 状态均指当时版本。最终 CH0 单通道实现和实机结果见 0x391 修复记录。

实现位于当前 inference-only 工作区:每个新的实时推理结果提交给后台 CAN 发送线程,在 CH0、CH1 各尝试发送一帧标准 CAN 数据报文,ID 0x1F6、DLC 8。首字节 bit0–3 和 bit4–7 同时填写相同风险值,clear 时各为 0,其他状态(含无人或证据不足时的 unavailable)各为 1,即首字节为 0x00 或 0x11,后七字节清零。最多保留一个待发结果,忙时由最新结果替换,不保证每个推理帧都上总线。回灌和禁用 CAN 时不自动发送,没有独立周期或旧结果重发。

本机模拟与构建

  • ./tests/run_can.sh 通过(UBSan、模拟 ZLG SDK):覆盖 clear/watch/warning/danger/unavailable/未知/空状态、高低四位相同赋值、恢复 clear 后两者同时清零、标准帧标志、ID、DLC、完整载荷、每结果双通道各一帧、任一通道失败不影响另一通道尝试、收发计数、停止和禁用后不访问发送 API。
  • 后台发送补充回归通过:模拟 SDK 阻塞时可连续提交 1000 个新风险并读取快照;释放阻塞后仅发送正在处理及最新待发的两对报文,没有旧结果积压;停止时丢弃待发结果,等待 SDK 返回后释放设备。单通道失败不抑制另一通道发送。
  • ./tests/run_session.sh 通过:人工图像的 H.264 编解码、录制/回灌顺序、CAN 快照保存、停止收尾与损坏数据检查。这不是摄像头/TensorRT 验证,也不证明实际推理循环的总线发送。
  • cmake --build build -j2 通过;git diff --check 通过。
  • --help 显示新的发送规则并返回 0;SDK 初始化同时报告 NvRmMem/Nvmap 设备不可用,不能据此声称 GPU 推理可运行。

板端故障注入与真实硬件操作

后续经授权在宿主 Orin 上完成真实摄像头、TensorRT 和 USB-CAN 性能对照。原同步发送路径约 0.33 FPS,SDK 双通道等待约 3 秒且均失败;改为后台发送后约 30 FPS,CAN 仍报告发送失败。详见 FPS 修复记录。未进行板端故障注入或物理拔插。未修改启动配置和参数,测试前后均无常驻程序。

未覆盖:真实总线成功发送与 ACK、双通道线上载荷、回灌时物理总线无发送、断连重连、长期运行。模拟通过及 FPS 恢复不代表这些项目已验收。

文件同步与版本状态

已更新工作区独立包 orin/build/camera_risk,刷新 orin/SHA256SUMS,完整清单校验通过;源码构建文件与独立包二进制 SHA256 相同:

a84680513aa61fb2af353f97e6369bbef80c9f12521ecd88454e72fcecab447f

本次改动未提交、未推送,未进行 Git 发布。当前本地 HEAD 为 515a9f32d8c0ebf83503d4d240ffe917dc09950c;本地保存的 origin/inference-only 引用为 0192fccbf06cb928eac098b3dfad32abf0fc370d,未联网核对远端最新值。未修改共享采集、相机停止或恢复逻辑;其他两分支没有本次修改的 src/can_bus.cpp,未同步。已按原命令 ./run_camera.sh 启动正式程序,核对 /proc/<pid>/exe、构建文件和独立包哈希一致,SIGTERM 约 1.267 秒正常退出,恢复测试前无常驻进程状态。