GrabBag/Tools/VrEyeView/README.md
2026-02-18 15:11:41 +08:00

147 lines
4.0 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.

# VrEyeView 使用说明
## 功能概述
VrEyeView 是一个相机图像查看与标定板检测工具,用于:
- 实时显示相机图像
- 检测标定板角点
- 计算标定板位姿(位置和姿态)
- 将检测结果回调给 CalibView 作为相机坐标
## 快速开始
### 1. 独立运行 VrEyeView
```bash
# Windows
cd Tools/VrEyeView
VrEyeView.exe
# Linux
cd Tools/VrEyeView
./VrEyeView
```
### 2. 在 CalibView 中使用
1. 启动 CalibView
2. 菜单栏 -> 工具 -> 相机标定板检测
3. VrEyeView 窗口会打开
## 操作步骤
### 步骤 1: 连接相机
1. 输入相机 IP 地址(默认: 192.168.1.100
2. 点击"连接"按钮
3. 等待连接成功,状态显示"已连接"
### 步骤 2: 配置相机参数
- **曝光**: 调整曝光时间100-10000默认 1000
- **增益**: 调整增益值0-255默认 100
### 步骤 3: 配置标定板参数
- **内角点宽度**: 标定板内部角点的列数(默认 9
- **内角点高度**: 标定板内部角点的行数(默认 6
- **格子大小**: 标定板每个格子的边长,单位 mm默认 30.0
> **注意**: 内角点数量 = 格子数量 - 1
> 例如10x7 的格子标定板,内角点为 9x6
### 步骤 4: 配置相机内参
相机内参需要提前标定,或使用默认值:
- **fx**: 焦距 x默认 1000.0
- **fy**: 焦距 y默认 1000.0
- **cx**: 主点 x默认 640.0
- **cy**: 主点 y默认 480.0
### 步骤 5: 开始采集
1. 点击"开始采集"按钮
2. 图像会实时显示在窗口中
3. 状态显示"采集中"
### 步骤 6: 检测标定板
**手动检测**:
1. 将标定板放置在相机视野内
2. 点击"检测标定板"按钮
3. 如果检测成功,角点会以绿色圆圈标记在图像上
4. 检测结果显示在界面底部
**自动检测**:
1. 勾选"自动检测"复选框
2. 每次获取新图像时会自动检测标定板
3. 检测成功后自动回调到 CalibView
### 步骤 7: 查看检测结果
检测成功后,界面会显示:
```
检测结果: 位置(x, y, z) 姿态(rx°, ry°, rz°)
```
- **位置**: 标定板中心在相机坐标系下的坐标单位mm
- **姿态**: 标定板的欧拉角(单位:度)
## 检测选项
- **自适应阈值**: 使用自适应阈值算法,提高不同光照条件下的检测率
- **归一化图像**: 对图像进行归一化处理,提高检测稳定性
- **自动检测**: 每次获取新图像时自动检测标定板
## 与 CalibView 集成
当在 CalibView 中打开 VrEyeView 时:
1. 检测到标定板后,结果会自动回调到 CalibView
2. 标定板的位置和姿态会自动填充到 CalibView 的相机坐标输入框
3. 可以配合机器人控制工具RobotView进行手眼标定
### 手眼标定流程
1. 在 CalibView 中选择标定模式Eye-To-Hand 或 Eye-In-Hand
2. 打开 VrEyeView 和 RobotView
3. 移动机器人到不同位置
4. 在每个位置:
- RobotView 获取机器人位姿 -> 自动填充到 CalibView
- VrEyeView 检测标定板 -> 自动填充到 CalibView
- 点击"添加"按钮添加数据点
5. 收集足够数据点后(建议 10 组以上)
6. 点击"标定"按钮执行标定
## 技术参数
- **支持的图像格式**: RGB3 通道)
- **标定板类型**: 棋盘格标定板
- **内角点范围**: 2-20 x 2-20
- **格子大小范围**: 1-100 mm
- **位姿计算方法**: OpenCV solvePnP (ITERATIVE)
- **角点精细化**: 亚像素级别11x11 窗口)
## 开发接口
如果需要在其他程序中使用 VrEyeView
```cpp
#include "VrEyeViewWidget.h"
// 创建窗口
VrEyeViewWidget* viewer = new VrEyeViewWidget();
// 设置回调
viewer->SetDetectionCallback([](const ChessboardDetectionData& data) {
if (data.detected) {
// 处理检测结果
qDebug() << "位置:" << data.x << data.y << data.z;
qDebug() << "姿态:" << data.rx << data.ry << data.rz;
}
});
// 显示窗口
viewer->show();
```