# 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 ARM64(Ubuntu 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 ``` **参数说明**: - `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 ` - 设置增益:`SET_GAIN ` **结果端口(PUB/SUB)**:默认 5556 - 发布检测结果(JSON 格式) **原始图像端口(PUB/SUB)**:默认 5557(可选) - 发布原始相机图像 ### RTSP 推流 **URL 格式**:`rtsp://: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/`