2026-07-31 10:49:08 +08:00
2026-07-31 10:49:08 +08:00
2026-07-31 10:49:08 +08:00
2026-03-28 10:49:55 +08:00
2026-08-04 14:23:07 +08:00
2026-08-04 14:23:07 +08:00
2026-07-31 10:49:08 +08:00
2026-08-04 14:23:07 +08:00
2026-07-14 17:14:55 +08:00

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客户协议
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 TCP502 为标准端口,由于系统默认不允许非 root 用户监听 502 端口,通过 iptables 映射到 5020
  • Modbus RTU:仅 BeltTearingApp 支持,通过串口读取温度传感器数据

构建说明

环境要求

  • Qt 5.x
  • C++17 编译器
  • qmake 构建系统
  • Windows 打包脚本使用以下系统环境变量:
    • QT_PATHQt 版本目录,例如 D:\Qt\5.15.2
    • ISCC_PATHInno Setup 安装目录,例如 C:\Program Files\Inno Setup 7

构建整个项目Windows

cd GrabBagPrj
qmake GrabBagPrj.pro
make

ARM/Linux 交叉编译

cd GrabBagPrj/buildarm
qmake ../GrabBagPrj.pro
make

技术架构

设计模式

  • Presenter 模式: 业务逻辑与 UI 分离
  • 接口抽象: IVrConfigIVrEyeDevice 等统一接口
  • 配置管理: ConfigManager 集中管理配置

线程安全

  • 检测数据使用 mutex + 条件变量保护
  • 配置使用读写锁模式
  • 相机断连自动重连QTimer

通信协议

  • TCP/IP 与机器人通信
  • Modbus TCP 工业协议
  • 共享内存进程间通信
Description
基于算法的应用软件
Readme 4.3 GiB
Languages
C++ 85.1%
C 6.7%
JavaScript 6.1%
CMake 0.7%
HTML 0.5%
Other 0.8%