添加 MX-PD-盘古 项目文件

将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
Shi.Ji
2026-05-18 11:43:09 +08:00
parent 03632a379d
commit e31d3560bb
739 changed files with 99783 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
# 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()` - 保存标定数据