Files
test_demo/MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/CLAUDE.md
Shi.Ji e31d3560bb 添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
2026-05-18 11:43:09 +08:00

172 lines
8.9 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.
# 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方向对齐dieX1会产生少许偏移
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()` - 保存标定数据