154 lines
4.7 KiB
Markdown
154 lines
4.7 KiB
Markdown
# 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%
|
||
- 网络带宽:约4Mbps(1080P 30fps H.264)
|
||
- 内存占用:<512MB
|
||
|
||
## 五、优化方向
|
||
### 5.1 延迟优化
|
||
- 关闭不必要的网络缓冲,启用RTSP低延迟模式
|
||
- 全程使用DMA内存,避免内存拷贝
|
||
- 优化编码参数,降低GOP大小
|
||
- 优先使用UDP传输协议
|
||
- ZeroMQ启用TCP_NODELAY选项,减少小包延迟
|
||
|
||
### 5.2 稳定性优化
|
||
- 实现ZeroMQ自动重连机制
|
||
- 增加异常处理逻辑,支持相机断连、网络异常自动恢复
|
||
- 完善资源管理,避免内存泄漏
|
||
- 建立完善的日志系统,便于问题定位
|
||
|
||
---
|