8.9 KiB
8.9 KiB
CLAUDE.md
前置指令
- XAML 文件可以直接更改 — 使用 Edit 工具直接修改
.xaml文件 - CS 文件有 TSM 加密 —
.cs文件在本地是加密的,无法直接读取或编辑。需要通过git show HEAD:path获取内容。但注意:有时最新的 CS 文件还未提交到 git,此时可以让用户直接提供最新的 CS 文件内容 - 所有回复使用中文 — 所有与用户的交流、注释说明等均使用中文
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. 整体对位验证(对位流程)
整体对位流程为:
- 飞拍获取die的下相机X2,Y2坐标,X1坐标固定(上相机die运动系X2,Y1),转换为X1,Y1坐标
- Pad定位mark获取X1,Y2坐标,Y1坐标固定(上相机pad运动系X1,Y2),即转化为X1,Y1坐标
- 通过查找die融合表将die X方向对齐pad(此时Y1会产生少许偏移)
- 再根据此时Y1值,将pad Y方向对齐die(X1会产生少许偏移)
- 此时再移动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()- 保存标定数据