ArmorDetector 从 CameraFrameSync 获取同步后的图像帧,调用 OpenVINO
检测装甲板,并使用相机内参计算每个装甲板在相机坐标系下的位姿。
- 读取
CameraFrameSync<Info>::SyncedFrame - 将图像缩放到模型输入尺寸并执行 OpenVINO 推理
- 解码候选装甲板,过滤低置信度或几何异常的结果
- 对有效结果执行 PnP
- 发布检测结果、原始帧引用和运行指标
输入:
CameraFrameSync<Info>::SyncedFrame- 可选
VisionPreview::RuntimeParam,只用于本模块实时预览
输出:
armor_detector/armors_result: 当前帧装甲板检测结果armor_detector/armors_frame: 检测结果和当前同步帧引用armor_detector/metrics: 每帧检测数量、过滤数量、耗时等指标
模型文件:
model/armor_keypoint_640x512_bgr.xmlmodel/armor_keypoint_640x512_bgr.binmodel/armor_keypoint_640x512_bgr.onnx
OpenVINO 默认使用 .xml/.bin 文件;需要接入其他推理后端时使用 .onnx 文件。
每个装甲板结果包含:
- 颜色、编号、大小类型和置信度
- 图像中的包围框、中心点和四个角点
- PnP 是否成功
- PnP 平均重投影误差
- 相机坐标系下的位姿
armors_frame 中的原始图像和 IMU 指针只在同进程回调期间有效,下游模块应在回调内同步消费。
detect_color:0只保留红色,1只保留蓝色,其他值不过滤颜色referee_auto_detect_color: 开启后订阅裁判系统摘要包,按本机robot_id动态切换敌方颜色;未收到有效 ID 时仍使用detect_colorreferee_domain: 裁判系统摘要包所在 topic domain,默认hostreferee_topic: 裁判系统摘要包 topic 名,默认robot_game_refnetwork.score_threshold: 网络候选置信度门限network.min_confidence: 最终结果置信度门限network.enable_quad_check: 是否启用四边形面积检查network.min_quad_area_px: 四边形最小面积,单位为像素平方network.openvino_device:AUTO_DETECT、CPU、GPU、NPU、AUTO:*或MULTI:*network.openvino_performance_mode:LATENCY、THROUGHPUT或CUMULATIVE_THROUGHPUTpreview.enabled: detector 实时预览总开关;false时不启动预览线程preview.preview_window_name: OpenCV 窗口名preview.preview_scale: 显示缩放比例,只影响窗口画面preview.preview_wait_key_ms: OpenCV 窗口事件轮询时间,单位 mspreview.queue_capacity: 预览队列长度,超过上限时丢弃旧帧preview.output_mode: 预览输出模式;window使用 OpenCV 窗口,mjpeg使用 HTTP MJPEG 推流preview.web_bind_address: MJPEG 监听地址,默认0.0.0.0preview.web_port: MJPEG 监听端口,默认8080preview.web_jpeg_quality: MJPEG JPEG 编码质量,默认80preview.web_stream_name: MJPEG stream 名,默认armor_detector
默认设备策略为 AUTO_DETECT + LATENCY,按 NPU -> GPU -> CPU 顺序选择可用设备。
CI 使用 CPU + LATENCY,保证没有 GPU/NPU 的环境也能构建。
- 模块只在
preview.enabled: true时启动实时预览。 - 预览只显示当前 detector overlay,不订阅 topic、不录像、不写 TSV。
- 原始视频、同步数据和回放包落盘由相机/同步模块负责,不放在 detector 里。
- 相机参数来自模板参数
Info,必须与实际图像尺寸、编码、内参和畸变参数一致。 - 当前模型输入尺寸固定为
640x512。