172 lines
8.9 KiB
Markdown
172 lines
8.9 KiB
Markdown
|
|
# CLAUDE.md
|
|||
|
|
|
|||
|
|
## 前置指令
|
|||
|
|
|
|||
|
|
1. **XAML 文件可以直接更改** — 使用 Edit 工具直接修改 `.xaml` 文件
|
|||
|
|
2. **CS 文件有 TSM 加密** — `.cs` 文件在本地是加密的,无法直接读取或编辑。需要通过 `git show HEAD:path` 获取内容。但注意:有时最新的 CS 文件还未提交到 git,此时可以让用户直接提供最新的 CS 文件内容
|
|||
|
|
3. **所有回复使用中文** — 所有与用户的交流、注释说明等均使用中文
|
|||
|
|
|
|||
|
|
## PageCalib 目录结构
|
|||
|
|
|
|||
|
|
PageCalib 是标定页面模块,采用 MVVM 架构,包含 8 个标定子模块。主入口通过 `PageCalibView.xaml` + `PageCalibViewModel.cs` 管理导航。
|
|||
|
|
|
|||
|
|
### 目录组织
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
PageCalib/
|
|||
|
|
├── View/ # 主视图
|
|||
|
|
│ ├── PageCalibView.xaml # 主页面,使用 SideMenu 导航
|
|||
|
|
│ └── PageCalibView.xaml.cs
|
|||
|
|
├── ViewModel/ # 主视图模型
|
|||
|
|
│ └── PageCalibViewModel.cs # 管理 8 个标定子模块导航
|
|||
|
|
├── HeightMeasure/ # 高度标定模块
|
|||
|
|
│ ├── Model/ # HeightBaseSetting, IHeightMeasure, DiastimeterHeightMeasure
|
|||
|
|
│ ├── Service/ # HeightMeasureMotionService
|
|||
|
|
│ ├── View/ # HeightView.xaml
|
|||
|
|
│ └── ViewModel/ # HeightViewModel
|
|||
|
|
├── OriginCalib/ # 原点标定模块
|
|||
|
|
│ ├── Model/ # OriginCalibSetting
|
|||
|
|
│ ├── Service/ # ICalibrationPostProcessor, OriginCalibrationMotionService, CalibrationPostProcessors
|
|||
|
|
│ ├── View/ # OriginCalibView.xaml
|
|||
|
|
│ └── ViewModel/ # OriginCalibViewModel, OriginCalibModuleViewModel, AvoidanceAxisViewModel, CalibrationAxisViewModel
|
|||
|
|
└── AlgorithmCalib/ # 算法标定模块(包含多个子模块)
|
|||
|
|
├── Common/ # 公共接口和结果类
|
|||
|
|
│ ├── IAlgorithmCalibModule.cs
|
|||
|
|
│ ├── AlgorithmCalibResult.cs
|
|||
|
|
│ └── CalibrationProgressEventArgs.cs
|
|||
|
|
├── Model/ # 参数模型
|
|||
|
|
│ ├── AlgorithmCalibModuleNames.cs
|
|||
|
|
│ ├── FusionCalibParItem.cs
|
|||
|
|
│ ├── RotateCalibParItem.cs
|
|||
|
|
│ └── FusionCalib/ # FusionCalibSetting, FusionCalibModuleItem
|
|||
|
|
├── Task/ # 标定任务
|
|||
|
|
│ ├── RotateFormCalibTask.cs
|
|||
|
|
│ └── FusionCalibTask.cs
|
|||
|
|
├── View/ # 各子模块视图
|
|||
|
|
│ ├── PixRatioCalib/ # 像素比标定
|
|||
|
|
│ ├── DistortionCorrectionCalib/ # 畸变校正标定
|
|||
|
|
│ ├── RotateCenterCalib/ # 旋转中心标定
|
|||
|
|
│ ├── RotateMatixFormCalib/ # 旋转表标定
|
|||
|
|
│ ├── MotionCalib/ # 运动系标定
|
|||
|
|
│ └── FusionCalib/ # 融合标定(Die/Pad)
|
|||
|
|
├── ViewModel/ # 各子模块视图模型
|
|||
|
|
│ ├── PixRatioCalib/
|
|||
|
|
│ ├── DistortionCorrectionCalib/
|
|||
|
|
│ ├── RotateCenterCalib/
|
|||
|
|
│ ├── RotateMatixFormCalib/
|
|||
|
|
│ ├── MotionCalib/
|
|||
|
|
│ └── FusionCalib/
|
|||
|
|
└── Service/ # 各子模块服务
|
|||
|
|
├── RotateFormCalib/ # RotateMatixFormCalibMotionService, FileService, PostProcessor
|
|||
|
|
├── MotionCalib/ # MotionCalibFileService
|
|||
|
|
└── FusionCalib/ # FusionCalibMotionService, PostProcessor, FusionAlignProcessor
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 标定子模块列表
|
|||
|
|
|
|||
|
|
| 模块名称 | 中文名 | 主 ViewModel | 说明 |
|
|||
|
|
|---------|--------|-------------|------|
|
|||
|
|
| HeightMeasure | 高度标定 | HeightViewModel | 测高标定,包含产品和方片高度测量 |
|
|||
|
|
| OriginCalib | 原点标定 | OriginCalibViewModel | 原点位置标定 |
|
|||
|
|
| PixRatioCalib | 像素比标定 | PixRatioCalibContentsViewModel | 相机像素比例标定 |
|
|||
|
|
| DistortionCorrectionCalib | 畸变校准标定 | DistortionCorrectionCalibContentsViewModel | 相机畸变校正 |
|
|||
|
|
| MotionCalib | 运动系标定 | MotionCalibContentsViewModel | 运动系统标定 |
|
|||
|
|
| RotateCenterCalib | 旋转中心标定 | RotateCenterCalibContentsViewModel | 旋转中心位置标定 |
|
|||
|
|
| RotateFormCalib | 旋转表标定 | RotateMatixFormCalibViewModel | 旋转矩阵表标定 |
|
|||
|
|
| FusionCalib | 融合标定 | FusionCalibViewModel | Die/Pad 融合标定 |
|
|||
|
|
|
|||
|
|
### 通用 UI 模式
|
|||
|
|
|
|||
|
|
算法标定子模块(PixRatio、DistortionCorrection、RotateCenter、MotionCalib、FusionCalib)采用统一的 ContentsView 布局:
|
|||
|
|
- 顶部:当前标定名称 + 进度文本
|
|||
|
|
- 中间:ContentControl 绑定 ShowScreenVM 显示具体内容
|
|||
|
|
- 底部:上一个/下一个导航按钮
|
|||
|
|
|
|||
|
|
旋转表标定(RotateMatixFormCalib)采用卡片式布局:
|
|||
|
|
- 左侧:相机预览
|
|||
|
|
- 右侧:模块卡片(避让位置、标定参数、验证参数、进度条、操作按钮)
|
|||
|
|
|
|||
|
|
## 融合标定需求与实现
|
|||
|
|
|
|||
|
|
### 轴映射关系
|
|||
|
|
|
|||
|
|
| 项目 | WS轴(Wafer轴) | PHS轴(Pad轴) |
|
|||
|
|
|------|-----------------|----------------|
|
|||
|
|
| 旧项目 | X2, Y2 | X1, Y1 |
|
|||
|
|
| 新项目 | X2, Y1 | X1, Y2 |
|
|||
|
|
|
|||
|
|
### 融合标定流程
|
|||
|
|
|
|||
|
|
#### 1. Die融合标定(ws圆形标定融合)
|
|||
|
|
在X1全行程不同位置,标定建立X2,Y1的die融合表,用于对位晶粒。
|
|||
|
|
|
|||
|
|
**标定方法:**
|
|||
|
|
- 在die运动系下(固定X1),移动X2,Y1扫描获取N×N点阵,作为初始位置
|
|||
|
|
- 选取X2负限位位置附近设置起始位置,将X1,X2平移相同距离移动到起始位置
|
|||
|
|
- 设定标定范围、标定间隔,扫描一系列N×N点阵,保存为die融合位置表
|
|||
|
|
|
|||
|
|
**验证方法:**
|
|||
|
|
- 在die运动系下飞拍任意坐标
|
|||
|
|
- 再选取任意X1位置,使用融合位置表计算出任意坐标移动到该X1位置下的X2,Y1坐标
|
|||
|
|
- 同时获取到在该X1位置下实际逼近的X2,Y1坐标
|
|||
|
|
- 输出即为标定误差,可选择若干位置覆盖测试全行程误差
|
|||
|
|
|
|||
|
|
#### 2. Pad融合标定(stage拼接融合)
|
|||
|
|
在Y1全行程不同位置,建立X1,Y2的pad融合表,用于对位pad。
|
|||
|
|
|
|||
|
|
**标定方法:**
|
|||
|
|
- 在pad运动系下(固定Y1),移动X1,Y2扫描获取N×N点阵,作为初始位置
|
|||
|
|
- 选取Y2负限位位置附近设置起始位置,将Y1,Y2平移相同距离移动到起始位置
|
|||
|
|
- 设立标定范围、标定间隔,扫描一系列N×N点阵,保存为pad融合位置表
|
|||
|
|
|
|||
|
|
**验证方法:**
|
|||
|
|
- 在pad运动系下飞拍任意坐标
|
|||
|
|
- 再选取任意Y1位置,使用融合位置表计算出任意坐标移动到该Y1位置下的X1,Y2坐标
|
|||
|
|
- 同时获取到在该Y1位置下实际逼近的X1,Y2坐标
|
|||
|
|
- 输出即为标定误差,可选择若干位置覆盖测试全行程误差
|
|||
|
|
|
|||
|
|
#### 3. 整体对位验证(对位流程)
|
|||
|
|
整体对位流程为:
|
|||
|
|
1. 飞拍获取die的下相机X2,Y2坐标,X1坐标固定(上相机die运动系X2,Y1),转换为X1,Y1坐标
|
|||
|
|
2. Pad定位mark获取X1,Y2坐标,Y1坐标固定(上相机pad运动系X1,Y2),即转化为X1,Y1坐标
|
|||
|
|
3. 通过查找die融合表将die X方向对齐pad(此时Y1会产生少许偏移)
|
|||
|
|
4. 再根据此时Y1值,将pad Y方向对齐die(X1会产生少许偏移)
|
|||
|
|
5. 此时再移动X2跟上X1的移动量(此处直接移动或查表再移动)
|
|||
|
|
|
|||
|
|
### 新项目融合标定文件结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
AlgorithmCalib/
|
|||
|
|
├── View/FusionCalib/
|
|||
|
|
│ ├── DieFusionCalibView.xaml # Die融合标定视图(标定+验证Tab)
|
|||
|
|
│ ├── PadFusionCalibView.xaml # Pad融合标定视图(标定+验证Tab)
|
|||
|
|
│ └── FusionAlignVerifyView.xaml # 整体对位验证视图(4步骤流程)
|
|||
|
|
├── ViewModel/FusionCalib/
|
|||
|
|
│ ├── FusionCalibViewModel.cs # Die/Pad融合标定共用ViewModel
|
|||
|
|
│ ├── FusionAlignVerifyViewModel.cs # 整体对位验证ViewModel
|
|||
|
|
│ └── FusionMultipleCalibViewModel.cs # 多模块融合标定ViewModel
|
|||
|
|
├── Service/FusionCalib/
|
|||
|
|
│ ├── FusionCalibMotionService.cs # 融合标定运动服务
|
|||
|
|
│ ├── FusionCalibPostProcessor.cs # 融合标定后处理器
|
|||
|
|
│ └── FusionAlignProcessor.cs # 对位处理器
|
|||
|
|
└── Model/FusionCalib/
|
|||
|
|
├── FusionCalibSetting.cs # 融合标定设置
|
|||
|
|
└── FusionCalibModuleItem.cs # 融合标定模块参数
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 旧项目参考文件
|
|||
|
|
|
|||
|
|
旧项目融合标定参考文件位于 `AlgorithmCalib/Old_fusionCalib/` 目录:
|
|||
|
|
- `oldProjectDetail.xaml` - 旧项目融合标定流程说明
|
|||
|
|
- `newProjectVisionDemand.xaml` - 新项目需求说明
|
|||
|
|
- `CameraFusionCali02AViewModel.xaml` - 旧项目ViewModel实现(CS内容)
|
|||
|
|
- `CameraFusionCalibrationMotion02A.xaml` - 旧项目Motion实现(CS内容)
|
|||
|
|
|
|||
|
|
### 关键API调用
|
|||
|
|
|
|||
|
|
旧项目使用的JM1Vision API:
|
|||
|
|
- `JM1Manager.Instance.cal_wafer_fusion()` - 计算wafer融合表
|
|||
|
|
- `JM1Manager.Instance.get_ws_pos()` - 根据融合表查询WS位置
|
|||
|
|
- `JM1Manager.Instance.pos_verify()` - 验证标定精度
|
|||
|
|
- `JM1Manager.Instance.Save()` - 保存标定数据
|