当前位置: 首页 > news >正文

关于凸轮的相位角计算

需求:计算凸轮相位角误差

关于凸轮的相位角误差计算直接需求是求取凸轮的实际最大升程点与理论最大升程点的角度误差,所以写出了下面的程序

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

这种方法通过比较实际曲线和理论曲线的最大升程点对应的角度来计算相位角误差,但是这种方法的局限性在于:

  1. 仅依赖于单个点(最大升程点)的位置,对噪声和局部偏差敏感

  2. 如果实际凸轮存在磨损或加工误差,最大升程点可能不是最具代表性的特征点

  3. 没有考虑整个凸轮轮廓的相位关系,仅关注峰值位置

考虑一些相对专业的相位角计算方法

在凸轮分析中相位角误差可以通过以下几种方法计算:

  1. 特征点匹配法:除了最大升程点外,还可以考虑缓冲段起点、工作段起点等特征点的角度偏差,然后取平均值或加权平均

  2. 曲线对齐法:使用优化算法将实际曲线与理论曲线在角度域上进行最佳对齐,计算所需的旋转角度

  3. 傅里叶分析法:将凸轮轮廓转换到频域,比较实际曲线和理论曲线的相位谱差异

综合考虑选择了第二种方式(加权比较均衡):实际上就是曲线计算的最佳拟合通过形状拟合反向找到旋转角度,如下图:

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, method='SLSQP')if result.success:tx, ty, angle = result.xmin_error = result.funreturn tx, ty, angle, min_errorelse:raise ValueError("法向误差最小化失败")

相关文章:

  • 在docker中部署dify
  • TryHackMe (THM) - SOC基础知识
  • slam--最小二乘问题--凹凸函数
  • Win10安装DockerDesktop踩坑记
  • C++斯特林数在C++中的数学理论与计算实现1
  • YOLOv8模型剪枝实战:DepGraph(依赖图)方法详解
  • Win系统权限提升篇AD内网域控NetLogonADCSPACKDCCVE漏洞
  • create_react_agent + MCP tools
  • synchronized和ReentrantLock的区别
  • 【论文阅读】Qwen2.5-VL Technical Report
  • Vue 3 九宫格抽奖系统,采用优雅的 UI 设计和流畅的动画效果
  • 打卡Day53
  • 在tensorrt engine中提高推理性能小记
  • 网络安全防护:Session攻击
  • 【python深度学习】Day53对抗生成网络
  • Vue3 + TypeScript + Element Plus 设置表格行背景颜色
  • 第十七章 Linux之大数据定制篇——Shell编程
  • 【C语言】C语言发展历史、特点及其应用
  • SpringBoot源码解析(十二):@ConfigurationProperties配置绑定的底层转换
  • 树莓派智能小车红外避障实验指导书
  • 盐城做网站需要多少钱/如何做网站建设
  • 国外服务器做视频网站/深圳百度推广竞价托管
  • 陕西省建设厅的网站/磁力猫搜索引擎入口官网
  • 个人网站需要什么内容/百度官方版
  • wordpress自定义面板/免费seo推广计划
  • 淘宝联盟返利网站怎么做/免费p站推广网站入口