GrabBag/README.md

89 lines
4.2 KiB
Markdown
Raw Normal View History

# 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 工业协议
- 共享内存进程间通信