1.一种基于椭圆弧拟合的NURBS曲线插补方法,其特征在于,所述方法具体包括以下步骤:步骤一、对数控加工的样条曲线进行分段后,再依次对各段曲线进行椭圆弧拟合,分别得到每段曲线对应的椭圆弧拟合结果;
所述步骤一中,对各段曲线进行椭圆弧拟合的具体过程为:
步骤一一、将数控加工的样条曲线的各个分段点依次表示为u0,u1,…,uk+1,其中,样条曲线的起始点us=u0,样条曲线的末端点ue=uk+1,计算中间变量Δu:则u1=u0+Δu,u2=u1+Δu,…,ue=uk+1=uk+Δu;
步骤一二、将整个样条曲线放入笛卡尔坐标系中,得到每个分段点在笛卡尔坐标系下的坐标;
对于任意的一段曲线,记该段曲线的两个端点分别为un和un+1,将un在笛卡尔坐标系下的坐标记为A′,将un+1在笛卡尔坐标系下的坐标记为B′,将过A′点的切线和过B′点的切线的交点记为D′点,将过A′点切线的法线与过B′点切线的法线的交点记为C′点;
在笛卡尔坐标系下,将该段曲线旋转角度α,得到该段曲线在笛卡尔坐标系下旋转后的圆弧段,将旋转后的圆弧段的端点un在笛卡尔坐标系下的位置记为A(xA,yA),将旋转后的圆弧段的端点un+1在笛卡尔坐标系下的位置记为B(xB,yB),将过A点切线和过B点切线的交点在笛卡尔坐标系下的位置记为D(xD,yD),将过A点切线的法线与过B点切线的法线的交点在笛卡尔坐标系下的位置记为C(xC,yC);
根据公式:
整理得到:
求出C(xC,yC)和d(xD,yD)后,选取AD、DB、BC和AC中最长边的长度作为椭圆弧的长半轴a,最短边的长度作为椭圆弧的短半轴b;
步骤一三、将点A(xA,yA)作为椭圆弧的初始坐标,将点B(xB,yB)作为椭圆弧的末端坐标,根据确定出的长半轴a和短半轴b对旋转后的圆弧段进行椭圆弧拟合,得到旋转后的圆弧段对应的初步拟合曲线,再执行步骤一四;
步骤一四、将在AD上走完所需的时间记为T,初步拟合曲线在时刻对应的坐标点记为将旋转后的圆弧段在笛卡尔坐标系下的中点记为F,将中点F与之间的距离作为拟合误差ε;
若拟合误差ε小于等于设定的阈值,则执行步骤一六;
若拟合误差ε大于设定的阈值,则执行步骤一五;
步骤一五、对旋转后的圆弧段进行二次分段,将un和作为曲线的两个端点,采用步骤一二至步骤一三的方法对端点为un和的曲线进行拟合;
步骤一六、将初步拟合曲线作为旋转后的圆弧段的椭圆弧拟合结果,并采用步骤一二至步骤一三的方法对下一段曲线进行拟合;
步骤二、根据各段曲线的起始点坐标、终止点坐标、拟合椭圆的长半轴长度、短半轴长度、期望速度以及各坐标轴允许的最大加速度进行椭圆弧速度规划;
步骤三、根据速度规划得到每一个插补周期内所需完成的椭圆弧的起点、终点,再进行椭圆弧的插补处理;
所述步骤三的具体过程为:
步骤三一、在以椭圆自身的长轴为X'轴,短轴为Y'轴的坐标系下,计算椭圆上分割角θ'为:其中,β代表在椭圆拟合过程中椭圆旋转的角度,θ为笛卡尔坐标系下椭圆弧矢量最长脉冲轴区分角度;
再根据分割角θ'求解出四个角度区域:
将椭圆插补区域划分为(θ'1,θ'2]、(θ'2,θ'3]、(θ'3,θ'4]、(θ'4,θ'1]四个区间;在区间(θ'2,θ'3]和(θ'4,θ'1]内最长脉冲轴为Y轴,在区间(θ'1,θ'2]和(θ'3,θ'4]内最长脉冲轴为X轴;
步骤三二、将椭圆的圆心坐标表示为O(x0,y0),插补起点坐标表示为(x1,y1),插补终点坐标表示为(xn,yn),θs为插补起点到椭圆圆心的矢量与X轴正半轴的夹角,θe为插补终点到椭圆圆心的矢量与X轴正半轴的夹角,则旋转角度β后的初始角度θ's=θs-β,末端角度θ'e=θe-β;
若在θ'1,θ'2,θ'3,θ'4四个角度中至少有一个存在于θ's与θ'e之间,则根据方程组:解出满足方程组的两个点,再根据图像判别唯一性得到点P(xθ',yθ'),并根据点P(xθ',yθ')计算最长脉冲轴为X轴的部分的脉冲数:其中,pulunity为Y轴的脉冲当量,pulunitx为X轴的脉冲当量,(x'n,y'n)是旋转角度β后插补终点的坐标;
则最长脉冲轴为X轴的部分的脉冲数n1为:n1=nx1;
其中,(x'1,y'1)是旋转角度β后插补起点的坐标;
最长脉冲轴为Y轴的部分的脉冲数n2为:n2=ny2;则总脉冲数为n=n1+n2;
若θ'1,θ'2,θ'3,θ'4四个角度均未存在于θ's与θ'e之间,则:总脉冲数为:n=max{nx,ny};
根据总脉冲数n计算椭圆分段后每段的夹角
步骤三三、根据椭圆的表达式将插补起点坐标表示为x1=a×cosθs,y1=b×sinθs;
插补起点坐标到椭圆圆心的距离len1为:
插补起点到椭圆圆心的矢量与X轴正半轴夹角的三角函数为:求解出在X'OY'坐标系下插补起点坐标(x'1,y'1):根据椭圆在X'OY'坐标系下的方程:
椭圆下一点插补坐标(x'2,y'2)到椭圆圆心的矢量与X'正半轴的夹角为θ'2_se=θ's+Δθ,根据θ'2_se得到下一点插补坐标:(x'2,y'2)到椭圆圆心的距离len'2为:
(x'2,y'2)到椭圆圆心的矢量与X'轴正半轴夹角的三角函数为:在经过旋转角度变换后θ2_se=θ'2_se+β,坐标点(x'2,y'2)在笛卡尔坐标系下的坐标为:步骤三四、设X轴方向脉冲余数为repulse_x,Y轴方向脉冲余数为repulse_y,根据(x1,y1)和(x2,y2)得到X轴方向的坐标增量Δx1以及Y轴方向的坐标增量Δy1:Δx1=x2-x1
Δy1=y2-y1
则X轴方向上的脉冲余数为repulse_x=Δx1×pulunitx,Y轴方向上的脉冲余数为repulse_y=Δy1×pulunity;
再根据repulse_x和repulse_y确定脉冲坐标;
步骤三五、通过步骤三三至步骤三四的方法,得到插补段上所有插补点的坐标,任意插补点坐标(xi,yi)和任意脉冲坐标(xi_r,yi_r)。
2.根据权利要求1所述的一种基于椭圆弧拟合的NURBS曲线插补方法,其特征在于,所述根据repulse_x和repulse_y确定脉冲坐标,其具体过程为:Ⅰ.当|repulse_x|≥|repulse_y|时,向X轴发送脉冲的坐标的确定方式为:若repulse_x>0,则第i个脉冲的X轴坐标xi_r为:xi_r=x(i-1)_r+1/pulunitx,i≥2,i为第i个脉冲,x(i-1)_r为第i-1个脉冲的X轴坐标;
若repulse_x≤0,则第i个脉冲的X轴坐标xi_r为:xi_r=x(i-1)_r-1/pulunitx;
当|repulse_x|≥|repulse_y|时,向Y轴发送脉冲的坐标的确定方式为:步骤1、若repulse_y>0,当Y轴不发送脉冲时,记第i个脉冲的Y轴坐标yi_r_1=y(i-1)_r,y(i-1)_r为第i-1个脉冲的Y轴坐标,当Y轴发送脉冲时,记第i个脉冲的Y轴坐标yi_r_2=y(i-1)_r+1/pulunity;
若repulse_y≤0,当Y轴不发送脉冲时,记第i个脉冲的Y轴坐标yi_r_1=y(i-1)_r,当Y轴发送脉冲时,记第i个脉冲的Y轴坐标yi_r_2=y(i-1)_r-1/pulunity;
步骤2、根据脉冲坐标(xi_r,yi_r_1)确定反馈值ret1,根据脉冲坐标(xi_r,yi_r_2)确定反馈值ret2;
求出脉冲坐标(xi_r,yi_r_1)到椭圆圆心的距离leni_r_1:脉冲坐标(xi_r,yi_r_1)到椭圆圆心的矢量与X'正半轴夹角θ'i_r_1的三角函数为:设θ”i_r_1=θ'i_r_1-β,根据θ”i_r_1求解出转换到X'OY'坐标系下的脉冲坐标(x'i_r,y'i_r_1):根据转换后的脉冲坐标(x'i_r,y'i_r_1)求解出反馈值ret1:同理,对脉冲坐标(xi_r,yi_r_2)进行处理,求解出反馈值ret2;
步骤3、若ret1>ret2,则Y轴发送脉冲,Y轴方向的脉冲坐标yi_r=yi_r_2,若ret1≤ret2,则Y轴不发送脉冲,Y轴方向的脉冲坐标yi_r=yi_r_1,进而得到第i个脉冲的脉冲坐标(xi_r,yi_r);
Ⅱ.当|repulse_x|<|repulse_y|时,向Y轴发送脉冲的坐标的确定方式为:若repulse_y>0,则第i个脉冲的Y轴坐标yi_r为:yi_r=y(i-1)_r+1/pulunity,i≥2,i为第i个脉冲,y(i-1)_r为第i-1个脉冲的Y轴坐标;
若repulse_y≤0,则第i个脉冲的Y轴坐标yi_r为:yi_r=y(i-1)_r-1/pulunity;
当|repulse_x|<|repulse_y|时,向X轴发送脉冲的坐标的确定方式为:步骤(1):若repulse_x>0,当X轴不发送脉冲时,记第i个脉冲的X轴坐标xi_r_1=x(i-1)_r,x(i-1)_r为第i-1个脉冲的X轴坐标,当X轴发送脉冲时,记第i个脉冲的X轴坐标xi_r_2=x(i-1)_r+1/pulunitx;
若repulse_x≤0,当X轴不发送脉冲时,记第i个脉冲的X轴坐标xi_r_1=x(i-1)_r,当X轴发送脉冲时,记第i个脉冲的X轴坐标xi_r_2=x(i-1)_r-1/pulunitx;
步骤(2):根据脉冲坐标(xi_r_1,yi_r)确定反馈值ret3,根据脉冲坐标(xi_r_2,yi_r)确定反馈值ret4;
求解出脉冲坐标(xi_r_1,yi_r)到椭圆圆心的距离leni_r_2:脉冲坐标(xi_r_1,yi_r)到椭圆圆心的矢量和X'正半轴夹角θ'i_r_2的三角函数为:设θ'i'_r_2=θ'i_r_2-β,根据θ'i'_r_2求解出转换到X'OY'坐标系下的脉冲坐标(x'i_r_1,y'i_r):简化上式为:
根据转换后的脉冲坐标(x'i_r_1,y'i_r)求解出反馈值ret3:同理,对(xi_r_2,yi_r)进行处理得到ret4;
步骤(3):若ret3>ret4,则X轴发送脉冲,X轴方向的脉冲坐标xi_r=xi_r_2,若ret3≤ret4,则X轴不发送脉冲,X轴方向的脉冲坐标xi_r=xi_r_1,进而得到第i个脉冲的脉冲坐标(xi_r,yi_r)。
3.根据权利要求2所述的一种基于椭圆弧拟合的NURBS曲线插补方法,其特征在于,所述角度θ的计算方式为:其中,pulunitx为X轴的脉冲当量,pulunity为Y轴的脉冲当量。