agentleFS
grasscaograssgrasscaograss/AwesomeWeldoneSkills/coarse-compensation-fit/SKILL.md

coarse-compensation-fit

Skill2 starsChanged 6 months agoApache-2.0View on GitHub

读取粗定位点云点与世界点对照数据,分析误差模式,并拟合适用于当前粗定位链路的补偿参数。用于:根据更多标定点更新粗定位补偿;比较单一刚体矩阵、位置相关旋转+平移、线性仿射等方案;输出可直接写入配置的参数;解释每个参数的物理含义和现场调试方式。当用户说”重新计算粗定位补偿””用更多点更新补偿””拟合龙门补偿””分析点云点和世界点误差””更新当前矩阵/参数”时使用。

The file

Files
SKILL.md

粗定位补偿拟合

目标

根据点云点与世界点对照数据,拟合适合当前项目的粗定位补偿参数,并给出:

  • 推荐补偿模型
  • 配置参数
  • 参数含义
  • 误差统计
  • 外推稳定性分析

当前项目补偿链路

当前粗定位链路:

  1. 相机原始结果
  2. VisionPositionCompensation:相机坐标系 → 世界坐标系
  3. GantryQuadraticCorrection:龙门补偿(当前代码里实际是位置相关旋转+平移的 9 参数模型)

当前代码模型位于:

  • src/Weldone.Application/Coarse/GeneralCoarsePositioningAppService.cs
  • src/Weldone.Domain/Settings/CoarseVisionSetting.cs

当前 GantryQuadraticCorrection 的 9 参数含义:

  • [0] a0: 旋转角基准值(rad)
  • [1] a1: 旋转角随X变化的斜率(rad/mm)
  • [2] a2: 旋转角随Y变化的斜率(rad/mm)
  • [3] b0: X平移基准值(mm)
  • [4] b1: X平移随X变化的斜率
  • [5] c0: Y平移基准值(mm)
  • [6] c1: Y平移随X变化的斜率
  • [7] c2: Y平移随Y变化的斜率
  • [8] dz: Z平移常量(mm)

补偿公式:

theta(x,y) = a0 + a1*x + a2*y
tx(x)      = b0 + b1*x
ty(x,y)    = c0 + c1*x + c2*y
z'         = z + dz

补偿矩阵:

Rz(theta) + [tx, ty, dz]

输入数据格式

优先读取用户提供的桌面文本文件,常见格式:

实际位置:
P1:  x, y, z
...

点云中的点:
P1:  x, y, z
...

或:

点云变换点1: x,y,z
世界点1: x,y,z

需要保证点号一一对应。

工作流程

第一步:读取数据

读取用户提供的文件,提取:

  • 点云点 P[i]
  • 世界点 W[i]

第二步:基础诊断

必须先做以下分析:

  1. 逐点误差:d = W - P
  2. 误差分布:按 X 区域看 dX/dY/dZ
  3. 距离一致性检查:任意点对的 cloud_dist / world_dist 比值范围

判断原则:

  • 如果距离比例严重异常(如 0.2、0.5 这类极端值),先提醒用户数据可能混了不同坐标系或异常点
  • 如果距离比例稳定(如 0.9~1.02),可以进入拟合

第三步:至少比较以下三种模型

A. 单一刚体矩阵

误差模型:

dx = -theta*y + tx
dy =  theta*x + ty
dz = 常量

输出:

  • theta (deg)
  • tx, ty, dz
  • 等效 4x4 矩阵
  • mean / max error

B. 位置相关旋转+平移(当前推荐模型)

误差模型:

theta(x,y) = a0 + a1*x + a2*y
tx(x)      = b0 + b1*x
ty(x,y)    = c0 + c1*x + c2*y

输出:

  • 9 个参数
  • 每个参数物理含义
  • mean / max error
  • 外推合理性(是否发散)

C. 线性仿射矩阵

矩阵元素随位置线性变化,用于和 B 对比。 如果 B 明显更好,优先推荐 B。

第四步:做外推稳定性测试

必须用一个“超出训练范围”的测试点做外推检查,例如用户当前关心的点,或者自己选一个边界外点。

检查内容:

  • 输出位置偏移是否离谱
  • 矩阵元素是否仍接近合理范围(对仿射模型)
  • 是否存在明显发散

原则:

  • 精度略高但外推会爆炸的模型,不推荐
  • 精度略低但稳定的模型,更适合现场使用

第五步:给结论

结论必须包含:

  1. 推荐哪个模型
  2. 为什么推荐
  3. 参数列表
  4. 参数含义(尤其要说明工人主要调哪些参数)
  5. 如果需要,给出建议写入 CoarseVisionSetting.json 的数组

输出模板

推荐模型

  • 模型名:
  • 原因:

误差对比

  • A:mean / max
  • B:mean / max
  • C:mean / max

推荐参数

[a0, a1, a2, b0, b1, c0, c1, c2, dz]

参数含义

  • a0:整体旋转偏移,现场优先调
  • b0:整体 X 偏移,现场优先调
  • c0:整体 Y 偏移,现场优先调
  • dz:整体 Z 偏移,现场优先调
  • a1/a2/b1/c1/c2:位置相关修正,通常标定后固定

注意事项

  • 优先复用当前项目的补偿思路,不要默认切回二次多项式
  • 如果用户要求“方便工人调”,优先推荐少参数、物理含义清晰的模型
  • 如果用户要求“精度最高”,也要同时报告外推风险
  • 不要直接修改代码,除非用户明确要求
  • 如果用户要把结果写进 config,再去更新桌面上的 CoarseVisionSetting.json

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.