一种可部分去除刀位数据点的NURBS曲线插值方法与流程

文档序号:21846401发布日期:2020-08-14 17:05阅读:312来源:国知局

本发明涉及计算机数字控制(cnc)技术领域,特别涉及该领域中海量加工刀位数据点的nurbs曲线插值与光顺处理技术。



背景技术:

nurbs曲线插值与光顺处理技术在cnc加工领域具有重要的应用价值。cnc加工一些零件表面上的空间曲线时,为保证加工精度,一般是将该曲线离散成为若干个刀位数据点,势必造成高精密加工时的海量刀位数据点。为此可在cnc系统中考虑先将这些海量加工刀位数据点的nurbs曲线插值表达后进行光顺处理。然而,如果将所有数据点皆参与nurbs曲线的插值计算,对cnc系统而言,运算负荷会极重。因此,可去除掉海量刀位数据点并可进行保持精度条件的nurbs曲线插值与光顺处理是必然选择。此处急需解决好的关键问题是如何尽可能多的选取数据点不参与nurbs曲线插值过程,且能保证不参与插值的数据点与nurbs插值曲线间的最小距离不大于预设插值误差。

针对上述问题诸多国内外研究人员提出了相关方法。韩江提出了一种基于轮廓关键点的b样条曲线插值方法,该方法将所有数据点曲率平均值作为判断依据进行初始特征点的选取,这将会导致即使在相对平直的区域也会分布着较密集的数据点,其结果是原始刀位数据的去除力度不够高。江本赤提出了一种基于曲率优势点的nurbs曲线拟合方法,添加一个约束条件进行初始特征点的筛选,可以进一步实现对原始刀位数据的压缩。袁佶鹏提出了一种fktp算法进行自适应的nurbs曲线拟合,该方法可以快速进行空间刀位数据点的选取与拟合,但仍然会产生较多余的节点和控制点。刘明增提出了一种基于正则渐进迭代逼近的自适应b样条曲线拟合,该方法可以对选取的特征点进行自适应的拟合,但是该方法需要进行b样条曲线的节点删除工作,这会导致拟合误差的增大以及迭代计算次数的增加。yoshimoto提出了一种针对平面数据拟合的实数编码遗传算法,该算法能够自动确定节点的数量和位置,可以处理光滑的数据拟合问题以及不连续的点或尖点拟合问题,但是该方法需要寻找最优的理论模型,从而导致计算效率不是很高。park提出了一种基于误差自适应控制的b样条曲线逼近方法,该方法不需要给定控制点的数量就可以得到满足预设拟合精度条件的最少控制点曲线。周红梅提出了采用自适应提取合适的节点进行nurbs曲线插值的方法,该方法可以得到满足插值精度要求的曲线,但是只能识别出局部曲率极大值点和拐点,并不能较好地减少控制点的数量。

但相关现有文献中普遍存在的共性问题是:如果原始刀位数据点选取的不合理就会导致参与插值的刀位数据点过多而去除的刀位数据点过少,为去除更多的原始刀位数据点却又会大大增加迭代计算的次数。

现将与过数据点集nurbs曲线插值相关的背景技术介绍如下。

一条p次nurbs曲线定义为

式(1)中:{pi}是nurbs曲线的控制点,控制点的数量为n+1个,所有控制点{pi}的连线构成了nurbs曲线的控制多边形;{ωi}是对应控制点{pi}的权因子值;ni,p(u)是p次b样条基函数。

b样条基函数定义在节点矢量

u=(u0,u1,…,um)

上(其中:m=n+p+1,节点的个数为m+1)。b样条基函数可由deboor-cox递推公式求得

针对刀位数据点集{qi}(i=0,1,...,t)中第i个数据点qi,相应的曲率近似计算方法如下。通常采用前后相邻三个数据点qi-1、qi和qi+1所形成近似的圆弧进行qi处曲率的求解。先计算出qi处的曲率半径

则第i个数据点qi处对应的曲率为



技术实现要素:

为尽可能多的选取数据点不参与nurbs曲线插值过程,且能保证不参与插值的数据点与nurbs插值曲线间的最小距离不大于预设插值误差,本发明提供一种基于曲率自适应数据点选取且可保持插值精度的nurbs曲线插值方法。本发明所采用的技术方案是:

1)原始刀位数据曲线按照曲率大小可划分为若干大曲率段和若干小曲率段,各曲率段间分段点位置的初确定和终确定。大曲率段曲线的弯曲程度较大,应选取较多的特征点才能更好地表达曲线的弯曲特征。小曲率段曲线相对而言则比较平直,选取较少的特征点便可较好地表达曲线的特征。

2)每个曲率段内曲率极大数据点的确定。在每个曲率段内,曲率极大值点对于原始数据曲线的局部形状也具有重要影响,对准确、快速的构造原始数据曲线的nurbs插值曲线起着至关重要的作用。因此,可将各个曲率段内的曲率极大值点选取为构造nurbs插值曲线的初始特征点。

3)其他特征数据点的选取与添加。为了减少迭代计算次数,快速构造原始数据曲线的nurbs插值曲线,需在上述选取出的数据点基础上添加曲率自适应的其他特征数据点共同作为初始插值特征数据点集用于构造nurbs插值曲线。

4)选取首末两个原始数据点、曲率段的分段点、各曲率段内的曲率极大值点以及新添加的特征数据点共同作为初始nurbs曲线插值的数据点集,进行nurbs曲线插值。

5)计算出所有未参与插值的数据点qs到nurbs插值曲线的最小距离εs,进而形成数据点集{qs}对应的插值误差集{εs},比较这些插值误差,选取出最大值εmax与预设插值误差ε进行比较:如果εmax≤ε,在该相邻插值数据点间不添加新特征数据点,反之需将与εmax对应的数据点添加到插值特征数据点集中。

6)对添加新特征数据点后的插值数据点集,再次执行第4)、5)步,直到所有未参与插值数据点对应的插值误差均不大于预设插值误差为止。

具体实施方式

1)分段点位置的初确定

当第i个数据点qi对应的曲率ki与邻近的数据点曲率之间满足如下初确定条件之一时,

i.ki-j>ki,j=1,2,3

ii.ki+j>ki,j=1,2,3

则可以将qi作为曲线按曲率分段的初确定分段点。但是考虑到原始数据曲线存在曲率跳跃的情况,仅满足上述一个条件尚不足以保证qi两侧邻近数据点中的一侧数据点曲率远大于另一侧数据点的曲率。因此,还需针对不同情况辅以其他约束条件,以保证分段点的准确性。

2)分段点位置的终确定

当第i个数据点qi对应的曲率ki满足条件i时,记

式(5)-(7)中:为向前曲率差分之和;δki为曲率差分极值,符号′+′与′-′分别表示向前与向后差分运算。

如果满足且满足(其中h为常数,h通常取值为2~3;为所有数据点曲率的平均值),则可以将曲率值ki对应的数据点qi作为最终确定的分段点。

同样,当第i个数据点qi对应的曲率ki满足条件ii时,记

如果满足且满足则可以将曲率值ki对应的数据点qi作为曲线按曲率分段的终确定分段点。

3)各曲率段内曲率极大值点位置的确定

经过曲率分段后原始数据曲线将会被分为若干个曲率段,假设某个曲率段内包含q个数据点,若该曲率段内的数据点qi对应的曲率值ki满足

ki=max(kj)(j=1,2,…,q)(11)

时,则可将该数据点qi选取为该曲率段内的曲率极大值点。

4)其他特征数据点的添加

a.数据点添加个数的求解

对任意一个含有q个数据点的曲率段,设该曲率段内每l个数据点就有一个数据点参与nurbs曲线的插值,可有如下关于l的计算方法

式(12)中:为对γ进行向上取整的运算;ε为预设插值误差;k为曲率振荡次数,是指该曲率段内曲率值超过整条曲线曲率平均值的数据点个数。

当k的值为0时,表示该曲率段是比较平直的小曲率段,则在该曲率段不需进行新特征数据点的添加。

如果k为1时,表示对预设插值误差ε要求过于苛刻,如果想减少迭代次数,此时建议将该曲率段中的全部数据点都作为特征数据点进行选取和添加。

如果k为大于或等于2的数值时,表示该曲率段需要再添加新的特征数据点。设相邻的前后两个特征数据点在原始数据点中的排序为mf与me,则在数据段(mf,me)内应选取的数据点个数x为

b.其他数据点的选取与添加

需添加的新数据点的选取依据是该点在数据段(mf,me)中的各自序列子区间内曲率值的大小,在数据段(mf,me)内应添加的第x个数据点所对应的序列子区间为

将各自序列子区间内曲率极大值的数据点选取为新添加的特征数据点。

5)选取数据点集的nurbs曲线插值

对数据点集{qi}(i=0,1,...,t)选出的n+1个数据点{qj}(j=0,1,...,n),过点集{qj}(j=0,1,...,n)的nurbs曲线插值方法如下。

首先,需要对参与插值的数据点集{qj}(j=0,1,...,n)进行参数化。目前最常用的是用一种弦长参数化方法进行特征数据点的参数化计算。

对于数据点集{qj}(j=0,1,...,n),设总弦长为d,则有

进而,各数据点{qj}(j=0,1,...,n)所对应的参数分别表示为

设节点矢量为u=(u0,u1,…,um),为了能够让节点矢量很好地反应的分布情况,通常采用取平均值的方法,即

通常为简化计算,一般将权因子值ωi全部都取为1,则由nurbs曲线的规范性可知此时,式(1)可简化为

建立如下关于控制点pi的线性方程组

式(19)中系数矩阵。利用式(15)-(17)求出参数和节点矢量u,由式(2)可求得b样条基函数,代入式(19)将得到如下线性方程组

求解式(20)中的控制点集{pi}(i=0,1,...,n)后,即可唯一确定一条关于参与插值的刀位数据点{qj}(j=0,1,...,n)的nurbs插值曲线。

6)计算所有未参与插值数据点qs处的插值误差εs,形成数据点集{qs}对应的插值误差集{εs},比较这些插值误差,选取出最大值εmax与预设插值误差ε进行比较:如果εmax≤ε,在该相邻插值数据点间不需添加新特征数据点;反之,需将与εmax所对应的数据点添加到插值特征数据点集中。

7)对添加新特征数据点后的插值数据点集,再次执行nurbs曲线插值及插值误差集的计算,并将插值误差与预设插值误差对比,直到所有未参与插值数据点对应的插值误差均不大于预设插值误差为止,完成海量刀位数据点的选取参与nurbs曲线插值的过程。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1