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

242 lines
5.6 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.

# DroneScrewServer 部署指南
## 概述
DroneScrewServer 是基于海康威视 MVS USB 相机的螺杆检测服务端程序,运行在 ARM/Linux 平台。
---
## 目录结构
```
DroneScrewServer/
├── DroneScrewServer # 可执行文件
├── config/
│ └── config.xml # 配置文件
├── setup_mvs_env.sh # 环境配置脚本
├── run_server.sh # 启动脚本(推荐使用)
├── USB_CAMERA_TROUBLESHOOTING.md # 故障排查指南
└── README.md # 本文件
```
---
## 快速开始
### 方法 1使用启动脚本推荐
```bash
# 赋予执行权限
chmod +x run_server.sh setup_mvs_env.sh
# 启动服务(自动配置环境)
sudo ./run_server.sh
```
### 方法 2手动启动
```bash
# 1. 配置环境变量
source ./setup_mvs_env.sh
# 2. 配置 USB 内存(需要 root
sudo sh -c 'echo 2000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
# 3. 运行程序
sudo ./DroneScrewServer
```
---
## 系统要求
### 硬件要求
- **平台**ARM aarch64如 RK3588、Jetson 等)
- **USB**USB 3.0 端口(推荐)
- **内存**:至少 2GB 可用内存
- **相机**:海康威视 MVS USB 工业相机
### 软件要求
- **操作系统**Linux ARM64Ubuntu 20.04+ / Debian 11+
- **依赖库**
- Qt 5.15+
- ZeroMQ 4.3+
- Protobuf 3.20+
- MVS SDK 3.0.1(已包含在项目中)
---
## 依赖的 SDK 文件
程序运行时需要以下 SDK 文件(已包含在项目中):
```
SDK/Device/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/
├── lib/aarch64/
│ ├── libMvCameraControl.so # 主库
│ ├── libGCBase_gcc494_v3_0.so
│ ├── libGenCP_gcc494_v3_0.so
│ ├── libCLProtocol_gcc494_v3_0.so
│ ├── libFormatConversion.so
│ └── ThirdParty/
│ ├── libavutil.so.60.8.100 # FFmpeg 依赖
│ └── libswscale.so.9.1.100
└── include/
├── MvCameraControl.h
└── ...
```
**重要**:这些文件必须存在,否则程序无法启动。
---
## 配置文件
### config/config.xml
```xml
<?xml version="1.0" encoding="UTF-8"?>
<DroneScrewServerConfig>
<!-- 相机配置 -->
<Camera serialNumber="" exposureTime="10000" gain="5.0"/>
<!-- ZeroMQ 端口配置 -->
<Zmq controlPort="5555" resultPort="5556" rawImagePort="5557"/>
<!-- RTSP 推流配置 -->
<Rtsp port="8554" path="/live/dronescrew" bitrateKbps="4096" fps="30"/>
<!-- 算法参数 -->
<Algorithm scoreThreshold="0.5" nmsThreshold="0.45"
inputWidth="640" inputHeight="640"
modelPath="./model/dronescrew.onnx" modelType="0"/>
</DroneScrewServerConfig>
```
**参数说明**
- `serialNumber`:相机序列号(留空则使用第一个检测到的相机)
- `exposureTime`:曝光时间(微秒)
- `gain`:增益值
- `controlPort`ZMQ 控制端口
- `resultPort`ZMQ 结果发布端口
- `rawImagePort`原始图像发布端口0 表示禁用)
---
## 环境变量说明
程序运行需要以下环境变量(`setup_mvs_env.sh` 会自动配置):
```bash
# MVS SDK 根路径
export MVCAM_SDK_PATH=/path/to/MVS-3.0.1_aarch64_20251113
# 库搜索路径
export LD_LIBRARY_PATH=$MVCAM_SDK_PATH/lib/aarch64:$MVCAM_SDK_PATH/lib/aarch64/ThirdParty:$LD_LIBRARY_PATH
```
---
## 常见问题
### 1. 错误:找不到 libMvCameraControl.so
**原因**:环境变量未配置或 SDK 文件缺失
**解决**
```bash
# 检查 SDK 文件是否存在
ls SDK/Device/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/lib/aarch64/libMvCameraControl.so
# 使用启动脚本(会自动配置)
./run_server.sh
```
### 2. 错误MV_CC_StartGrabbing fail: 80000006
**原因**USB 资源申请失败
**解决**
1. 确保使用 `sudo` 运行
2. 配置 USB 内存:`sudo sh -c 'echo 2000 > /sys/module/usbcore/parameters/usbfs_memory_mb'`
3. 降低相机分辨率或帧率
4. 查看详细排查指南:`USB_CAMERA_TROUBLESHOOTING.md`
### 3. 错误Enumerated 0 devices
**原因**
- 权限不足(未使用 sudo
- USB 相机未连接
- USB 驱动问题
**解决**
```bash
# 检查 USB 设备
lsusb | grep -i hikvision
# 使用 sudo 运行
sudo ./run_server.sh
```
### 4. 推流模块超时
**原因**:相机启动失败,没有图像数据
**解决**:先解决相机启动问题(参考上述错误 2 和 3
---
## 网络协议
### ZeroMQ 接口
**控制端口REQ/REP**:默认 5555
- 启动检测:`START_WORK`
- 停止检测:`STOP_WORK`
- 单次检测:`SINGLE_DETECTION`
- 设置曝光:`SET_EXPOSURE <value>`
- 设置增益:`SET_GAIN <value>`
**结果端口PUB/SUB**:默认 5556
- 发布检测结果JSON 格式)
**原始图像端口PUB/SUB**:默认 5557可选
- 发布原始相机图像
### RTSP 推流
**URL 格式**`rtsp://<server_ip>:8554/live/dronescrew`
---
## 日志
程序日志输出到标准输出,可以重定向到文件:
```bash
sudo ./run_server.sh 2>&1 | tee server.log
```
---
## 性能优化
### 降低带宽占用
1. 降低分辨率1920x1080 → 1280x720
2. 降低帧率30fps → 15fps
3. 使用 Mono8 像素格式(如果算法支持)
### 提高检测性能
1. 使用硬件加速(如 RK3588 的 NPU
2. 优化算法模型(量化、剪枝)
3. 调整算法参数scoreThreshold、nmsThreshold
---
## 技术支持
遇到问题请查看:
1. `USB_CAMERA_TROUBLESHOOTING.md` - USB 相机故障排查
2. 程序日志输出
3. MVS SDK 文档:`SDK/Device/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/doc/`