4.6 KiB
2026-09-23 集成验证
执行设备:192.168.195.100 / Orin;摄像头 /dev/video5,UYVY 1920×1536。当前机位朝向室内设备,没有测试人员;用户确认暂不调整机位。
| 验证 | 结果 |
|---|---|
| 原生 C++/CUDA 共享库 | Orin Release 编译通过 |
| 摄像头 + CAN 模式,30 秒 | 882 帧,29.399 FPS,无运行异常 |
| 主机取帧到风险结果 | 均值 42.369 ms,P95 57.368 ms |
| latest-frame 策略 | 30 秒期间丢弃 16 个积压帧 |
| 真实 CAN | USB-CAN 打开失败,lsusb 未见该设备;882 帧均为 CAN_UNKNOWN,score=null |
| 有人视频 150 帧回放 | 32.898 FPS,31 帧有 1 人,119 帧无有效人体框 |
| RTMW 骨骼 | 31 个人体记录,每个 133 点 |
| 风险证据 | 22 个手部区域,9 个人体框兜底区域 |
| 视频门级风险 | clear 132,watch 5,warning 2,unknown 11 |
| 原始 run_risk.py 对照 | 同一姿态记录重放 150 帧,核心输出完全一致 |
| 行为测试 | 本机与 Orin 的 8 项测试均通过 |
| HTTP 实时预览 | 本机访问远端 /result.json 成功,连续返回新帧 |
对照方式:将远端 outputs/person-replay/pose_records.jsonl 下载到本机,用用户原始工程的 run_risk.py --pose-jsonl 运行,逐帧比较原始 JSON 的所有顶层字段,包括 skeletons、door_assignments、door_risks、risk、ungated_risk。仅排除不同工程目录导致的绝对 mask 路径差异;150 帧无差异。此项对照验证相同姿态输入下的风险集成,不是 TensorRT 与 ONNX 输出的数值误差测试。
证据:
outputs/camera-can/summary.jsonoutputs/person-replay/summary.json与causal_results.jsonloutputs/reference-replay/summary.json与causal_results.jsonloutputs/reference-parity.jsonlogs/build.log,logs/camera-can.log,logs/person-replay.log
outputs/camera-smoke/ 是初次调通记录,使用了不可靠的驱动时间戳,延迟统计无效。已修正计时来源,性能结论以 camera-can 为准。
未完成的硬件验证:有效 CAN 报文到达与门切换、真实摄像头下人员/手部靠近门区、实车机位 mask 与前后门参数标定。当前无法据此宣称已完成实车防夹效果验收。
本机没有摄像头设备节点;本机完成源码/模型归档、风险对照及行为测试,通过网络预览 Orin 的实时结果。
最新结果变量与可选可视化改造
已对照重启后远端 0920 的 include/latest_result.hpp 和 src/main.cpp,采用默认关闭可视化、单个不可变最新快照、start/latest/request_stop/join 生命周期。
- 本机与 Orin:17 项测试通过,覆盖原有风险测试及只读快照、旧快照保持、跨线程等待/停止、错误传播、默认无绘制/HTTP/结果文件、JSON 与内存结果一致、预览端口失败不影响推理、独立可视化线程。
- Orin 真实 TensorRT 视频回放:下游示例读取 90 帧,27.321 FPS;未开启可视化和文件保存。保留 watch/warning/unknown 等风险输出。
- Orin 真实摄像头:下游示例读取 90 帧,28.858 FPS;主机取帧至结果均值 32.341 ms;关闭可视化,没有创建指定输出目录。
--visualize实机运行 15 秒:成功通过 HTTP 读取逐帧结果及 JPEG 图像;未开启文件保存,没有创建指定输出目录。- 后台运行入口默认无可视化;开启预览需显式加
--visualize。 - 重启后摄像头节点未自动生成。0920 初始化脚本因驱动缺少 vermagic 元数据而判定不匹配;0923 新增初始化脚本,存在 vermagic 时检查内核版本,缺失时交给正常 insmod 的内核检查,未使用强制加载参数。加载原有 0920 驱动后 /dev/video5 恢复。
日志:logs/tests-optional-local.log、logs/tests-optional-orin.log、logs/result-api-video.log、logs/result-api-camera.log、logs/optional-preview.log、logs/optional-preview-probe.json。
use-can Orin 可运行包验证
- 独立运行包位于
orin/:包含预编译 ARM64 原生库、TensorRT 引擎、Python 风险代码、CAN USB 库、GMSL 驱动和 ./run.sh。 - 在 Orin 新建的独立临时目录复制整个运行包,SHA256SUMS 全部通过。
- 从临时目录执行
./run.sh --max-frames 90,实际摄像头 90 帧完成,29.080 FPS,主机取帧至风险结果平均 36.310 ms;无结果文件输出。 - 原生库 RUNPATH 为
$ORIGIN/../lib:/usr/local/cuda/lib64,启动脚本按自身位置定位所有项目资产。 - 系统依赖仍为目标 JetPack 的 CUDA / TensorRT / OpenCV 与 Python numpy/cv2,不包含操作系统或完整 Python 环境。