图①:主线程初始化与生命周期 camera3d_main_init

完整覆盖以下阶段:

启动阶段 — CLI 解析 → YAML 配置加载 → spdlog 日志初始化 → Prometheus 监控指标注册 → 硬件枚举(USB3/GigE/FPGA/IMU)→ 硬件就绪检查 → 传感器上电(VCSEL 激光安全检查 + FPGA bitstream 上传 + IMU 复位)→ 标定数据加载(K\mathbf{K}K, dist, (R,t)∈SE(3)(\mathbf{R},\mathbf{t}) \in SE(3)(R,t)∈SE(3), 手眼矩阵 X\mathbf{X}X)→ 预计算 LUT(去畸变/相位-深度/三角测量)

IPC 基础设施 — 6条线程安全阻塞队列(各深度标注)+ 8个条件变量 + 2个 lock-free SPSC(IMU 专用)+ 4个原子标志 → 共享内存双缓冲池分配

线程创建与调度 — 9个工作线程,含 CPU 亲和性绑定与 SCHED_FIFO 优先级分配(T2/T3/T4 = 90/80/80,T6 = 70)

主监控循环 — Watchdog 心跳检查 → 僵死线程检测 → 最多 3 次自动重启 → 超限则紧急停机 → 性能指标采集 → 外部停止信号监听

优雅停机 — stop_flag 广播 → notify_all → 所有线程 join(timeout=2s) → 硬件关闭 → 日志刷盘 → 最终性能报告

图②:九线程并发主循环 camera3d_threads(泳道图)

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐