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

从机械台位置测量数据中分离系统误差与随机误差

机械台位置误差数据中系统误差的分离与NWARI方法验证优化

背景

机械台在二维平面内移动,测量数据包含台体的X、Y坐标及X、Y方向的位置误差。平面上有间隔1nm的标记网格,台体仅在这些标记点处进行测量,误差由标记真实位置与台体测量位置的差值计算得出。

数据格式

此处Skew代表误差,示例数据如下:

StageCoords_XStageCoords_YSkew_XSkew_Y
118760606112836409-29-45
118760622112836426-185

数据预处理

因工作在纳米尺度,同一标记位置的多次测量中台体位置会有小幅波动,因此对X、Y方向数据分箱,每个矩形箱对应单个标记的所有数据点,后续可计算每个箱的误差均值和峰峰值并绘图。预处理代码如下:

# Define bin edges based on bin width
bin_width = 1000000
x_bins = np.arange(df['StageCoordsNM.X'].min(), df['StageCoordsNM.X'].max() + bin_width, bin_width)
y_bins = np.arange(df['StageCoordsNM.Y'].min(), df['StageCoordsNM.Y'].max() + bin_width, bin_width)

df['X_bin'] = pd.cut(df['StageCoordsNM.X'], bins=x_bins, labels=False)
df['Y_bin'] = pd.cut(df['StageCoordsNM.Y'], bins=y_bins, labels=False)

需求

已对同一区域扫测25次,分箱后每个箱包含25个位置误差数据点,需要提取每个箱中误差的系统(可重复)成分。由于数据量较少,无法采用机器学习方法,希望通过统计方法实现。

已完成工作

计算了Normalized Weighted Adjusted Repeatability Index(NWARI),用于判断分箱误差的可重复性置信度(忽略下标_before),代码如下:

#*__Pk-to-Pk X and Y__
df['Error_pk2pk_X'] = df.groupby(['X_bin', 'Y_bin'])['SkewNM.X'].transform(lambda x: x.max() - x.min())
df['Error_pk2pk_Y'] = df.groupby(['X_bin', 'Y_bin'])['SkewNM.Y'].transform(lambda x: x.max() - x.min())

df['Mean_SkewNM_X_before'] = df.groupby(['X_bin', 'Y_bin'])['SkewNM.X'].transform(lambda x: x.mean())
df['Mean_SkewNM_Y_before'] = df.groupby(['X_bin', 'Y_bin'])['SkewNM.Y'].transform(lambda x: x.mean())

def compute_confidence_X_before(group):
    group = group.reset_index(drop=True)
    group['WARI_x_before'] = (w_a * np.abs(group['Mean_SkewNM_X_before'].mean()) ) / ( w_p * (np.abs(group['Error_pk2pk_X'].mean()) + epsilon) )
    group['NWARI_x_before'] = (group['WARI_x_before']) / (1+group['WARI_x_before'])

    group['Confidence_X_before'] = ( np.abs(group['Mean_SkewNM_X_before'].mean()) - np.abs(group['Error_pk2pk_X'].mean()) ) / np.abs(group['SkewNM.X'].mean())
    group['Confidence_X_before'] = group['Confidence_X_before'].apply(lambda x: max(x, -1))
    return group

def compute_confidence_Y_before(group):
    group = group.reset_index(drop=True)
    group['WARI_y_before'] = (w_a * np.abs(group['Mean_SkewNM_Y_before'].mean()) ) / ( w_p * (np.abs(group['Error_pk2pk_Y'].mean()) + epsilon) )
    group['NWARI_y_before'] = (group['WARI_y_before']) / (1+group['WARI_y_before'])

    group['Confidence_Y_before'] = ( np.abs(group['Mean_SkewNM_Y_before'].mean()) - np.abs(group['Error_pk2pk_Y'].mean()) ) / np.abs(group['SkewNM.Y'].mean())
    group['Confidence_Y_before'] = group['Confidence_Y_before'].apply(lambda x: max(x, -1))
    return group

df = df.groupby(['X_bin', 'Y_bin'], group_keys=False).apply(compute_confidence_X_before)
df = df.groupby(['X_bin', 'Y_bin'], group_keys=False).apply(compute_confidence_Y_before)
df['NWARI_X_before']           = df['NWARI_x_before']
df['NWARI_Y_before']           = df['NWARI_y_before']

疑问与求助

不确定上述NWARI方法是否正确,寻求验证方法及优化建议。


内容的提问来源于stack exchange,提问作者user2307540

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:13:17