ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

圆瓶旋转走摆怎样分解:两高度圆心轨迹与轴线倾斜辨识

圆瓶旋转走摆怎样分解:两高度圆心轨迹与轴线倾斜辨识
壹星(YIXING)技术笔记|东莞市壹星自动化设备有限公司

圆瓶旋转时,某个高度的外形看起来左右摆动,不能仅凭一条跳动曲线确定瓶底倾角。瓶心偏置、轴线倾斜、截面非圆和测量基准变化都可能进入读数。本文用两种高度的圆心轨迹,演示如何在明确的刚体旋转假设下分离固定偏心与轴线倾斜。

壹星《机械画册》第十八页描述全自动定位式圆瓶贴标机的立姿输送与旋转贴标流程。该流程没有说明瓶体一定按本文的理想约束旋转,因此以下是独立教学示例,不是该设备的瓶底公差或验收模型。

先限定旋转约束

设设备旋转基准为竖直轴,瓶体作为刚体随同一旋转载体运动。高度z是相对于该轴方向的截面高度;瓶轴倾斜方向随载体一起旋转,没有额外滚动、重新就位或夹持滑动。瓶轴在参考相位的水平位置写成e+zk,其中e为零高度偏心向量,k为轴线水平斜率向量。

旋转相位φ变化时,截面圆心满足c(z,φ)=R(φ)(e+zk),R为二维旋转矩阵。倾角θ满足tanθ=|k|。如果实际瓶体由侧向机构重新定位,底面未保持同一约束,这个模型就需要重建,不能从瓶底外观直接带入。

这里的圆心应来自已核对的截面形状测量或几何拟合。单个探头测到的是表面位置,包含截面形状与运动,不自动等于圆心位移。倾斜圆柱的水平截面也不必是圆,拟合方法与轴线定义要一致。

两个高度为什么比一个更有信息

只取水平投影,有x(z,φ)=A(z)cosφ+B(z)sinφ,其中A=eₓ+zkₓ,B=−eᵧ−zkᵧ。对共享相位的两个高度z₁、z₂,差分给出kₓ=[A₂−A₁]/(z₂−z₁),kᵧ=−[B₂−B₁]/(z₂−z₁)。再将其代回即可求e。

单个高度只能得到e+zk的组合,较大的摆幅可能来自偏心,也可能来自倾斜。两个高度可以在模型内分开这两项,但仍不能把倾斜来源唯一归为瓶底。更多高度可用于检查A、B是否确实随z线性变化。

两个高度过于接近时,系数差中的测量误差会被较小的高度差放大。增加高度间隔也需确认观测的是同一刚体轴线,而不是瓶身不同形状区域或局部变形。不同高度的相位原点必须共用,不能分别寻找各自最大值后再拼接。

四个相差九十度的相位下,A等于零度与一百八十度读数差的一半,B等于九十度与二百七十度读数差的一半。有噪声时可增加相位并按线性参数拟合;NIST线性最小二乘说明给出此类拟合目标的基本定义。拟合成功并不证明机械归因成立。

离线恢复偏心与倾角

合成输入设零高度偏心为横向零点二、另一水平向零点一毫米,倾角零点五度,倾斜朝第一水平方向。分别生成二十和一百毫米高度的四相位中心投影,再从这些读数恢复参数。

from math import sin, cos, tan, atan, radians, degrees, hypot heights = [20.0, 100.0] phases = [radians(x) for x in (0, 90, 180, 270)] kx, ky = tan(radians(0.5)), 0.0 ex, ey = 0.2, 0.1 coefficients = [] for z in heights: samples = [(ex + z*kx)*cos(phi) - (ey + z*ky)*sin(phi) for phi in phases] a = (samples[0] - samples[2]) / 2 b = (samples[1] - samples[3]) / 2 coefficients.append((a, b)) print(f"z={z:.0f} mm A={a:.6f} mm B={b:.6f} mm orbit_radius={hypot(a,b):.6f} mm") dz = heights[1] - heights[0] fitted_kx = (coefficients[1][0] - coefficients[0][0]) / dz fitted_ky = -(coefficients[1][1] - coefficients[0][1]) / dz fitted_ex = coefficients[0][0] - heights[0]*fitted_kx fitted_ey = -coefficients[0][1] - heights[0]*fitted_ky theta = degrees(atan(hypot(fitted_kx, fitted_ky))) print(f"tilt={theta:.6f} deg eccentricity=({fitted_ex:.6f},{fitted_ey:.6f}) mm")

输出为:

z=20 mm A=0.374537 mm B=-0.100000 mm orbit_radius=0.387657 mm z=100 mm A=1.072687 mm B=-0.100000 mm orbit_radius=1.077338 mm tilt=0.500000 deg eccentricity=(0.200000,0.100000) mm

较高截面的轨迹半径更大,程序仍把固定偏心与倾角分开。轨迹半径、某方向的峰谷差和表面全跳动是不同量,不能互相不加说明地替换;本例水平投影峰谷差是相应轨迹半径的两倍。

这个峰谷差属于连续模型,四个离散相位未必恰好采到最高和最低位置。复核时应保留相位间隔与采样覆盖,而不是把四个读数中的极差直接当成完整旋转极差。

走摆一周闭合,不代表标签高差累积

旋转矩阵在一周后回到原值,因此该刚体模型中c(z,2π)=c(z,0)。周期性位置变化本身不产生一个每圈不断增加的轴向位移。要推导标签接缝高差,还需描述标签接触、相对进给和材料路径,不能直接把瓶径乘倾角正切当成全周接缝极限。

瓶底的局部不平、底面与轴线不垂直、测量参考面倾斜也应分开。仅有底面最大最小读数时,未必能识别一个平面倾角;不能据此自动判定来料责任或允许托盘跳动量。

实际复核应保留各高度的原始相位数据、拟合残差与重新装夹后的结果。两高度相位不能对齐、圆心估计不足或轴线系数不随高度线性变化时,先报告模型不适用。本文交付可识别性与几何参数检查,不输出现场校正动作。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进