# Orin 可直接运行目录 相机每次等待默认 2 秒,连续 6 次超时才退出(约 12 秒);有效帧恢复后重新计数。Ctrl+C / SIGTERM 主动停止不需要等待 6 次超时。 本目录包含实际在 Jetson AGX Orin 上编译的 aarch64 程序和 TensorRT FP16 引擎。 目标环境:L4T R35.4.1 / JetPack 5.1.2,CUDA 11.4,TensorRT 8.5.2,OpenCV 4.5.4。 使用系统安装的 CUDA、TensorRT、OpenCV 共享库;不适用于任意 JetPack 版本或 x86 主机。 ```bash cd orin sha256sum -c SHA256SUMS ./scripts/initialize_camera.sh ./run.sh ``` 实时推理、录制和回灌默认开启可视化,显示门区、检测框、手臂/手部关键点及风险信息。使用 `./run.sh --no-visualize` 关闭;`--visualize` 仍可显式开启。需要板端桌面 DISPLAY / WAYLAND_DISPLAY,没有显示环境时自动跳过窗口并继续推理。 默认持续推理直到 Ctrl+C / SIGTERM;正常退出没有统计输出。 预览窗口关闭后推理继续。结果通过 C++ CameraPipeline::latest() 获取,不通过端口或结果文件传递。 程序为 build/camera_risk,配置为 config/camera.json,引擎为 engines/*.engine。 ./run.sh 从所在目录解析路径,也可以在其他工作目录通过绝对路径调用。 bin/drivers 中 GMSL 模块对应内核 5.10.120-tegra。初始化脚本检查内核版本;加载模块需要 root 或现有 sudo 权限。 门区保留当前室内联调设置,door.calibration_verified=false。 ## 可选保存(默认全部关闭) 三个独立参数可以单独使用,也可以组合: ```bash ./run.sh --save-original --save-annotated --save-results ``` 开启任一项时,程序自动创建可执行文件所属工程的 `output/` 及三个子目录: - `original/`:`--save-original` 保存未叠加的原图,JPEG 质量 95。 - `annotated/`:`--save-annotated` 保存带框、关键点及风险文字的 JPEG,无需开启可视化窗口。 - `results/`:`--save-results` 每个完成推理的帧保存一个 JSON,包含帧号、检测框、跟踪 ID、关键点及置信度、风险和耗时;有 CAN 的分支还包含相应状态。 同一帧三类文件同名(扩展名不同),文件名包含运行标识和帧号,多次运行不覆盖。JSON 的 `images` 提供相对于 `output/` 的图片路径,未选择保存的图片为 null。源码入口写入工程 `output/`;独立包入口写入 `orin/output/`。默认不创建目录、不保存文件。 保存对象是完成推理的帧;惰性分支暂停时不新增文件。开启保存会增加编码和磁盘 I/O 开销。写入失败时报告错误并停止,不静默丢失文件。 ## H.264 推理过程录制与回灌 ```bash ./run.sh --record-session output/sessions/drive-001 # Ctrl+C 正常停止,完成 MP4 封装后再回灌 ./run.sh --replay-session output/sessions/drive-001 --save-results ``` 录制目录必须不存在。会话保存一份 H.264 视频、逐帧过程 JSON、推理配置与门区副本;回灌解码视频并重新执行 TensorRT 推理,不打开摄像头,结束后自动退出。使用当前配置指向的引擎;有损压缩会引起推理结果差异。需要 OpenCV FFmpeg 的 H.264 编码支持。强制退出或断电导致未封装完成的会话不可回灌;正常 Ctrl+C / SIGTERM 会完成封装。详细格式与限制见工程 README。