Files
d330viewer/README.md

287 lines
7.9 KiB
Markdown
Raw Permalink 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.
# D330Viewer - D330M深度相机控制系统
## 项目简介
D330Viewer 是一个基于Qt6的深度相机控制和可视化系统用于D330M深度相机的实时数据采集、处理和显示。系统采用OpenCL GPU加速进行点云计算支持实时显示深度图像和3D点云。
## 技术栈
### 核心库版本
- **Qt6**: 6.10.1 (msvc2022_64)
- **PCL**: 1.15.1 (Point Cloud Library)
- **OpenCV**: 4.13.0
- **OpenCL**: 3.0 (GPU加速)
- **DkamSDK**: 1.6.83 (D330M相机SDK)
### 开发环境
- **操作系统**: Windows 10/11 (64位)
- **编译器**: Visual Studio 2026 (MSVC)
- **构建工具**: CMake 3.15+
- **GPU**: 支持OpenCL的GPUNVIDIA/AMD/Intel
## 快速开始
### 1. 环境准备
确保已安装以下软件:
- Visual Studio 2022 以上包含C++桌面开发工作负载)
- CMake 3.15或更高版本
- 支持OpenCL的GPU驱动
### 2. 库依赖安装
**必需的库**
- Qt6 6.10.1 (msvc2022_64)
- PCL 1.15.1
- OpenCV 4.13.0
- OpenCL 3.0通常随GPU驱动自动安装
**安装路径**(默认):
- Qt6: `C:\Qt\6.10.1\msvc2022_64`
- PCL: `C:\Program Files\PCL 1.15.1`
- OpenCV: `C:\opencv\build`
### 3. 配置项目
**方式1使用配置脚本推荐**
```bash
# 需根据本地情况修改库路径编辑configure.bat
configure.bat
```
**方式2手动配置**
```bash
cmake -B build -S . ^
-G "Visual Studio 18 2026" ^
-A x64 ^
-DPCL_DIR="C:/Program Files/PCL 1.15.1/cmake" ^
-DOpenCV_DIR="C:/opencv/build" ^
-DCMAKE_PREFIX_PATH="C:/Qt/6.10.1/msvc2022_64"
```
**注意**
- 如果系统安装了VS 2022可使用 `-G "Visual Studio 17 2022"`
### 4. 编译项目
```bash
# Release版本推荐
cmake --build build --config Release
# Debug版本 需自行复制Debug版本库文件
cmake --build build --config Debug
```
编译输出:
- Release: `bin/D330Viewer.exe`
- Debug: `bin/Debug/D330Viewer.exe`
### 5. 运行程序
```bash
cd bin
D330Viewer.exe
```
**注意**首次运行需要确保所有DLL文件都在bin目录下。
### 6. 生成MSI安装程序可选
项目支持生成Windows MSI安装程序方便在其他电脑上部署。
**前置要求**:需要安装 WiX Toolset v3.x
**安装WiX Toolset**
1. 访问 GitHub Release 页面https://github.com/wixtoolset/wix3/releases
2. 下载最新版本的安装包:
- `wix3xx-binaries.zip`
-`wix3xx.exe`
3. 如果下载zip文件
- 解压到 `C:\Program Files (x86)\WiX Toolset v3.14\`
- 添加bin目录到系统PATH`C:\Program Files (x86)\WiX Toolset v3.14\bin`
4. 如果下载exe文件
- 直接运行安装程序安装后会自动添加到PATH
**验证安装**
```bash
candle.exe -?
```
**生成MSI安装程序**
```bash
# 编译完成后在build目录运行
cd build
cpack -G WIX -C Release
```
生成的安装程序:`build/D330Viewer-0.1.0-win64.msi`
**MSI安装程序包含**
- D330Viewer.exe主程序
- 所有必需的DLL
- Qt平台插件platforms目录
- 开始菜单快捷方式
- 桌面快捷方式
- 卸载程序快捷方式(开始菜单)
**安装目录结构**
```
C:\Program Files\D330Viewer\
├── D330Viewer.exe # 主程序
├── *.dll # 所有依赖库
└── platforms\ # Qt平台插件
└── qwindows.dll
```
**快捷方式**
- 桌面D330Viewer卸载时自动删除
- 开始菜单D330Viewer 文件夹
- D330Viewer启动程序
- 卸载 D330Viewer卸载程序
## 功能特性
### ✅ 已完成功能
#### 网络通信
- ✅ UDP网络通信GVSP协议解析
- ✅ 自动设备扫描和发现
- ✅ 相机连接管理(连接/断开)
- ✅ 命令发送START/STOP
#### 可视化
- ✅ 实时左红外、右红外相机图像显示
- ✅ 实时RGB相机图像显示
- ✅ 实时3D点云显示自定义OpenGL渲染
- ✅ 正交投影视角(平面视图)
- ✅ 交互式点云操作:
- 左键拖动:旋转视角
- 右键拖动:平移
- 滚轮缩放范围100-10000
#### 用户界面
- ✅ Qt6 GUI主窗口三栏布局
- ✅ 相机控制面板START/STOP按钮
- ✅ 曝光时间调节滑块范围460-100000μs
- ✅ 网络配置IP地址、端口设置
- ✅ 连接状态指示
- ✅ 配置持久化QSettings
- ✅ 点云颜色映射(深度着色)
- ✅ 多视角预设(正视、侧视、俯视)
### 🚧 当前开发计划
根据需求文档和用户反馈,后续待添加功能如下:
- 录制功能(连续保存多帧)
- 点云滤波选项(降噪、平滑)
- 测量工具(距离、角度测量)
- 性能监控CPU/GPU使用率、内存使用
- 其他相机参数调节(增益、白平衡等)
## 项目结构
```
d330viewer/
├── src/ # 源代码
│ ├── main.cpp # 程序入口
│ ├── gui/ # GUI相关
│ │ ├── MainWindow.cpp # 主窗口
│ │ ├── PointCloudWidget.cpp # 点云显示组件
│ │ └── PointCloudGLWidget.cpp # OpenGL点云渲染
│ ├── core/ # 核心功能
│ │ ├── NetworkManager.cpp # 网络通信
│ │ ├── GVSPParser.cpp # GVSP协议解析
│ │ ├── PointCloudProcessor.cpp # OpenCL点云计算
│ │ └── DeviceScanner.cpp # 设备扫描
│ └── config/ # 配置管理
│ └── ConfigManager.cpp # 配置持久化
├── include/ # 头文件
│ ├── gui/ # GUI头文件
│ └── core/ # 核心功能头文件
├── bin/ # 可执行文件和DLL
│ ├── D330Viewer.exe # 主程序
│ └── *.dll # 依赖库
├── build/ # CMake构建目录
├── CMakeLists.txt # CMake配置
├── configure.bat # 快速配置脚本
└── README.md # 本文件
```
## 相机配置
### 硬件信息
- **相机型号**: D330M
- **控制端口**: 6790 (UDP)
- **数据端口**: 3957 (UDP)
- **分辨率**: 1224 x 1024
- **深度范围**: 155mm - 3000mm
### 网络配置
确保PC和相机在同一网段即可。
### 相机参数
- **曝光时间**: 460 - 100000 μs
- **Z缩放因子**: 0.2 (深度值需除以5)
- **相机内参**:
- fx = 1432.8957
- fy = 1432.6590
- cx = 637.5117
- cy = 521.8720
### 下位机程序修改
下位机程序保存在`/root/msk/20260113/` 。具体安装和使用详见根目录内`INSTALL.md`文件。当前版本程序修改功能如下:
- 添加`DISCOVER`命令允许上位机对相机进行自动扫描。保持上位机下位机均DHCP能够正常使用。
- 将程序添加到系统服务中,可以使用`systemctl`进行运行和管理
## 使用说明
### 基本操作流程
1. **启动程序**
- 运行 `bin/D330Viewer.exe`
- 程序会自动扫描网络中的D330M相机
2. **连接相机**
- 在设备列表中选择相机
- 点击"连接"按钮
- 状态指示变为绿色"已连接"
3. **开始采集**
- 点击"启动"按钮开始实时采集
- 深度图显示在中间区域
- 点云显示在右侧区域
4. **调整参数**
- 拖动曝光滑块调整曝光时间
- 使用鼠标操作点云视角
5. **停止采集**
- 点击"停止"按钮停止采集
### 点云交互操作
- **旋转视角**: 左键拖动
- **平移**: 右键拖动
- **缩放**: 滚轮上下滚动
- **复位**: 重新启动采集
## 故障排除
### 常见问题
#### 1. 无法接收数据
**问题**: 点击"启动"后没有图像和点云显示
**解决方案**:
- 图像在长时间传输后有概率卡住,不相应任何命令,具体可监控下位机日志。重启系统服务即可解决。
## 开发文档
### 代码规范
- 使用Qt6信号槽机制进行模块间通信
- OpenCL kernel代码内联在C++源文件中
- 配置使用QSettings持久化
- 日志输出到 `bin/d330viewer.log`