一种优化的NURBS和DDA曲线两级插补方法技术

技术编号:11498030 阅读:66 留言:0更新日期:2015-05-22 15:41
本发明专利技术是一种优化的NURBS和DDA曲线两级插补算法,主要由轨迹生成阶段、转换阶段、DDA插补阶段构成。轨迹生成阶段主要由执行NURBS插补算法,根据轨迹生成算法生成下一个插补周期对应点的位置。DDA插补阶段主要是根据每个插补周期的位置增量生成相应的伺服脉冲传送给伺服系统。转换阶段主要是把NURBS插补阶段每个插补周期中的位置转换为DDA阶段的位置增量。每个阶段使用fifo进行连接。本发明专利技术具有系统通信时延低、效率高、可移植性好、程序对Cache友好的优点。

【技术实现步骤摘要】
一种优化的NURBS和DDA曲线两级插补方法
本专利技术涉及NURBS曲线和DDA曲线两级插补器的设计方法及样条曲线的轨迹计算方法,属于数控加工

技术介绍
传统的数控系统只能进行简单的直线插值和圆弧插值,这就要求在加工复杂外形曲线的工件时,CAD/CAM只能用直线或圆弧在给定的误差约束条件下,用大量的小线段或圆弧进行逼近。这种方法容易造成CAD/CAM软件产生大量的加工程序代码,增大CAD/CAM和CNC系统之间的传输时间,影响系统的实时性。国际化标准组织吧NURBS曲线定位工业产品几何形状的数学表示方法和独立于设备的图形界面编程接口,在CAD软件中得到广泛应用。但是,由于其计算复杂,在CNC系统中并没有得到广泛的应用。目前常用的轨迹生成算法主要有定义法、矩阵形式连乘法、B样条曲线deBoor算法和齐次形式计算法等。定义法是将参数带入NURBS样条曲线的有理分式得到下一个插补点的位置的算法,虽然直观简单,但是计算复杂,不宜使用。矩阵形式连乘法是指在计算NURBS曲线时,采用矩阵连乘的表示形式求取样条基函数及其任意阶导数的方法,其优点是可以降低轨迹生成的耗时。B样条曲线deBoor算法是指将NURBS样条参数曲线中分子分母分别用deBoor样条算法求取参数点对应的位置,其相对于定义法降低了计算量,但是计算耗时仍然比较高。齐次形式表示法是指将低纬NURBS曲线映射为高维B样条曲线,在B样条曲线采用deBoor算法求取参数对应的位置,最后映射到低维的NURBS曲线空间。但是传统的实现NURBS样条加工复杂曲面时,需要使用专用的控制器,价格昂贵且参数调整复杂,不符合开放性数控系统的发展趋势。
技术实现思路
针对现有技术中存在的上述不足之处,本专利技术要解决的技术问题是提供一种优化的NURBS和DDA曲线两级插补方法。本专利技术为实现上述目的所采用的技术方案是:一种优化的NURBS和DDA曲线两级插补方法,包括以下步骤:轨迹生成阶段:通过NURBS轨迹曲线公式求取参数点对应的位置,并生成下一个插补周期对应点的参数值;转换阶段:把NURBS插补阶段每个插补周期中的位置转换为DDA阶段的位置增量;DDA插补阶段:根据每个插补周期的位置增量生成相应的伺服脉冲传送给伺服系统;上述各个阶段使用fifo进行连接。所述轨迹曲线表示为::其中,Pi表示控制节点,Ni,p表示样条基函数,ui表示节点向量中第i个分量,Wi表示和控制点对应的权向量;所述样条基函数Ni,p及其任意阶导数的求取过程分解为p+1个矩阵相乘的形式,对于前p-r个矩阵,其第k个矩阵形式为:对于第p-r+1个到第p-1个矩阵,其第k个矩阵的形式为:第p个矩阵,形式为:其中Ni,p(u)表示样条基函数,k表示矩阵的位置,其范围为[0,p],ui表示节点向量中第i个分量,u表示样条的参数。所述样条基函数Ni,p及其任意阶导数的计算过程采用逆序计算。所述逆序计算对cache友好的矩阵相乘,第二个矩阵是列向量,在编译器采用行优先的布局存储方式,所以采用的矩阵乘法计算公式为:其中Aij表示分解的前p个矩阵中第i行第j列的值,Bj表示逆序矩阵相乘过程中求得的列向量第j个分量的值,在第一次相乘过程中,矩阵B为第p+1个矩阵。所述逆序计算对稀疏矩阵的存储布局进行优化,其转换关系为:其中,A表示转换前的稀疏矩阵,B表示转换后的稀疏矩阵,转换后的矩阵所采用的矩阵乘法计算公式为:其中Aj值表示稀疏矩阵经过转换后的第j个分量的值,Bj表示逆序矩阵相乘过程中求得的列向量第j个分量的值,在第一次相乘过程中,矩阵B为第p+1个矩阵。所述转换阶段具体为:根据当前点的位置和前一个点的位置,求取当前的位置增量;若位置增量投影到坐标轴上的距离的最大值小于DDA插补阶段所能进给的最大距离,则直接输入给DDA插补阶段;否则,则最大值减去对应的DDA插补阶段所能进给的最大距离,同时,其余坐标分量减去相应的比例值,直到其最大值小于等于DDA插补阶段所能进给的最大距离为止。所述DDA插补阶段具体为:根据转换阶段得到的各坐标增量,在每个DDA插补周期用对应的坐标增量值累加,若大于累加器所能表示的最大值,则溢出,输出脉冲,累加值为溢出后的余数;否则,累加器继续按照对应坐标增量累加;判断是否到达终点,若到达终点,则停止计算;否则,继续计算累加过程。所述fifo连接采用循环缓冲区实现,其中读写索引分别分布在输入进程和输出进程,其中缓冲区容量为V,缓冲区维护写索引号write_index,输出进程维护读索引号read_index;缓冲区数据长度data_length=write_index-read_index;当data_length为0时,输出进程等待;当date_length为V-1时,输入进程等待;等待时采用自旋的方式。本专利技术具有以下优点及有益效果:1.系统通信时延低。本专利技术采用NURBS曲线插补,在加工复杂曲线时,不必采用小线段或圆弧进行逼近的方式,降低了CAD/CAM产生加工程序代码的大小,从而降低了CAD/CAM与CNC的通信时延。2.轨迹生成算法效率高。轨迹生成曲线的样条基函数采用最优化的矩阵形式连乘算法,提高了算法的执行效率。矩阵连乘形式的执行过程中考虑了矩阵结合次序并且根据其矩阵的特点对矩阵重新布局,加快了系统的执行时间。3.可移植性好。NURBS插补阶段产生的结果通过转换阶段和DDA插补阶段送到伺服系统,不使用专用的控制器,适合现代大多数数控系统的结构,符合开放式数控系统的发展趋势。4.程序对Cache友好。对稀疏矩阵重新布局不仅极大地减少了乘法的执行次数,而且由于其存储特点,可以提高Cache的命中率。附图说明图1为待加工的样条曲线;图2为DDA阶段执行流程图;图3为缓存容量需求对比图;图4为fifo传输时延抖动曲线图;图5为优化矩阵形式连接乘法次序图;图6为存储布局优化后乘法次数图。具体实施方式下面结合附图及实施例对本专利技术做进一步的详细说明。本专利技术算法包括轨迹生成算法和NURBS和DDA两级插补算法。所述轨迹生成算法主要解决的问题是根据参数点求取插补位置的方法。其轨迹曲线表示如下:其中Pi表示控制节点,Ni,p表示样条基函数,ui表示节点向量中第i个分量,Wi表示和控制点对应的权向量。其中,样条基函数采用递归的表示形式,计算时间比较长。轨迹生成阶段的参数ui采用二阶Taylor展开式求解,公式如下:其中ui为第i个插补周期中的样条参数值,ui+1为第i+1个插补周期中的样条参数值,Vi为第i个插补周期中的加工速度,为样条C(u)的一阶导数,为样条C(u)的二阶导数,Ti表示第i个插补周期,T表示插补周期的时间间隔。通过求解二阶Taylor展开式,可以求出第i+1个插补周期中,参数值ui+1。其中,参数ui+1的计算要用到样条基函数的导数。所应用到的样条导数基函数的计算,其公式为:在计算时,根据矩阵的结合律,不同的计算次序,其计算量不同。其时间主要消耗在乘法操作上,计算量的公式如下:其中,m[i,j]表示矩阵形式连乘中第i个矩阵和第j个矩阵的乘法操作次数。对于来说,当矩阵逆序连乘时,其计算量最小;当其矩阵顺序连乘时,其计算量最大。为了加快的求取过程,需要对其分解的矩阵实行逆序连乘。GC本文档来自技高网
...
一种优化的NURBS和DDA曲线两级插补方法

【技术保护点】
一种优化的NURBS和DDA曲线两级插补方法,其特征在于,包括以下步骤:轨迹生成阶段:通过NURBS轨迹曲线公式求取参数点对应的位置,并生成下一个插补周期对应点的参数值;转换阶段:把NURBS插补阶段每个插补周期中的位置转换为DDA阶段的位置增量;DDA插补阶段:根据每个插补周期的位置增量生成相应的伺服脉冲传送给伺服系统;上述各个阶段使用fifo进行连接。

【技术特征摘要】
1.一种优化的NURBS和DDA曲线两级插补方法,其特征在于,包括以下步骤:轨迹生成阶段:通过NURBS轨迹曲线公式求取参数点对应的位置,并生成下一个插补周期对应点的参数值;转换阶段:把NURBS插补阶段每个插补周期中的位置转换为DDA阶段的位置增量;DDA插补阶段:根据每个插补周期的位置增量生成相应的伺服脉冲传送给伺服系统;上述各个阶段使用fifo进行连接;所述轨迹曲线表示为:其中,Pi表示控制节点,Ni,p表示样条基函数,ui表示节点向量中第i个分量,Wi表示和控制点对应的权向量;n表示NURBS曲线的次数;所述样条基函数Ni,p及其任意阶导数的求取过程分解为p+1个矩阵相乘的形式,对于前p-r个矩阵,其第k个矩阵形式为:对于第p-r+1个到第p-1个矩阵,其第k个矩阵的形式为:第p个矩阵,形式为:其中Ni,p(u)表示样条基函数,k表示矩阵的位置,其范围为[0,p],ui表示节点向量中第i个分量,u表示样条的参数。2.根据权利要求1所述的一种优化的NURBS和DDA曲线两级插补方法,其特征在于,所述样条基函数Ni,p及其任意阶导数的计算过程采用逆序计算。3.根据权利要求2所述的一种优化的NURBS和DDA曲线两级插补方法,其特征在于,所述逆序计算对cache友好的矩阵相乘,第二个矩阵是列向量,在编译器采用行优先的布局存储方式,所以采用的矩阵乘法计算公式为:其中Aij表示分解的前p个矩阵中第i行第j列的值,Bj表示逆序矩阵相乘过程中求得的列向量第j个分量的值,在第一次相乘过程中,矩阵B为第p+1个矩阵。4.根...

【专利技术属性】
技术研发人员:刘荫忠徐勤朋王允森赵启杰
申请(专利权)人:中国科学院沈阳计算技术研究所有限公司
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1