You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PCB旋转后基于参考点的引脚位置测量值不一致问题求助

PCB旋转后基于参考点的引脚位置测量值不一致问题求助

看起来你现在的核心问题是坐标系转换逻辑没对准PCB的真实旋转中心,而且旋转角度的计算方法也有偏差,导致同一引脚在PCB旋转后得到的测量值不一致。我来帮你拆解一下问题和解决思路:

你之前方法的核心问题

  1. 错误选择了坐标系原点:你把白色方块作为坐标系原点,但PCB的旋转中心是它自己的几何中心,不是白色方块。这就导致旋转后,引脚相对于白方块的位置必然会变化——因为旋转是绕PCB中心转的,白方块和引脚到旋转中心的距离、角度都不一样,它们的相对位置肯定会变,所以用白方块做原点测出来的数值自然不一致。
  2. 旋转角计算逻辑错误:你用白方块到静态点的斜率差来算旋转角,这个方法根本不对。因为PCB不仅有旋转,还有平移,白方块到静态点的斜率变化是平移+旋转共同作用的结果,不是单纯的PCB旋转角度,用这个角度去校正肯定会出错。

正确的解决思路:将所有点转换到PCB本地坐标系

我们的目标是:不管PCB在支架上怎么平移、旋转,都把图像中的坐标转换到以PCB几何中心为原点的固定本地坐标系里,这样同一引脚的坐标在这个本地坐标系里是固定的(除非引脚弯曲)。具体步骤如下:

第一步:先建立基准(无旋转的PCB图像)

在PCB没有旋转的基准图里,先记录三个关键坐标:

  • 白色方块的基准坐标 W₀ (xw₀, yw₀)(就是你第一张图里的(575.39, 981.55))
  • PCB几何中心的基准坐标 C₀ (xc₀, yc₀)(你需要在基准图里测量出来,比如找PCB的四个角计算中心,或者用其他固定标记定位)
  • 目标引脚的基准坐标 P₀ (xp₀, yp₀)(第一张图里的(63.63, 2347.62))

第二步:对旋转/平移后的PCB图像做坐标转换

拿到任意一张旋转后的PCB图后,按以下步骤处理:

  1. 检测当前关键点坐标:找到白色方块的当前坐标 W₁ (xw₁, yw₁)(第二张图里的(565.7, 1013.43)),以及当前引脚的坐标 P₁ (xp₁, yp₁)(第二张图里的(76.18, 2389.43))。
  2. 计算平移量:PCB相对于基准位置的平移量是 Δx = xw₁ - xw₀,Δy = yw₁ - yw₀。
  3. 计算真实旋转角θ:
    • 首先根据平移量,算出当前PCB中心的坐标:C₁ = (xc₀ + Δx, yc₀ + Δy)(因为PCB整体平移,中心跟着白方块一起移)
    • 然后计算基准中白方块到PCB中心的向量角度:α₀ = arctan2(yc₀ - yw₀, xc₀ - xw₀)
    • 再计算当前图中白方块到PCB中心的向量角度:α₁ = arctan2(yc₁ - yw₁, xc₁ - xw₁)
    • PCB的旋转角就是 θ = α₁ - α₀(这个角度才是PCB真实的旋转角度,因为旋转是绕自身中心转的,白方块到中心的向量角度变化就是旋转角)
  4. 将当前引脚坐标转换到PCB本地坐标系:
    • 先把当前引脚坐标平移回基准位置:P₁' = (xp₁ - Δx, yp₁ - Δy)
    • 然后绕PCB基准中心 C₀ 旋转 -θ 角度(逆旋转,把旋转后的引脚转回到基准姿态),旋转公式是:
      x' = (xp₁' - xc₀) * cosθ + (yp₁' - yc₀) * sinθ + xc₀
      y' = -(xp₁' - xc₀) * sinθ + (yp₁' - yc₀) * cosθ + yc₀
      
    • 转换后的 (x', y') 就是引脚在PCB本地坐标系的坐标,如果引脚没有弯曲,这个坐标应该和基准的 P₀ 几乎一致。

额外提醒

如果你的PCB上有多个固定参考点(比如两个白色方块),那旋转角的计算会更准确,直接用两个参考点的相对角度变化来算θ就行,不需要依赖PCB中心的坐标。

备注:内容来源于stack exchange,提问作者Theodor Nanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:09:37