diff --git a/.gitignore b/.gitignore index 40b44d11..89b12fe1 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ nul *.stackdump CLAUDE.md .claude -.codex +.codex* ##log **/runlog diff --git a/GrabBagPrj/AppList.md b/GrabBagPrj/AppList.md index 8d65e6e6..b072bbc8 100644 --- a/GrabBagPrj/AppList.md +++ b/GrabBagPrj/AppList.md @@ -17,10 +17,10 @@ | 11 | 铁路隧道槽道测量 | TunnelChannel | 1.0.0.3 | | 12 | 螺杆定位 | ScrewPosition | 1.2.4.1 | | 13 | 包裹拆线位置定位 | BagThreadPosition | 1.0.0.4 | -| 14 | 工件孔定位 | WorkpieceHole | 1.2.2.2 | +| 14 | 工件孔定位 | WorkpieceHole | 1.2.3.1 | | 15 | 轮胎孔定位 | TireHolePose | 1.0.2.1 | | 16 | 坑孔定位 | HolePitPosition | 无 | -| 17 | 钢筋焊缝定位 | RodWeldSeam | 1.0.0.2 | +| 17 | 钢筋焊缝定位 | RodWeldSeam | 1.0.0.4 | | 18 | 无人机螺杆检测服务端 | DroneScrewServer | 1.0.1.1 | | 19 | 无人机螺杆检测控制端 | DroneScrewCtrlApp | 1.0.1.1 | | 20 | 砂轮盘孔定位 | DiscHolePose | 1.0.0.1 | diff --git a/GrabBagPrj/pkg_authregister.bat b/GrabBagPrj/pkg_authregister.bat index 0cdef729..f1250a8f 100644 --- a/GrabBagPrj/pkg_authregister.bat +++ b/GrabBagPrj/pkg_authregister.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + set PRJ_PATH=%~dp0 set PRJ_PATH=%PRJ_PATH:~0,-1% @@ -12,13 +16,11 @@ powershell -Command "Remove-Item * -Recurse -Force" copy "..\..\build\Tools\AuthRegister\release\AuthRegister.exe" .\ -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "AuthRegister.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "AuthRegister.exe" cd ..\.. -set ISCC_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe - -"%ISCC_PATH%" "AuthRegister.iss" +"%ISCC_PATH%\ISCC.exe" "AuthRegister.iss" echo "finish" diff --git a/GrabBagPrj/pkg_belttearingapp.bat b/GrabBagPrj/pkg_belttearingapp.bat index 46fa89f6..8776fcf3 100644 --- a/GrabBagPrj/pkg_belttearingapp.bat +++ b/GrabBagPrj/pkg_belttearingapp.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + set PRJ_PATH=%~dp0 set PRJ_PATH=%PRJ_PATH:~0,-1% @@ -12,14 +16,12 @@ powershell -Command "Remove-Item * -Recurse -Force" copy "..\..\build\App\BeltTearing\BeltTearingApp\release\BeltTearingApp.exe" .\ -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "BeltTearingApp.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "BeltTearingApp.exe" cd ..\.. -set ISCC_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe - -"%ISCC_PATH%" "BeltTearingApp.iss" +"%ISCC_PATH%\ISCC.exe" "BeltTearingApp.iss" echo "finish" -endlocal \ No newline at end of file +endlocal diff --git a/GrabBagPrj/pkg_binocularMarkTest.bat b/GrabBagPrj/pkg_binocularMarkTest.bat index 2d7a042b..15f7a6e1 100644 --- a/GrabBagPrj/pkg_binocularMarkTest.bat +++ b/GrabBagPrj/pkg_binocularMarkTest.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + set PRJ_PATH=%~dp0 set PRJ_PATH=%PRJ_PATH:~0,-1% @@ -10,14 +14,12 @@ cd /d "%PRJ_PATH%\buildwin\BinocularMarkTest" copy "..\..\build\App\BinocularMark\BinocularMarkTest\release\BinocularMarkTest.exe" .\ -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "BinocularMarkTest.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "BinocularMarkTest.exe" cd ..\.. -set ISCC_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe - -@REM "%ISCC_PATH%" "BeltTearingApp.iss" +@REM "%ISCC_PATH%\ISCC.exe" "BeltTearingApp.iss" echo "finish" -endlocal \ No newline at end of file +endlocal diff --git a/GrabBagPrj/pkg_calibview.bat b/GrabBagPrj/pkg_calibview.bat index 6dd912f0..9236abbc 100644 --- a/GrabBagPrj/pkg_calibview.bat +++ b/GrabBagPrj/pkg_calibview.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + set PRJ_PATH=%~dp0 set PRJ_PATH=%PRJ_PATH:~0,-1% @@ -13,22 +17,19 @@ powershell -Command "Remove-Item * -Recurse -Force" copy "..\..\build\Tools\CalibView\release\CalibView.exe" .\ :: VzNLSDK DLL -copy "..\..\..\SDK\Device\VzNLSDK\Windows\x64\Release\VzKernel.dll" .\ -copy "..\..\..\SDK\Device\VzNLSDK\Windows\x64\Release\VzNLDetect.dll" .\ -copy "..\..\..\SDK\Device\VzNLSDK\Windows\x64\Release\VzNLGraphics.dll" .\ -copy "..\..\..\SDK\Device\VzNLSDK\Windows\x64\Release\VzLog.dll" .\ -copy "..\..\..\SDK\Device\VzNLSDK\Windows\x64\Release\libViEyeApi.dll" .\ +copy "..\..\..\Device\SDK\VzNLSDK\Windows\x64\Release\VzKernel.dll" .\ +copy "..\..\..\Device\SDK\VzNLSDK\Windows\x64\Release\VzNLDetect.dll" .\ +copy "..\..\..\Device\SDK\VzNLSDK\Windows\x64\Release\VzNLGraphics.dll" .\ +copy "..\..\..\Device\SDK\VzNLSDK\Windows\x64\Release\VzLog.dll" .\ :: OpenCV DLL copy "..\..\..\SDK\OpenCV320\Windows\vc14\Release\opencv_world320.dll" .\ -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "CalibView.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "CalibView.exe" cd ..\.. -set ISCC_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe - -"%ISCC_PATH%" "CalibView.iss" +"%ISCC_PATH%\ISCC.exe" "CalibView.iss" echo "finish" diff --git a/GrabBagPrj/pkg_cloudview.bat b/GrabBagPrj/pkg_cloudview.bat index 989b045a..06f753ee 100644 --- a/GrabBagPrj/pkg_cloudview.bat +++ b/GrabBagPrj/pkg_cloudview.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + set PRJ_PATH=%~dp0 set PRJ_PATH=%PRJ_PATH:~0,-1% @@ -12,13 +16,11 @@ powershell -Command "Remove-Item * -Recurse -Force" copy "..\..\build\Utils\CloudView\release\CloudView.exe" .\ -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "CloudView.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "CloudView.exe" cd ..\.. -set ISCC_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe - -"%ISCC_PATH%" "CloudView.iss" +"%ISCC_PATH%\ISCC.exe" "CloudView.iss" echo "finish" diff --git a/GrabBagPrj/pkg_controlapp.bat b/GrabBagPrj/pkg_controlapp.bat index 739a9b7f..b3b7231d 100644 --- a/GrabBagPrj/pkg_controlapp.bat +++ b/GrabBagPrj/pkg_controlapp.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + set PRJ_PATH=%~dp0 set PRJ_PATH=%PRJ_PATH:~0,-1% @@ -12,13 +16,11 @@ powershell -Command "Remove-Item * -Recurse -Force" copy "..\..\build\Tools\ControlApp\release\ControlApp.exe" .\ -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "ControlApp.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "ControlApp.exe" cd ..\.. -set ISCC_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe - -"%ISCC_PATH%" "ControlApp.iss" +"%ISCC_PATH%\ISCC.exe" "ControlApp.iss" echo "finish" diff --git a/GrabBagPrj/pkg_tireholepose.bat b/GrabBagPrj/pkg_tireholepose.bat index bb1cdb1e..7c2c6c3e 100644 --- a/GrabBagPrj/pkg_tireholepose.bat +++ b/GrabBagPrj/pkg_tireholepose.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + set PRJ_PATH=%~dp0 set PRJ_PATH=%PRJ_PATH:~0,-1% @@ -12,13 +16,11 @@ powershell -Command "Remove-Item * -Recurse -Force" copy "..\..\build\App\TireHolePose\TireHolePoseApp\release\TireHolePoseApp.exe" .\ -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "TireHolePoseApp.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "TireHolePoseApp.exe" cd ..\.. -set ISCC_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe - -"%ISCC_PATH%" "TireHolePose.iss" +"%ISCC_PATH%\ISCC.exe" "TireHolePose.iss" echo "finish" diff --git a/GrabBagPrj/pkg_wdremotereceivertest.bat b/GrabBagPrj/pkg_wdremotereceivertest.bat index 9ec34983..1b5de2fd 100644 --- a/GrabBagPrj/pkg_wdremotereceivertest.bat +++ b/GrabBagPrj/pkg_wdremotereceivertest.bat @@ -1,6 +1,10 @@ @echo off setlocal +REM Windows packaging tool directories (system environment variables): +REM QT_PATH=D:\Qt\5.15.2 +REM ISCC_PATH=C:\Program Files\Inno Setup 7 + REM ============================================================ REM WDRemoteReceiver 模块测试工具 - Windows 打包脚本 REM @@ -31,10 +35,10 @@ if errorlevel 1 ( exit /b 1 ) -"C:\tools\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe" "WDRemoteReceiverTest.exe" +"%QT_PATH%\msvc2019_64\bin\windeployqt.exe" "WDRemoteReceiverTest.exe" REM 3) 拷贝 ZeroMQ Runtime -copy "%PRJ_PATH%\..\SDK\ZeroMQ\Windows\x64\Release\libzmq*.dll" .\ +copy "%PRJ_PATH%\..\Nets\SDK\ZeroMQ\Windows\x64\Release\libzmq*.dll" .\ REM 4) 拷贝 Protobuf Runtime(如果需要) REM 5) OpenCV runtime used by WDRemoteReceiver diff --git a/GrabBagPrj/project_registry.sh b/GrabBagPrj/project_registry.sh index fa8a08b3..fc3a449d 100644 --- a/GrabBagPrj/project_registry.sh +++ b/GrabBagPrj/project_registry.sh @@ -98,9 +98,13 @@ DESKTOP_PROJECTS=( extra_copy=${COPY_ALL_BUILD_LIBS},globa|Device/SDK/HCNetSDK/Arm64/lib/*.so*|usr/lib;\ optional_copy=globa|Device/SDK/HCNetSDK/Arm64/lib/HCNetSDKCom/*.so*|usr/lib/HCNetSDKCom" - "ParkingSpaceGuide;none;\ + "ParkingSpaceGuide;planeLocalization;\ + opencv=opencv320;\ + algo_copy=none;\ device_copy=globa|Device/SDK/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/lib/aarch64/*.so*|usr/lib;\ - extra_copy=${COPY_ALL_BUILD_LIBS},globa|SDK/poco/Arm/aarch64/lib/libPocoNet.so*|usr/lib,globa|SDK/poco/Arm/aarch64/lib/libPocoFoundation.so*|usr/lib;\ + ld_conf=/opt/rk3588-ai/lib;\ + package_depends=libc6, libstdc++6;\ + extra_copy=${COPY_ALL_BUILD_LIBS},globa|SDK/poco/Arm/aarch64/lib/libPocoNet.so*|usr/lib,globa|SDK/poco/Arm/aarch64/lib/libPocoFoundation.so*|usr/lib,file|AppAlgo/planeLocalization/Arm/aarch64/libplaneLocalization.so|usr/lib/libplaneLocalization.so,file|AppAlgo/planeLocalization/Arm/aarch64/libbaseAlgorithm.so|usr/lib/libbaseAlgorithm.so,file|AppAlgo/AAPGS_model/lib/libyolo_runtime.so.2|opt/rk3588-ai/lib/libyolo_runtime.so.2,file|AppAlgo/AAPGS_model/lib/libyolo_backend_cls.so|opt/rk3588-ai/lib/libyolo_backend_cls.so,file|AppAlgo/AAPGS_model/lib/librknnrt.so|opt/rk3588-ai/lib/librknnrt.so,file|AppAlgo/AAPGS_model/lib/librga.so|opt/rk3588-ai/lib/librga.so,file|AppAlgo/AAPGS_model/models/model.yaml|opt/rk3588-ai/models/model.yaml,file|AppAlgo/AAPGS_model/models/model.rknn|opt/rk3588-ai/models/model.rknn;\ optional_copy=globa|Device/SDK/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/lib/aarch64/ThirdParty/*.so*|usr/lib" "WorkpiecePosition;binocularMark;\ diff --git a/README.md b/README.md index 3101f0dc..ec2755b8 100644 --- a/README.md +++ b/README.md @@ -6,69 +6,22 @@ ``` GrabBag/ -├── App/ # 应用程序目录 -│ ├── GrabBag/ # 编织袋拆垛应用 -│ ├── BeltTearing/ # 皮带撕裂检测应用 -│ ├── LapWeld/ # 搭接焊缝检测应用 -│ ├── Workpiece/ # 工件定位应用 -│ ├── WorkpieceProject/ # 工件项目(定位+拼接) -│ ├── BinocularMark/ # 双目 Mark 检测应用 -│ ├── ParticleSize/ # 粒度检测应用 -│ ├── TunnelChannel/ # 隧道通道应用 -│ └── WheelMeasure/ # 轮毂测量应用 -│ -├── AppAlgo/ # 算法库 -│ ├── bagPosition/ # 编织袋定位算法 -│ ├── beltTearing/ # 皮带撕裂检测算法 -│ ├── binocularMark/ # 双目 Mark 检测算法 -│ ├── lapWeldDetection/ # 焊缝检测算法 -│ ├── particleSizeMeasure/ # 粒度测量算法 -│ ├── wheelArchHeigthMeasure/ # 轮拱高度测量算法 -│ └── workpieceCornerExtraction/ # 工件角点提取算法 -│ -├── AppUtils/ # 应用公共工具库 -│ ├── AppCommon/ # 应用通用组件(BasePresenter、单例管理等) -│ ├── CloudUtils/ # 点云工具(加载、保存、绘制) -│ └── UICommon/ # UI 公共资源和组件 -│ -├── VrCommon/ # 核心接口和数据结构 -├── VrUtils/ # 通用工具(CRC、INI、JSON、日志、MD5) -├── Nets/ # 网络通信库 -│ ├── VrModbus/ # Modbus TCP 协议 -│ ├── VrTcpClient/ # TCP 客户端 -│ └── VrTcpServer/ # TCP 服务端 -│ -├── Device/ # 设备驱动层 -│ ├── VrEyeDevice/ # VzNL 相机设备封装 -│ ├── EpicEyeDevice/ # EpicEye 相机设备 -│ ├── GalaxyDevice/ # 大恒相机设备 -│ ├── IKapDevice/ # IKap 采集卡设备 -│ └── HikDevice/ # 海康相机设备 -│ -├── Module/ # 功能模块 -│ ├── ShareMem/ # 共享内存模块 -│ ├── ModbusTCPServer/ # Modbus TCP 服务端 -│ ├── ModbusTCPClient/ # Modbus TCP 客户端 -│ ├── ThreadPool/ # 线程池 -│ └── BinocularMarkReceiver/ # 双目 Mark 接收模块 -│ -├── SDK/ # 第三方 SDK -│ ├── Device/ # 相机/设备 SDK -│ │ ├── VzNLSDK/ # VzNL 激光线扫相机 SDK -│ │ ├── Galaxy/ # 大恒相机 SDK -│ │ ├── EpicEye/ # EpicEye 相机 SDK -│ │ ├── GenICam/ # GenICam 相机标准库 -│ │ ├── IKapLibrary/ # IKap 采集卡 SDK -│ │ └── HCNetSDK/ # 海康 SDK -│ ├── OpenCV320/ # OpenCV 3.2.0(ARM aarch64) -│ ├── OpenCV480/ # OpenCV 4.8.0(ARM aarch64) -│ └── eigen-3.3.9/ # Eigen 线性代数库 -│ -├── GrabBagPrj/ # 项目构建配置 -├── Test/ # 测试代码 +├── 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/ # 测试数据 -├── Tools/ # 调试工具 -└── Publish/ # 发布构建产物 +├── ARMDoc/ # ARM 设备相关文档和图片 +├── ARMLable/ # ARM 出库标签模板与资料 +└── Publish/ # 发布安装包与构建产物 ``` ## 应用程序说明 @@ -82,10 +35,10 @@ GrabBag/ | 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 输出检测结果 | +| 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**:用于与机器人/上位机通信的自定义协议 @@ -95,9 +48,13 @@ GrabBag/ ## 构建说明 ### 环境要求 + - 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