GrabBag/README.md

89 lines
4.2 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.

# GrabBag - 工业视觉检测系统
基于 Qt/C++17 的工业视觉检测平台,包含多个独立的检测应用程序,用于编织袋拆垛、皮带撕裂检测、焊缝检测、工件定位等工业场景。
## 目录结构
```
GrabBag/
├── App/ # 工业视觉应用程序
├── AppAlgo/ # 应用算法与模型
├── AppUtils/ # 应用层公共组件AppCommon、AppConfig、UICommon
├── Utils/ # 基础公共库VrCommon、VrUtils、CloudUtils、DataUtils 等)
├── Nets/ # Modbus、TCP、UDP、ZeroMQ 等网络通信模块
├── Device/ # 相机、激光器、雷达、LED 等设备封装及设备 SDK
├── Module/ # 认证、标定、共享内存、媒体流、接收器等功能模块
├── Robot/ # 机器人接口封装
├── SDK/ # OpenCV、Eigen、Poco、Protobuf 等通用第三方库
├── GrabBagPrj/ # qmake 总工程、构建目录、打包脚本及 Inno Setup 配置
├── Tools/ # 标定、授权、配置和设备调试工具
├── Test/ # 测试工程
├── TestData/ # 测试数据
├── ARMDoc/ # ARM 设备相关文档和图片
├── ARMLable/ # ARM 出库标签模板与资料
└── Publish/ # 发布安装包与构建产物
```
## 应用程序说明
| 应用名称 | 功能描述 | 使用设备 | TCP | Modbus TCP | Modbus RTU | 备注 |
|---------|---------|---------|-----|------------|------------|------|
| GrabBagApp | 编织袋视觉定位与拆垛 | VzNL 3D相机 | 6800 | 502→5020 | - | 支持 1-2 个相机 |
| BeltTearingApp | 实时检测传送带撕裂情况 | VzNL 3D相机 | 5800客户协议<br>5900上下位机 | 502→5020 | 温度读取 | 客户端-服务端分离 |
| LapWeldApp | 焊缝质量检测 | VzNL 3D相机 | 5020 | - | - | - |
| WorkpieceApp | 工件角点检测与定位 | VzNL 3D相机 | 7800 | 502→5020 | - | - |
| WorkpiecePositionApp | 双传感器工件抓取定位 | EpicEye + VzNL 3D相机 | 客户端连接5901 | 502→5020 | - | 连接 BinocularMarkApp |
| WorkpieceSpliceApp | 闭环控制工件拼接组装 | VzNL 3D相机 | 客户端连接5901 | 502→5020 | - | 连接 BinocularMarkApp |
| BinocularMarkApp | 3D Mark 点检测服务 | 大恒相机(双目) | 5901 | - | - | 无 Modbus |
| ParticleSizeApp | 颗粒粒度分析 | VzNL 3D相机 | 7900 | 502→5020 | - | - |
| TunnelChannelApp | 隧道通道检测 | 海康相机 + VzNL 3D相机 | - | 502→5020 | - | 2D+3D 融合 |
| WheelMeasureApp | 轮毂尺寸测量 | VzNL 3D相机 | - | 502→5020 | - | - |
| ParkingSpaceGuideApp | 停机位引导 | Hik 单目网口相机 + RsLidar + LED屏 | - | 502→5020 | - | UDP 8800 输出检测结果 |
> **协议说明:**
> - **TCP**:用于与机器人/上位机通信的自定义协议
> - **Modbus TCP**502 为标准端口,由于系统默认不允许非 root 用户监听 502 端口,通过 iptables 映射到 5020
> - **Modbus RTU**:仅 BeltTearingApp 支持,通过串口读取温度传感器数据
## 构建说明
### 环境要求
- Qt 5.x
- C++17 编译器
- qmake 构建系统
- Windows 打包脚本使用以下系统环境变量:
- `QT_PATH`Qt 版本目录,例如 `D:\Qt\5.15.2`
- `ISCC_PATH`Inno Setup 安装目录,例如 `C:\Program Files\Inno Setup 7`
### 构建整个项目Windows
```bash
cd GrabBagPrj
qmake GrabBagPrj.pro
make
```
### ARM/Linux 交叉编译
```bash
cd GrabBagPrj/buildarm
qmake ../GrabBagPrj.pro
make
```
## 技术架构
### 设计模式
- **Presenter 模式**: 业务逻辑与 UI 分离
- **接口抽象**: `IVrConfig``IVrEyeDevice` 等统一接口
- **配置管理**: `ConfigManager` 集中管理配置
### 线程安全
- 检测数据使用 mutex + 条件变量保护
- 配置使用读写锁模式
- 相机断连自动重连QTimer
### 通信协议
- TCP/IP 与机器人通信
- Modbus TCP 工业协议
- 共享内存进程间通信