分享我写的小钮-B样条凸轮运动方程设计工具-这是叠加法吗
本帖最后由 从零开始 于 2020-8-10 15:57 编辑在回头再度思考Norton凸轮手册的第五章样条曲线之后,经过摸索之后,用Python实现了作者写的凸轮设计软件中的一个功能,用B-样条设计凸轮运动方程。我用两种方法实现了,一种是Python + Qt的界面, 一种是Python + Excel的精简板。由于Python+Qt版本打包后体积太大,所以准备将后一种分享给大家。
先说原理,我觉得这可能是998大侠所说的叠加法,但不太确定。思路如下:
1.有各种满足连续性要求的一系列方程,各有不同的S,V,A,J 性质;
2. 这些方程的线性组合(linear combination or weighted sum)是同样满足连续性要求的曲线,S,V,A,J性质根据系数或权重的不同而不同。
3.根据关键点的约束条件(s,v,a,j等),建立线性方程组,矩阵求逆解得权重/系数。
4.这个等到的新曲线就是即满足连续性要求,有满足约束的方程。
Norton 第五章的样条曲线方法就是这个原理,不同点是:
1.以B-样条基函数(B-Spline Basis function)为基础系列函数,本质是分段连续多项式,显式表达式方程复杂,但是实际可以由通用的算法来快速算。
2.这些basis functions 随着节点(knots)的变动而变,因此由无穷多种组合,其功能更为强大和灵活,可以作为关键路径/critaical path motion方程设计的强有力工具(最后一句是Norton原话)。
软件功能:以Excel为用户界面,输入约束条件,次数,内部节点,凸轮转速,获得满足约束条件的方程,还附带对凸轮加速度进行FFT变换的功能。
准备条件:1.你电脑里需要Python解释器,2.安装基础的Scipy包 ,3,安装Splipy包(第三方Bspline算法包),4.Excel 和 xlwings插件。xlwings是用python读写和操作Excel表格的第三方库。
使用方法:1.先了解B-Spline,2,阅读Norton第五章相关内容,3,将附件中的excel文件和py文件放到同一个目录下,4,打开Excel文件,输入边界条件(约束条件),你需要的曲线的次数(阶数-1),输入内部节点,输入凸轮转速。5,在xlwings插件中,点击Run Main,数秒之后获得曲线。6,反复尝试不同节点,观察曲线。 以下是Excel的界面和曲线图,
再以下是此工具再现了的Norton手册中 114页和143页的设计。
最后是我用Python+QT写的粗糙程序界面。
至此,我觉得我完全弄懂了Norton手册第五章样条曲线设计凸轮运动方程的内容。将全心投入到凸轮动力学、振动分析的学习中。
注意,将附件中的Excel 文件和Python文件放到同一目录。(代码只有简单数十行,功能很强大)。
请不要随意变动Excel中单元格的位置,当然如果你弄懂了程序,可以自己修改,增加功能。
本帖最后由 从零开始 于 2020-8-10 16:07 编辑
再分享一个学习样条曲线的网页教程,讲的非常清晰。
https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/
以及捞一下我上一个帖子,FFT算法
http://jixietop.cn/forum.php?mod=viewthread&tid=32540。
另,为什么我的贴子不在最新发表里呢。。。
同时想向社友大佬打听下,是否有相关职位可以推荐。
个人觉得目前就平面凸轮来说,算是从门缝看见了样子。
材料是跛腿,振动分析方面需再大大提升。
没有的话,就继续钻研动力学。 大侠的帖子还有一定专业性,从理论力学到振动力学,还有样条曲线的拟合,一般人没有这个耐性做这么细化的工作;
只是研究内容有些学院化,研究凸轮就要从实际工况出发,需求是什么,工作节拍多少,冲击多少,缓冲多少,根据这个需求来求凸轮的形状;
记得齿轮啮合一本书里面讲到了凸轮设计,或可互为参考。 另外看到大侠发的很多计算和数学的内容,参与讨论的人很少,可能一方面大家畏惧繁琐的计算,另外内容比较基础,和实践挂钩不多。
如果大侠可以结合一两个具体的案例谈自己的设计思路就更好了! 未来有饭的节奏,不错, 许多年以前买过一本法国人写的贝塞尔曲线和B样条曲线的书,当时基础太差也看不太懂,后来看了david c lay的线性代数及其应用,第8章在仿射基础上解释一下几何曲线曲面上的应用才有了点感觉。也只是能看懂一些些。那是本好书。凸轮就是不懂。 大侠值得学习,
页:
[1]