常德网站建设企业,营销技巧分享,iis建立好网站 怎么打开,做网站和推广公司需求#xff1a;计算凸轮相位角误差
关于凸轮的相位角误差计算直接需求是求取凸轮的实际最大升程点与理论最大升程点的角度误差#xff0c;所以写出了下面的程序
def calculate_phase_error(self):计算实际曲线与理论曲线的相位角误差…需求计算凸轮相位角误差
关于凸轮的相位角误差计算直接需求是求取凸轮的实际最大升程点与理论最大升程点的角度误差所以写出了下面的程序
def calculate_phase_error(self):计算实际曲线与理论曲线的相位角误差if self.theory_r is None or self.r is None:return# 找到实际曲线和理论曲线的最大升程点actual_max_idx np.argmax(self.r)theory_max_idx np.argmax(self.theory_r)# 获取对应的角度actual_max_angle self.theta[actual_max_idx]theory_max_angle self.theory_theta[theory_max_idx]# 计算相位角误差转换为度self.phase_error (actual_max_angle - theory_max_angle) * 180 / np.pi# 确保误差在 -180 到 180 度之间while self.phase_error 180:self.phase_error - 360while self.phase_error -180:self.phase_error 360
这种方法通过比较实际曲线和理论曲线的最大升程点对应的角度来计算相位角误差但是这种方法的局限性在于 仅依赖于单个点最大升程点的位置对噪声和局部偏差敏感 如果实际凸轮存在磨损或加工误差最大升程点可能不是最具代表性的特征点 没有考虑整个凸轮轮廓的相位关系仅关注峰值位置
考虑一些相对专业的相位角计算方法
在凸轮分析中相位角误差可以通过以下几种方法计算 特征点匹配法除了最大升程点外还可以考虑缓冲段起点、工作段起点等特征点的角度偏差然后取平均值或加权平均 曲线对齐法使用优化算法将实际曲线与理论曲线在角度域上进行最佳对齐计算所需的旋转角度 傅里叶分析法将凸轮轮廓转换到频域比较实际曲线和理论曲线的相位谱差异
综合考虑选择了第二种方式加权比较均衡实际上就是曲线计算的最佳拟合通过形状拟合反向找到旋转角度如下图 def minimize_normal_error(x_ref, y_ref, x_actual, y_actual):# 目标函数最小化法向误差def objective(params):tx, ty, angle paramsx_transformed, y_transformed transform_points(x_actual, y_actual, tx, ty, angle)return compute_normal_least_squares_error(x_ref, y_ref, x_transformed, y_transformed)# 初始猜测基于质心的平移和零旋转center_ref (np.mean(x_ref), np.mean(y_ref))center_actual (np.mean(x_actual), np.mean(y_actual))tx_initial center_ref[0] - center_actual[0]ty_initial center_ref[1] - center_actual[1]angle_initial 0initial_guess [tx_initial, ty_initial, angle_initial]# 优化result minimize(objective, initial_guess, methodSLSQP)if result.success:tx, ty, angle result.xmin_error result.funreturn tx, ty, angle, min_errorelse:raise ValueError(法向误差最小化失败)