2026-06-26 17:55:15 +08:00

154 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RK3588双板视觉系统技术方案
## 版本信息
| 版本 | 日期 | 变更说明 |
|------|------|----------|
| V1.0 | 2026-05-14 | 初始方案定稿 |
## 一、项目概述
### 1.1 需求背景
基于两块瑞芯微RK3588开发板构建分布式视觉系统实现第三方平面相机图像采集、算法检测、实时视频传输与远程控制功能。系统需充分利用RK3588硬件加速能力满足低延迟、高稳定性、低CPU占用的工业级要求。
### 1.2 核心功能
- **板一(采集处理端)**通过第三方相机SDK采集图像运行目标检测算法将处理后的图像进行硬件编码并推流
- **板二(显示控制端)**:拉取板一的视频流并硬件解码显示,支持远程控制板一的检测启停
- **双向通信**:控制指令和检测结果通过轻量可靠协议传输,保证不丢包、低延迟
### 1.3 硬件环境
- 核心板Firefly RK3588两块
- 相机第三方平面相机支持USB/MIPI/GigE接口
- 网络:千兆局域网(直连或交换机)
- 显示HDMI显示器板二
## 二、整体架构设计
### 2.1 系统总架构
```mermaid
flowchart LR
subgraph 板一[板一(采集处理端)]
A[相机SDK] --> B[算法处理]
B --> C[FFMedia RGA格式转换]
C --> D[FFMedia H.264硬件编码]
E[ZeroMQ服务端]
end
subgraph 板二[板二(显示控制端)]
F[控制界面] --> G[ZeroMQ客户端]
H[FFMedia RTSP拉流解码] --> I[FFMedia DRM/X11显示]
end
D -- RTSP视频流 --> H
G -- ZeroMQ控制/结果 --> E
```
### 2.2 数据流设计
#### 2.2.1 图像数据流(单向)
```mermaid
flowchart LR
subgraph 板一[板一(采集处理端)]
direction TD
A1[相机SDK采集]
B1[算法检测]
C1[绘制检测框]
D1[RGA转NV12格式]
E1[FFMedia内存输入]
F1[MPP硬件编码H.264]
G1[RTSP推流板一]
end
subgraph 板二[板二(显示控制端)]
direction TD
H1[RTSP拉流板二]
I1[MPP硬件解码H.264]
J1[RGA适配显示分辨率]
K1[DRM/X11硬件显示]
end
A1 --> B1
B1 --> C1
C1 --> D1
D1 --> E1
E1 --> F1
F1 --> G1
G1 --> H1
H1 --> I1
I1 --> J1
J1 --> K1
```
#### 2.2.2 控制指令流(双向)
```mermaid
flowchart LR
A2[板二控制界面点击]
B2[ZeroMQ REQ发送指令]
C2[板一ZeroMQ REP接收]
D2[执行启停操作]
E2[返回执行结果]
F2[板二更新界面状态]
A2 --> B2
B2 --> C2
C2 --> D2
D2 --> E2
E2 --> F2
```
#### 2.2.3 检测结果流(单向)
```mermaid
flowchart LR
A3[板一算法输出检测结果]
B3[Protobuf结构化序列化]
C3[ZeroMQ PUB发布结果]
D3[板二ZeroMQ SUB接收结果]
E3[界面叠加显示检测框]
A3 --> B3
B3 --> C3
C3 --> D3
D3 --> E3
```
## 三、技术选型
### 3.1 核心技术栈
| 功能模块 | 技术方案 | 选型理由 |
|----------|----------|----------|
| 视频编解码 | FFMedia + RKMPP | 瑞芯微官方封装,原生支持硬件编解码,零拷贝,低延迟 |
| 视频传输 | FFMedia RTSP | 内置RTSP服务器/客户端无需额外开发支持UDP低延迟模式 |
| 控制与结果传输 | ZeroMQ C++ | 轻量高性能原生支持REQ-REP/PUB-SUB模式ARM平台占用极低无第三方依赖 |
| 数据序列化 | Google Protobuf | 结构化数据体积小C++支持好,跨平台 |
| 图像预处理 | FFMedia RGA | 硬件加速缩放、裁剪、格式转换CPU占用极低 |
| 显示 | FFMedia DRM/X11 | 硬件加速渲染,零拷贝显示,延迟最低 |
## 四、性能指标
### 4.1 端到端延迟1080P 30fps
| 环节 | 延迟范围ms |
|------|----------------|
| 相机采集 | 8~15 |
| 算法处理 | 10~40取决于模型复杂度 |
| RGA格式转换 | 2~5 |
| MPP硬件编码 | 5~8 |
| 网络传输 | 3~10 |
| RTSP解封装 | 10~20低延迟模式 |
| MPP硬件解码 | 4~7 |
| 显示输出 | 1~3 |
| **总延迟** | **60~120含算法处理** |
### 4.2 资源占用
- 板一CPU占用<15%不含算法
- 板二CPU占用<10%
- 网络带宽约4Mbps1080P 30fps H.264
- 内存占用<512MB
## 五、优化方向
### 5.1 延迟优化
- 关闭不必要的网络缓冲启用RTSP低延迟模式
- 全程使用DMA内存避免内存拷贝
- 优化编码参数降低GOP大小
- 优先使用UDP传输协议
- ZeroMQ启用TCP_NODELAY选项减少小包延迟
### 5.2 稳定性优化
- 实现ZeroMQ自动重连机制
- 增加异常处理逻辑支持相机断连网络异常自动恢复
- 完善资源管理避免内存泄漏
- 建立完善的日志系统便于问题定位
---