# 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()` - 保存标定数据