CN107817764A - 一种基于s曲线加减速算法的nurbs曲线双向自适应插补算法 - Google Patents

一种基于s曲线加减速算法的nurbs曲线双向自适应插补算法 Download PDF

Info

Publication number
CN107817764A
CN107817764A CN201710994472.7A CN201710994472A CN107817764A CN 107817764 A CN107817764 A CN 107817764A CN 201710994472 A CN201710994472 A CN 201710994472A CN 107817764 A CN107817764 A CN 107817764A
Authority
CN
China
Prior art keywords
mrow
msub
mfrac
msubsup
prime
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710994472.7A
Other languages
English (en)
Other versions
CN107817764B (zh
Inventor
张承瑞
倪鹤鹏
袁佶鹏
姬帅
胡天亮
刘亚男
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN201710994472.7A priority Critical patent/CN107817764B/zh
Publication of CN107817764A publication Critical patent/CN107817764A/zh
Application granted granted Critical
Publication of CN107817764B publication Critical patent/CN107817764B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/41Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by interpolation, e.g. the computation of intermediate points between programmed end points to define the path to be followed and the rate of travel along that path
    • G05B19/4103Digital interpolation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34085Software interpolator

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Numerical Control (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

本发明涉及一种基于S曲线加减速算法的NURBS曲线双向自适应插补算法,属于运动控制领域,方法包括(1)利用NC解释器获取NURBS曲线数据和运动参数;(2)扫描获得NURBS曲线的关键特征,包括NURBS曲线的断点,根据断点将NURBS曲线划分为块,计算每个块的NURBS曲线的弧长和曲率;根据每个块的曲率将块划分为段;(3)利用步骤(2)中得到的每个段的曲线数据和运动参数,获取该段内各周期的进给长度,进而找到新的插值点。本方法考虑了曲率极值点及其附近区域的曲率对速度的约束,保证规划速度在约束范围之内,提高了速度规划和插补的精度;能够实现两个方向插补精确相遇,保证速整个插补过程的速度平滑性。

Description

一种基于S曲线加减速算法的NURBS曲线双向自适应插补算法
技术领域:
本发明涉及一种基于S曲线加减速算法的NURBS曲线双向自适应插补算法,属于运动控制领域。
背景技术:
数控加工已成为现代制造领域的重要组成部分,对高速,高精度加工的需求也在日益增长。用传统线性和圆弧插补的复杂加工将会引起很多问题。平滑曲线形式的参数模型需要离散成大量的小线段,这增加了处理代码的数量。在主时间,小线段一阶不连续且会导致频繁的加速和减速切换。与传统的小线段方法相比,由于表面质量,加工效率,内存消耗和运动平滑度都具有无与伦比的优势,因此广泛使用参数插值法。由于提供了一个通用的数学形式,非均匀有理B样条(NURBS)得到最多的关注,它用于精确呈现标准分析形状以及自由曲线和曲面。鉴于NURBS的优点,STEP-NC采用NURBS作为CAD/CAM 与CNC系统之间数据交换的标准接口。为了实现高速,高精度的CNC加工,NURBS曲线的参数插值已成为现代CNC加工工具的关键工具。然而,NURBS曲线的参数没有包含弧长和曲率的信息所以NURBS曲线的弧长、曲率和参数之间没有解析关系。因此,比起传统的分析如直线和圆弧的曲线,实现NURBS插值更为困难。
通常,高效路径插补分为两个部分:进给速度规划和新的插补点计算。
进给速度规划是NURBS插补中最重要的部分之一。它可以获得平滑的进给率曲线,也可以满足多重约束和插补精度的要求。现已开发了许多进给调度方法。早期提出了一些简单的计算恒定进给速度曲线的方法,这些方法未考虑NURBS曲线曲率,有较大的弦偏差,特别是处理仅为C0连续且临界点有大曲率的曲线,在其断点上的产生的弦偏差较大。后来,一些研究人员根据恒定进给速度曲线做一些改进。例如根据曲率和指定的弦偏差来调整进给速度,或将恒定的材料去除率纳入考虑范围来提高加工精度等。然而,这些方法没有考虑机床的运动学和动态约束,例如可能引起振动和冲击的加速/减速以及加加速度。因此,进度调度应考虑以下限制:
为了实现高精度,弦偏差必须限制在允许范围内;
必须限制加速度,包括切向加速度和向心加速度,以减少惯性并防止冲击。
必须限制加加速度以得到平滑的加速和进给轮廓。
考虑到上述约束,现已提出三类方法来获得连续平滑的速度与加速度曲线,且能根据规划得到的目标速度计算出满足一定速度波动率要求的插补点:第一类是仅考虑曲率极值点处的速度约束,中间点处采用标准S曲线加减速进行速度规划,它考虑了NURBS曲线段起终点的进给限制,但在曲线的中间点,例如各分段的端点可能超出了机床和插补精度的限制。第二类方法是使用前插补算法的方法来解决这些问题,即考虑各插补点速度约束的单向规划方法,但对减速点的预测及减速距离的计算上仅能基于标准 S曲线进行计算,而曲率、弧长和NURBS参数之间又没有解析关系,因此单纯依靠标准S曲线进行减速点的估计,难以在满足约束的情况下获得平滑的速度和加速度曲线。如果可以精确地预测未插值的NURBS 曲线段的曲率和弧长,特别是在曲率较大的地方,则不存在这些问题。为了获得当前插补段剩余曲线的信息,南京航空航天大学的罗福源等提出了第三类方法——双向优化插值方法。通过正向和反向同步插补和特殊位置输出策略,可以获得满足多个约束条件的平滑进给速度曲线和加速度曲线。然而,利用该方法双向优化相遇时,速度不相等、且加速度不等于0,当要调整的边加速度较小时,基于最大进给速度调整的相遇判断方法将显着降低插补效率。此外,每个采样周期都调整最大进给速度是耗时的。
基于此,本发明提出了基于S型加减速的NURBS曲线双向寻优插补算法,简称BAIN方法。
发明内容:
针对现有的NURBS曲线插补算法存在的问题,本发明的目的是提出一种新型双向自适应插补算法,能将速度规划与插补结合起来,以相遇时速度相等且具有0加速度为条件,正反两个方向同时进行插补计算,考虑整个插补过程中曲线曲率、弓高误差等对速度的约束作用,特别是在终点处附近,保证运动过程中速度与加速度的平滑性,推导出计算公式,并给出该方法的规划方法。
术语说明
C1连续性中的C1是指有一阶连续导数,以此类推。C1连续性是通过辛普森规则的数值积分方法精确计算曲线弧长的基本条件。
曲线上的断点是指视觉上不连续的点,在断点区域的进给速度始终设定为0mm/s。
S曲线算法规则中的阶段1、2、3、4、5、6、7分别代表加加速、匀加速、减加速、匀速、加减速、匀减速、减减速阶段。
本发明的技术方案如下:
一种基于S曲线加减速算法的NURBS曲线双向自适应插补算法,包括步骤如下:
(1)提取数据;利用NC解释器获取NURBS曲线数据和运动参数至运动数据缓冲区;
(2)预处理阶段;扫描获得NURBS曲线的关键特征,所述关键特征包括NURBS曲线的断点,根据断点将NURBS曲线划分为块,计算每个块的NURBS曲线的弧长和曲率;根据每个块内曲线的曲率将块划分为段;
(3)实时插补阶段;利用步骤(2)中得到的每个段的曲线数据和运动参数,获取该段内各周期的进给长度,进而找到新的插值点。
优选的,步骤(2)中,预处理阶段包括以下子模块步骤:
2-1、读取NURBS曲线数据和运动参数,所述曲线数据包括:阶数P、控制点{Pi}、节点向量{ui}、权因子{wi},所述运动参数包括指令进给速度F、最大加速度、最大加加速度;
2-2、在NURBS曲线的断点处划分曲线:
根据读取的曲线数据,检测判断曲线中的断点,进一步优选的,检测判断为断点的情况包括以下两种:一种是判断有C0连续性的点是断点;一种是判断具有C1连续性的点,如果其节点向量的相应控制点是两个及以上控制点时将该点归为断点。利用断点将总的NURBS曲线分为不同的块,每一个块可以表示为[ubi,ubi+1],ubi和ubi+1分别代表该区间块的起点位置和块的终点位置,bi=1,2…..n,n为块的个数。
2-3、对每一个划分的块计算弧长和曲率;基于辛普森规则的自适应正交方法为本领域公知的求样条曲线弧长的方法;基于辛普森规则的自适应正交方法,是通过一系列样条参数子区间[ubi,ubi+1]和边界节点的累计弧长lbi获得该样条参数子区间的弧长的方法;
利用基于辛普森规则的自适应正交方法求得每个块的弧长lbi,在计算弧长期间,同时求得每个块的边界节点的曲率,NURBS曲线C(u)的参数ubi处的曲率κ(ubi)表示如下:
把求得的每个块的弧长和曲率,生成特征数据缓冲区{[ubi,κ(ubi),lbi]};
2-4、判断每个块上的关键点,在每一个划分的块上再依据关键点划分为不同的段,对于第i个段,可以获得数据缓冲区其中ui是该段的起点参数和该段的起点的限制进给速度,uj是该段的终点参数和该段的终点的限制进给速度,lij是该段的弧长;
进一步优选的,关键点的判断步骤为:首先,通过扫描每个块上的特征数据缓冲区{[ubi,κ(ubi),lbi]},找出具有比两个相邻边界节点更大的曲率的点作为候选点;其次,计算每个候选点的由弓高误差和向心加速度约束的进给速度
对于弓高误差,进给速度应满足以下关系:
其中κi是第i个候选点的曲率,δcho是最大允许误差,Ts是采样时间。
对于向心加速度,进给速度应满足以下关系:
其中amaxc是允许最大向心加速度;
因此,限制进给速度可以表示如下:
最后,限制进给速度小于指令进给速度F的候补点为关键点。
2-5、优化各段的进给速度,获得每个段的起始进给速度、终点进给速度,存入新的数据缓冲区 为第i段的节点矢量(即段缓冲区内的ui和uj),为第i段的起始进给速度 (在进入优化前赋),为第i段的终点进给速度(在进入优化前赋),为第i段的弧长(即段缓冲区内的lij);优化方法为反向规划和正向规划两部分结合组成的双向进给率预测方法,包括步骤如下:
2-5-1、根据标准S曲线加减速算法反向规划并更新数据缓冲区
2-5-2、根据标准S曲线加减速算法正向规划并更新数据缓冲区进入反向规划校正模块;
2-5-3、读取当前块的总段数k;
2-5-4、判断本段起始速度是否大于若是,进入2-5-5;若否,将当前段数k更新为k-1,返回步骤2-5-4;
2-5-5、根据提出的自适应进给调度方法进行反向插补,将反向插补结果存储到数据缓冲区 {[uj,C(uj)]};判断是否大于反向最大速度且剩余弧长是否大于0,若是,重新进入2-5-5;若否,进入2-5-6;
2-5-6、判断是否小于等于反向最大速度若是,将k更新为k-1,返回步骤2-5-4;若否,进入2-5-7;
2-5-7、使用更新以保证本段能规划完成;此部分主要内容是更新速度。
优选的,步骤(3)中,实时插补阶段包括进给速度规划和目标插补点计算,在进给速度规划模块中获得每个周期的进给速度和进给弧长;在目标插补点计算模块中,根据获得的进给弧长计算出目标插补点的位置。
进一步优选的,进给速度规划包括以下两个子模块步骤:基于S型加减速算法的进给速度和加速度自适应调度,以及双向插补计算进给长度;
基于S型加减速算法的进给速度和加速度自适应调度,是根据预处理阶段求得的每个段的曲线数据、运动参数,自适应的求出每个段中各个进给周期的速度、加速度。
又进一步优选的,基于S型加减速算法的进给速度和加速度自适应调度包括步骤如下:
运动参数需要满足三个条件:
第一,令运动参数满足不等式如下:
vi≤F (5);
ai≤atmax (6);
Ji≤Jmax (7)
vi,ai和Ji分别是第i段的目标进给速度、加速度和加加速度,F是指令进给速度,atmax是允许的最大加速度,Jmax是允许的最大加加速度;
第二,目标进给速度vi应满足公式(2)、(3)所示的弓高和向心加速度约束。
第三,基于S型加减速算法,目标进给速度、加速度和加加速度表示如下:
其中阶段1,阶段2,阶段3和阶段4分别表示S形加减速算法的加加速阶段,匀加速阶段,减加速阶段和匀速阶段,在ai-1=atmax之前,插补应在阶段1中且满足Ji=Jmax;当ai-1=amax时,插补应进入阶段2且满足Ji=0。进入阶段3和阶段4的条件将在后面进行分析。
根据方程(4)-(10),目标加速度ai和目标进给速度vi用如下方法表示:
ai=min[amax,max(ai-1+JiTs,0)] (11)
为了使目标加速度ai和进给速度vi相匹配,更新ai、vi
基于公式(8)派生出如下方程:ai=2(vi-vi-1)-ai-1Ts (13)
第i个周期的相应目标进给长度Si基于公式(8)-(13)求得如下:本文所有的i,j代指的并不是特定的数,i、j可以代指1、2、3、4…的任何一个数;
最后,如果当前处于阶段1或阶段2,则使用S型加减速算法将加速度从ai减速到零时,运动参数应保证在允许的范围内。如图3所示,相应的减速时间tdi和最大进给速度vdi可以表示如下:
从vi到vdi的相应位移Sdi由基于等式(15)-(16)再用公式(17)求出:
使用特征数据缓冲区{[uii,li]}来估计κdi,如下所示:
此时如果此时vdi>F,那么进给速度调度在下一个阶段进入阶段3。从上一个计算结果可知,在a′i=ai-1-JmaxTs的情况下vdi-1在目标加速度a′i的允许范围内,且由于在一个段中ai和vdi与曲率曲线的不止一个固定点之间有单调增加的关系,对于构成的方程式,在[a′i,ai)中一定存在唯一解a′i
方程(19)是高阶方程,利用二分法求解a″i,求解出的a″i为更新后的ai,进一步优选的,二分法求解方法为:step1,初始参数,aH=ai,aL=a′i,进入step2;
step2,令根据公式(17)-(19)计算g(a″i),判断是否|g(a″i)|<δdic,是,进入step3,否,进入step4;
step3,输出a″i
step4,判断g(a″i)>0,是,进入step5,否,进入step6;
step5,令aH=a″i,返回step2;
step6,令aL=a″i,返回step2;其中δdic表示允许误差。
进一步优选的,规划整个段内各个周期的速度,双向插补计算进给长度,包括步骤如下:
3-2-1、阶段1:在每个段内,基于段起点最大进给速度和段终点最大进给速度进行双向进给速度调节和插补;阶段1中,在S型加减速规则的阶段1,2和相应的6,7中同步执行双向插补,定义1、2 方向为正向,将正向插补的长度输出到目标插补点计算模块;将反向插补长度存储在数据缓冲区中;在实时插补过程中需要对进行调整,设定
步骤1:将调整直到
调整后的目标进给速度可如下表示:
其中a′i f是调整后的目标加速度,最大进给速度可以相应地导出如下:
至此完成将调整直到
因此,根据方程(22)和(23)可推导出如下等式:
方程(24)是一个二次方程,因此可直接求解得下式:
相应地,调整后的目标长度S′i f和预测的减小加速度长度可以基于等式(14)-(17)求出,反向插补的目标长度和预测的减小加速度长度分别为然后,两个方向的目标长度和预测长度应与剩余长度 Sij′进行比较如下:
转至步骤3;
转至步骤2;
其中
步骤2:重新调整
在这个步骤中,减小a′i f维持其中为调整时段起点和段终点的最大进给速度,因此,可根据(22)-(23)推导至下式:
公式(26)中,只有a″i f是未知;
其中a″i f和a″j b是分别是两个方向的调整目标加速度,f指代正向,b指代反向,两个方向相应的位移可以根据(14)-(17)式推理出:
其中:
最后,双向插补的各种长度应满足以下公式:
其中根据(26)-(30),可以选择正向插补的调整目标加速度a″i f作为自变量,并且可以得到如下构造方程:f(a″i f)=0 (31)
由于式(31)是a″i f的高阶方程,所以选择Newton-Raphson方法来求解a″i f,有以下迭代格式:
其中σ表示最大相对根误差,a0是初始值;
从方程(16)可以得出,单调递增。因此,基于双向自适应插补策略和方程(20),上一个周期计算的最大进给速度小于或等于如图7所示。因此,在中必须存在一个a″i f独特的解决方案,其中此外,基于步骤1的计算结果,可以推导出因此,a0设定为利用公式(32)求出a″i f,将其代入(26)、(27),求出重新调整后的进入步骤3;
步骤3:利用当前速度与插补周期求得目标进给长度,(所述当前速度为正向),将目标进给长度输出到目标插补点计算模块,重新判断当前所处的插补阶段,如果当前处于s曲线算法的阶段1、2,则重新进入阶段1;否则,进入阶段2;至此,在阶段1中完成s曲线算法的阶段1、2、6、7内的进给速度调节和插补;
3-2-2、阶段2:基于具有舍入误差补偿的复合算法的单向进给速度调节和插补;
设定标准S形加减速算法获得的三个时间分别为tp3,tp4和tp5,阶段2的总内插循环次数可以计算如下:
运算符“[]”表示舍入。因此,需要补偿的舍入误差Δl只是对应于Δt的长度,Δt可以表示如下:
Δt=(tp3+tp4+tp5)-N345Ts<Ts (34),
为确保匀速阶段存在,tp4应大于Δt,否则引入Scon、使tp4始终存在并且时长至少有1个插补周期;Scon为取自剩余未插补曲线的一段弧长;
同时,为了防止加速度和进给速度轮廓的不连续性,需要解决两个主要问题。首先,补偿插补时间Δt 和长度Δl应取自匀速阶段。因此,为确保匀速阶段存在,tp4大于Δt。其次,误差补偿方法需要保持加速度和进给速度曲线的平滑度。
对于第一个问题,长段的条件可以很容易地满足。但是对于短的段,常规进给速度规划方法可能不存在匀速进给阶段。为了应对这个问题,Scon被创造性地引入到阶段1中给出的相遇检测模块和进给率调整模块,其可以保证匀速进给阶段始终存在并且时长至少有1个插补周期。因此,无论段是长是短条件都必定满足。
对于第二个问题,提出了一种基于复合加减速算法的新颖的误差补偿方法。对于需要补偿的舍入误差Δl,规划算法如下:本发明使用了改进的梯形加减速算法。其加速度曲线是连续的,加速度公式可以表示为:
其中公式(35)中的T是Δl的总运动时间,具有与加速度相同的时间分配规则的位移公式可以通过等式(36)的积分得出如下:
由于改进梯形加减速算法的总时间按一定比例分为五个部分,总位移Strap,T和最大加速度amax之间存在特殊关系,可以得出:
根据等式(37)和两个条件:可以算出式(34)-(35)中的所有参数。因此,等式(37)是使得改进的梯形加减速算法非常适合于舍入误差补偿的关键特性,其可以保持进给速度和加速度曲线的平滑度。因此,根据式(36)可以容易地获得每个周期的补偿长度ΔlT,阶段2中的每个插补周期的进给长度Δlcom可以如下计算:
Δlcom=ΔlS+ΔlT (38)
其中ΔlS是由公知的标准S形加减速算法计算获得的补偿长度,ΔlT是由改进的梯形加减速规则计算的补偿长度,将目标进给长度Δlcom输出到目标插补点计算模块;
当阶段2的插补结束时,进入阶段3。
3-2-3、阶段3:反向提取反向插补数据;
在这个阶段,由于剩余部分已经通过在阶段1中进行的反向插补进行了插补,所以不需要计算进给长度和对应的目标点位置。因此,可以以相反的顺序提取阶段(1)中数据缓冲区所存储的反向插补数据并输出到目标插补点计算模块;当所有阶段(1)中数据缓冲区所存储的数据都被取出,则当前段的插补结束,进入下一个段的插补。
进一步优选的,目标插补点计算模块包括步骤如下:
3-3-1、根据进给长度确定目标插补点的参数unext
采用现有的收敛速度和计算负荷两种方法,应用基于预测器和校正器规则的数值计算方法来找出目标点的参数unext;在预测阶段,初始值u0可以通过二阶扩展获得,表示如下:
其中L是当前周期的进给长度,然后在校正阶段,将具有式(43)所示格式的牛顿-拉夫逊方法用作具有指定的进给率波动公差δflu的校正算法,该方程可以构造如下:
F(unext)=||C(unext)-C(ui-1)||-L=0 (40)
3-3-2、基于de Boor-Cox算法,通过将unext代入路径C(u)描述来计算目标内插点位置C(unext)。
本发明的有益效果如下:
利用本发明的算法方案,在进行NURBS曲线双向自适应插补时,速度规划过程中采用双向插补策略,考虑了曲率极值点及其附近区域的曲率对速度的约束,保证规划速度在约束范围之内,提高了速度规划和插补的精度;针对双向插补过程,提出了相遇判断及最大速度调整策略,能够实现两个方向插补精确相遇,同时提出了基于复合加减速方法的圆整误差补偿方法,优化了相遇过程的速度规划方法,保证速整个插补过程的速度平滑性。
附图说明
图1是本发明所述的NURBS曲线双向自适应插补算法的流程图;
图2是本发明优化的进给速度前瞻策略;
图3(a)是ai-1<amax情况下基于S型曲线加减速算法的进给速度调节;图3(b)是ai-1=amax情况下基于S型曲线加减速算法的进给速度调节;
图4是基于二分法的解决方案的流程图;
图5是双向插补策略流程图;
图6是正、反向的进给速度和加速度分布;
图7(a)是试验曲线之蝴蝶形曲线;图7(b)是蝴蝶形曲线的曲率;图7(c)是试验曲线之∞形曲线;图7(d)是∞形曲线的曲率;
图8(a)是BAIN方法对蝶形曲线的插补结果之进给速度;图8(b)是BAIN方法对蝶形曲线的插补结果之切向加速度;图8(c)是BAIN方法对蝶形曲线的插补结果之弓高误差;图8(d)是BAIN方法对蝶形曲线的插补结果之向心加速度;图8(e)是BAIN方法对蝶形曲线的插补结果之加加速度;
图9(a)是NIFS方法的蝶形曲线插补结果之进给速度;图9(b)是NIFS方法的蝶形曲线插补结果 之切向加速度;图9(c)是NIFS方法的蝶形曲线插补结果之弓高误差;图9(d)是NIFS方法的蝶形曲 线插补结果之向心加速度;图9(e)是NIFS方法的蝶形曲线插补结果之加加速度;
图10(a)是BOI方法对蝶形曲线的插补结果之进给速度;图10(b)是BOI方法对蝶形曲线的插补结果之切向加速度;图10(c)是BOI方法对蝶形曲线的插补结果之弓高误差;图10(d)是BOI方法对蝶形曲线的插补结果之向心加速度;图10(e)是BOI方法对蝶形曲线的插补结果之加加速度;
图11(a)是NIFS方法对∞型曲线的插补结果之进给速度;图11(b)是NIFS方法对∞型曲线的插补结果之切向加速度;图11(c)是NIFS方法对∞型曲线的插补结果之弓高误差;图11(d)是NIFS方法对∞型曲线的插补结果之向心加速度;图11(e)是NIFS方法对∞型曲线的插补结果之加加速度;
图12(a)是BOI方法对∞型曲线的插补结果之进给速度;图12(b)是BOI方法对∞型曲线的插补结果之切向加速度;图12(c)是BOI方法对∞型曲线的插补结果之弓高误差;图12(d)是BOI方法对
∞型曲线的插补结果之向心加速度;图12(e)是BOI方法对∞型曲线的插补结果之加加速度;
图13(a)是BAIN方法对∞型曲线的插补结果之进给速度;图13(b)是BAIN方法对∞型曲线的插补结果之切向加速度;图13(c)是BAIN方法对∞型曲线的插补结果之弓高误差;图13(d)是BAIN方法对∞型曲线的插补结果之向心加速度;图13(e)是BAIN方法对∞型曲线的插补结果之加加速度;
图14是BAIN方法的计算时间分布。
具体实施方式
下面通过具体的实施例对本发明的技术方案做进一步的说明,但不限于此。
实施例1:
一种基于S曲线加减速算法的NURBS曲线双向自适应插补算法,包括步骤如下:
(1)提取数据;利用NC解释器获取NURBS曲线数据和运动参数至运动数据缓冲区;
(2)预处理阶段;扫描获得NURBS曲线的关键特征,所述关键特征包括NURBS曲线的断点,根据断点将NURBS曲线划分为块,计算每个块的NURBS曲线的弧长和曲率;根据每个块内曲线的曲率将块划分为段;
预处理阶段的主要任务是通过扫描获得NURBS曲线的关键特征。因此,它有一些不同目的的子模块,例如断点处的曲线分割,每个块上的弧长度和曲率计算,在临界点划分段,使用优化前瞻算法对每个块上的段进行进给速度前瞻。使用曲线分割模块获得至少是C1连续的几个块。弧长和曲率计算模块可以得到一系列特征数据,包括弧长,曲率和相应参数。通过分割段模块,可以检测几个关键点,并且可以根据关键点将每个块细分为多个段。最后,通过采用优化的前瞻算法的进给率预测模块可以获得每个段的终点进给速度。
(3)实时插补阶段;利用步骤(2)中得到的每个段的曲线数据和运动参数,获取该段内各周期的进给长度,进而找到新的插值点。在实时插补阶段,主要任务是在每个插值周期找到新的插值点。包括两个子模块,分别是进给速度规划和新的插补点计算。首先,在进给速度规划模块中,提出了一种新颖的双向自适应插补方法,以获得每个周期合适的进给速度和进给弧长。然后,在新的插补点计算模块中,可以根据给定的弧长计算相应的样条参数和新的插补点位置。下面详细展开说明:
1预处理阶段
1.1断点处的曲线分裂
断点是在曲线上视觉上不连续的点。在这些区域,进给速度始终设定为0mm/s。此外,C1连续性是通过辛普森规则的数值积分方法精确计算曲线弧长的基本条件。因此,考虑到进给速度前瞻的简化和弧长计算的要求,有必要找到断点并将整个曲线分割成几个块。
检测曲线上的断点有两种情况。首先,只有C0连续性的点是断点。其次,具有C1连续性的点,其节点向量的相应控制点是两个及以上控制点时可能归类为断点(NURBS相关定义)。
通过上述两种断点检测,总曲线可以分为几个块,每一个块可以表示为[ubi,ubi+1],ubi和ubi+1分别代表该区间块的起点位置和块的终点位置,bi=1,2…..n,n为块的个数。
1.2每一个划分的块的弧长与曲率计算
每个块的弧长是进给速度前瞻和实时插补的基础。基于辛普森规则的自适应正交方法,可以通过一系列样条参数子区间[ubi,ubi+1]和边界节点的累计弧长lbi大致获得弧长。此外,实时插值中的每个块划分和进给速度调节都需要曲率κ以满足进给速度的多重约束。因此,在计算弧长期间,应同时获得每个子区间边界节点的曲率。NURBS曲线C(u)的参数ui处的曲率κ(ui)可以表示如下:
把求得的每个块的弧长和曲率,生成特征数据缓冲区{[ubi,κ(ubi),lbi]}。
1.3在关键点分段
考虑到机床的插补精度和运动特性,NURBS曲线块中具有较大曲率的尖角在进给速度上将具有弓高误差和向心加速度的约束。因此,在样条曲线的块中具有多个加速和减速过程是合理的。为了简化进给速度调节,必须在关键点进一步将块划分为多个段。因此每个段都是进给速度调节的基本单位。每个段中都有一个加速和减速过程。要找到关键点,有三个步骤。首先,通过扫描每个块上的特征数据缓冲区{[ubi,κ(ubi),lbi]},找出作为具有比两个相邻边界节点更大的曲率的边界节点的候选点。其次,可以计算每个候选点的由弓高误差和向心加速度约束的进给速度对于弓高误差,进给速度应满足以下关系:其中k是第i个候选点的曲率,是最大允许误差,Ts是采样时间。
对于向心加速度,进给速度应满足以下关系:其中amax是允许最大向心加速度。
因此,限制进给速度可以表示如下:
最后,限制进给速度小于指令进给速度F的候补点是关键点。因此,样条曲线上的块被划分成若干段。同时,对于第i个段,可以获得数据缓冲区其中ui是该段的起点参数和该段的起点的限制进给速度,uj是该段的终点参数和该段的终点的限制进给速度,lij是该段的弧长。
1.4使用优化前瞻策略的各段进给速度前瞻
为了在实时插补阶段使用S型加减速算法获得每个段的连续进给速度曲线,必须首先通过进给速度前瞻来计算此段的起始和终止速度。在本模块中,不仅考虑了1.3节给出的每个段的速度限制,也考虑了弧长和S形加减速算法。本部分选择了由反向规划和正向规划两部分结合组成的双向进给率预测策略。首先,假设每个块的末端进给速度为0mm/s。并应用反向规划计算出每个块的最后一段到起始段的每个段的起始点进给速度。也就是说,反向规划的目的是通过标准的S形加减速算法来保证每个块的最后一段的进给速度可以减慢到0mm/s。同时,通过其下一段的最终进给速度来更新每个段的末速度。其次,正向规划也适用于重新计算每个块从起始段到最后段的每个段的末速度。通过这两个步骤,可以确保每个段的启动进给速度平滑地达到末速度,并且可以保证在每个块的最后一段进给速度可以符合S曲线加减速算法降低到0mm/s。
然而,利用上述的进给率前瞻策略,仅能考虑到每个段的开始和结束点处的进给速度约束。进给速度和弧长计算完全符合标准S形加减速算法。然而,在每个段的中间部分进给速度的多重约束确实存在,但是在起始点和终点附近的约束却没有考虑到。对于第i段的起始进给速度和末进给速度如果由于多个进给限制,实际的末进给速度可能小于但进给速度曲线仍然是在可接受范围内满足加加速度限制和且平滑的。相反,如果可能无法在满足约束的情况下变速到这意味着进给速度曲线在正向插补中将不够平滑。因此,基于标准加减速规则的前瞻结果理论上对于实际插补是不合理的。为了解决这个问题,本专利提出了一种优化的前瞻策略,流程图如图2所示。
包括步骤如下:
2-5-1、根据标准S曲线加减速算法反向规划并更新数据缓冲区
2-5-2、根据标准S曲线加减速算法正向规划并更新数据缓冲区进入反向规划校正模块;
2-5-3、读取当前块的总段数k;
2-5-4、判断本段起始速度是否大于若是,进入2-5-5;若否,将当前段数k更新为k-1,返回步骤2-5-4;
2-5-5、根据提出的自适应进给调度方法进行反向插补,将反向插补结果存储到数据缓冲区 {[uj,C(uj)]};判断是否大于反向最大速度且剩余弧长是否大于0,若是,返回步骤2-5-4;若否,进入2-5-6;
2-5-6、判断是否小于反向最大速度若是,将k更新为k-1,返回步骤2-5-4;若否,进入2-5-7;
2-5-7、使用更新以保证本段能规划完成。
此部分主要内容是更新速度。
反向规划校正模块能够校正反向规划模块中同一方向的每段的起始进给速度和末进给速度。对于满足的段,反向插补是根据第2节中详细介绍的自适应进给速度调度方法逐步计算的,直到速度大于或等于且此时加速度为零。同时,能够计算出每个插值步长中当前插补点与当前段起始点之间的剩余弧长。如果剩余弧长和分别大于零和是可接受的速度。否则,当剩余长度为零时,应更新为因此,可以在反向规划校正模块之后以合理的起始进给速度和结束进给速度等数据来校正每个段的数据缓冲区同时,应该存储反向插补点数据 {[ui,C(ui)]}以简化实时插补。此外,反向规划校正模块对确保第2节中提出的双向自适应插补方法的实时性很重要。
2实时插补阶段
实时插补阶段的主要任务是获取进给长度,并计算每个插补周期内相应的目标插补点。传统的进给速度调度方法是基于标准加减速算法单向计算进给速度和进给长度。但是,每个段的中间部分,尤其是端点附近的进给速度的连续约束被忽略,这可能会降低精确度,并导致过大的进给速度波动,冲击和振动。对于这些问题,本发明提出了一种新型的双向自适应插补方法,实时插补阶段包括进给速度规划和目标插补点计算,在进给速度规划模块中获得每个周期的进给速度和进给弧长;在目标插补点计算模块中,根据获得的进给弧长计算出目标插补点的位置。
进给速度规划又包括以下两个子模块步骤:基于S型加减速算法的进给速度和加速度自适应调度,以及双向插补计算进给长度;基于S型加减速算法的进给速度和加速度自适应调度,是根据预处理阶段求得的每个段的曲线数据、运动参数,自适应的求出每个段中各个进给周期的速度、加速度。
另外,在基于S型加减速算法的进给速度和加速度自适应调度模块中也考虑了周期采样引起的循环误差和补偿。
2.1双向自适应插补方法的基础
如果每个段的进给速度调节可以在两个方向自适应执行,则可以考虑中间部分特别是起点和终点附近区域的各种约束,由单向插补引起的问题也可以迎刃而解了。由于步骤(2)预处理阶段中划分出的“段”是进给速度调节的基本单位,因此每段的总插补任务由加速阶段和减速阶段两个阶段组成。因此,加速和减速阶段可以分为两个同步进程,加速阶段进行正向插补,减速阶段进行反向插补。在双向插补期间能够在满足多个进给速度约束的情况下实时获得两个方向的进给速度。此外,本发明也提出了一种自适应双向插补策略,以确保双向插补的效率和稳定性。此外,为了获得平滑的速度和加速度曲线,双向插补两个方向的加速度应该在交点处相等,并且圆周误差必须平滑。因此,提出了一种考虑误差补偿的相遇判断方法,包括在每个插补时段中执行的检测模块和相遇发生时应用的进给速度调整模块。同时,可以用能保证进给速度和加速度曲线的平滑的复合加减速算法来补偿偏差。
为了减少计算量,方案采用了特殊的插补结果输出策略。在双向插补相遇之前,只输出正向插补结果,且存储而不输出反向插值的结果;在相遇之后,存储的反向插补数据以与正向输出相反的顺序取出,直到当前段的插值完成为止。
2.2基于S型加减速算法的进给速度和加速度自适应调度
由于向前和向后插补均为加速过程,因此本节仅分析进给速度的加速调度。实时插补时,每个插补点的运动参数应满足三个约束条件。首先,考虑机床的驱动功率和摩擦力,材料去除率,加工过程和加工精度等因素,运动参数满足不等式如下:
vi≤F (5);
ai≤atmax (6);
Ji≤Jmax (7)
vi,ai和Ji分别是第i段的目标进给速度,加速度和加加速度。F是指令进给速度,atmax是允许的最大加速度,Jmax是允许的最大加加速度。
其次,目标进给速度vi应满足公式(2)、(3)所示的弓高和向心加速度约束。
第三,基于S型加减速算法,目标进给速度、加速度和加加速度表示如下:
其中阶段1,阶段2,阶段3和阶段4分别表示S形加减速算法的加加速阶段,匀加速阶段,减加速阶段和匀速阶段。在ai-1=atmax之前,插补应在阶段1中且满足Ji=Jmax;当ai-1=amax时,插补应进入阶段2且满足Ji=0。
根据方程(4)-(10),目标加速度ai和进给速度vi可以用如下方法表示:
ai=min[amax,max(ai-1+JiTs,0)] (11)
为了使目标加速度ai和进给速度vi相匹配,更新ai、vi
考虑到计算量,由于一个插补周期内的进给长度小,NURBS曲线的曲率连续,所以目标点κi的曲率可以由当前点值κi-1代替,而不是通过复杂的迭代计算出来。此外,目标加速度ai应该被更新,因为最终进给速度vi可能不能通过方程(8)获得。因此,基于公式(8)派生出如下方程:
ai=2(vi-vi-1)-ai-1Ts (13)
第i个周期相应目标进给长度Si可以基于公式(8)-(13)如下:本文所有的i,j代指的并不是特定的数,i、j可以代指1、2、3、4…的任何一个数;
最后,如果插补处于阶段1或阶段2,则使用S型加减速算法将加速度从ai减速到零时,运动参数应保证在允许的范围内。如图3所示,相应的减速时间和最大进给速度可以表示如下:
从vi到vdi的相应位移Sdi由基于等式(15)-(16)再用公式(17)求出:
由于Sdi可能比进给量Si大得多,所以相应的κdi不能被当前曲率κi-1代替。然而,κdi的精确计算是耗时而不必要的。因此,使用基于1.2节给出的特征数据缓冲区{[uii,li]}的线性插值方法来估计κdi,如下所示:
此时特别是如果此时vdi>F,那么进给速度调度在下一个阶段进入阶段3。从上一个计算结果可知,在a′i=ai-1-JmaxTs的情况下vdi-1在目标加速度a′i的允许范围内,且由于在一个段中ai和vdi与曲率曲线的不止一个固定点之间有单调增加的关系,对于构成的方程式,在 [a′i,ai)中一定存在唯一解a″i
方程(19)是高阶方程。因此,二分法可以用于求解a″i,二分法的流程图如图4所示:
step1,初始参数,aH=ai,aL=a′i,进入step2;
step2,令根据公式(17)-(19)计算g(a″i),判断是否|g(a″i)|<δdic,是,进入step3,否,进入step4;
step3,输出a″i
step4,判断g(a″i)>0,是,进入step5,否,进入step6;
step5,令aH=a″i,返回step2;
step6,令aL=a″i,返回step2。其中δdic表示允许误差。
通常,基于标准S形加减速算法计算出的v′i和v′d之间的进给速度总是可以满足多个约束,因为在阶段3中的加加速度为负,但曲率正在减小。因此,为了简化计算,不判断v′i和v′d之间的进给速度是否可以满足各种约束。在阶段3的插补期间,如果ai=0,根据(10)-(11),进给速度调度应在下一阶段进入第 4阶段。
2.3自适应双向插补策略
为了实现高效稳定的双向插补,提高进给速度平滑度,本部分有三个主要任务。首先,需要给出双向插补规划方法,以确定是否在一段时间内进行正向或反向插补。其次,必须保证会合点两个方向的进给速度彼此相等,加速度为零。第三,循环采样引起的舍入误差需要补偿,同时保持进给速度和加速度曲线的平滑度。因此,提出了一个自适应双向插补策略,它由三个阶段组成,其流程如图5所示。
阶段1:在每个段内,基于段起点最大进给速度和段终点最大进给速度进行双向进给速度调节和插补;
在这个阶段,在S型加减速规则的阶段1,2和相应的6,7中同步执行双向插补。将正向插补的长度输出到目标插补点计算模块;将反向插补长度存储在数据缓冲区中。应用双向自适应插补规划方法,选择正向插补的最大进给速度和反向插补的作为规划条件。如果正向插补根据基于S形加减速算法求出的目标进给速度进给长度和相应的预测减小加速度长度步进;相反,反向插补相对于进行保存,直到可以看出,1.4节中给出的优化进给速度前瞻算法对于确保实时性能非常有用,特别是当起动速度远大于NURBS曲线段的最终速度时。因此,通过这种双向插补规划方法,可以保证每个周期可以应用一次正向插补,并且每个插补周期的两个方向的最大进给速度总是满足如下不等式:
这个不等式是进给速度调整至两个方向相遇的重要条件。
为了防止双向插补的过冲,确保了汇合点的进给速度和加速度的平滑度,提出了一种新的相遇判断方法,由两个主要模块组成,即相遇检测模块和进给速度调整模块。在每次正向或反向进给调度之后,应将获得的参数提交给相遇检测模块。如果
其中是插补段的剩余长度,它们在舍入误差补偿中具有重要意义,并且将在第2阶段中详细介绍,这意味着基于当前进给速度的双向插补不能相互满足调度。因此,可以计算相应的目标点位置C(ui)或C(uj)。否则就会发生相遇,应停止反向插补。特别是,如果可以准确地接受进给调节结果。但是,如果则应进入进给规划模块。考虑到插补方向和位移与最大进给速度的关系,有很多个类型。如图6所示,这里讨论和正向进给速度的类型,其他类型具有相似的分析步骤和调整结果。进给速度调节模块由三个子步骤组成,可以描述如下:
步骤1:将调整直到
调整后的目标进给速度可如下表示:
其中a′i f是调整后的目标加速度。最大进给速度可以相应地导出如下:
至此完成将调整直到
因此,根据方程(22)和(23)可推导如下等式:
方程(24)是一个二次方程,因此可直接求解得下式:
相应地,调整后的目标长度S′i f和预测的减小加速度长度可以基于等式(14)-(17)求出。然后,两个方向的目标长度和预测长度应与剩余长度Sij′进行比较如下:
转至步骤3;
转至步骤2;
其中
步骤2:重新调整
在这个步骤中,a′i f应进一步减小以维持其中为调整时段起点和段终点的最大进给速度。因此,可根据(22)-(23)推导至下式:
公式(26)中,只有a″i f是未知;
其中a″i f和a″j b是分别是两个方向的调整目标加速度。f指代正向,b指代反向,两个方向相应的位移可以根据(14)-(17)式推理出:
其中:
最后,双向插补的各种长度应满足以下公式:
其中根据(26)-(30),可以选择正向插补的调整目标加速度a″i f作为自变量,并且可以得到如下构造方程:f(a″i f)=0 (31)
由于式(31)是a″i f的高阶方程,所以选择Newton-Raphson方法来求解a″i f。有以下迭代格式:
其中σ表示最大相对根误差,a0是初始值。
从方程(16)可以得出,单调递增。因此,基于双向自适应插补策略和方程(20),上一个周期计算的最大进给速度小于或等于如图7所示。因此,在中必须存在一个a″i f独特的解决方案,其中此外,基于步骤1的计算结果,可以推导出因此,a0可以定为利用公式(32)求出a″i f,将其代入(26)、(27),求出重新调整后的进入步骤3。
步骤3:利用当前速度与插补周期求得目标进给长度,(所述当前速度为正向),将目标进给长度输出到目标插补点计算模块,重新判断当前所处的插补阶段,如果当前处于s曲线算法的阶段1、2,则重新进入阶段1;否则,进入阶段2;至此,在阶段1中完成s曲线算法的阶段1、2、6、7内的进给速度调节和插补;
(2)阶段2:基于具有舍入误差补偿的复合算法的单向进给速度调节和插补
在这个阶段,应该对剩下的进行S型加减速规则的阶段3,4和5的进给速度调整和插补,这样两个方向的插补将相遇。然而,由于自适应进给速度调整和相遇进给速度调整模块的实现,难以获得三个阶段的时间,它们都是插补周期Ts的整数倍。因此,舍入误差的存在是不可避免的。然而,舍入误差对插补精度和进给速度和加速度曲线的平滑度有很大的影响。由于双向插补方法的特殊性,传统的舍入误差补偿方法不合适,将使加速度不连续并对机床产生影响。因此,本专利基于复合加减速算法也提出了一种新的单向进给调度方法,该方法具有二阶插补的舍入误差补偿。
根据标准S型加减速算法,加速度和进给速度曲线是连续的。因此,只需确保每个阶段时间的和为T 的整数倍。根据该原理,设定标准S形加减速算法获得的三个时间分别为tp3,tp4和tp5,阶段2的总内插循环次数可以计算如下:
运算符“[]”表示舍入。因此,需要补偿的舍入误差Δl只是对应于Δt的长度,Δt可以表示如下:
Δt=(tp3+tp4+tp5)-N345Ts<Ts (34),
为确保匀速阶段存在,tp4应大于Δt,否则引入Scon、使tp4始终存在并且时长至少有1个插补周期;Scon为取自剩余未插补曲线的一段弧长。
为了防止加速度和进给速度轮廓的不连续性,需要解决两个主要问题。首先,补偿插补时间Δt和长度Δl应取自匀速阶段。因此,应确保匀速阶段存在,tp4大于Δt。其次,误差补偿方法需要保持加速度和进给速度曲线的平滑度。
对于第一个问题,长段的条件可以很容易地满足。但是对于短的段,常规进给速度规划方法可能不存在匀速进给阶段。为了应对这个问题,Scon被创造性地引入到阶段1中给出的相遇检测模块和进给率调整模块,其可以保证匀速进给阶段始终存在并且时长至少有1个插补周期。因此,无论段是长是短条件都必定满足。
对于第二个问题,提出了一种基于复合加减速算法的新颖的误差补偿方法。对于需要补偿的舍入误差Δl,规划算法如下:本发明使用了改进的梯形加减速算法。其加速度曲线是连续的,加速度公式可以表示为:
其中公式(35)中的T是Δl的总运动时间,具有与加速度相同的时间分配规则的位移公式可以通过等式(46)的积分得出如下:
由于改进梯形加减速算法的总时间按一定比例分为五个部分,总位移Strap,T和最大加速度amax之间存在特殊关系,可以得出:
根据等式(37)和两个条件,可以算出式(34)-(35)中的所有参数。因此,等式(37)是使得改进的梯形加减速算法非常适合于舍入误差补偿的关键特性,其可以保持进给速度和加速度曲线的平滑度。因此,根据式(36)可以容易地获得每个周期的补偿长度ΔlT。阶段2中的每个插补周期的进给长度Δlcom可以如下计算:
Δlcom=ΔlS+ΔlT (38)
其中ΔlS是由公知的标准S形加减速算法计算获得的补偿长度,ΔlT是由改进的梯形加减速规则计算的补偿长度,将目标进给长度Δlcom输出到目标插补点计算模块;
当阶段2的插补结束时,进入阶段3。
(3)阶段3:反向提取反向插补数据
在这个阶段,由于剩余部分已经通过在阶段1中进行的反向插补进行了插补,所以不需要计算进给长度和对应的目标点位置。因此,可以以相反的顺序提取阶段(1)中数据缓冲区所存储的反向插补数据并输出到目标插补点计算模块;当所有阶段(1)中数据缓冲区所存储的数据都被取出,则当前段的插补结束,进入下一个段的插补。
2.4目标插补点计算模块
目标插补点计算包括两个子步骤。第一步是根据进给长度确定目标插补点的参数unext。然后在第二步中,可以基于de Boor-Cox算法,通过将unext代入路径C(u)描述来计算目标内插点位置C(unext)。以前对NURBS插值的大量研究集中在找到第一步的有效算法。在本文中,采用收敛速度和计算负荷两种方法,应用基于预测器和校正器规则的数值计算方法来找出目标参数unext。在预测阶段,初始值u0可以通过二阶扩展获得,表示如下:
其中L是当前周期的进给长度。然后在校正阶段,将具有式(43)所示格式的牛顿-拉夫逊方法用作具有指定的进给率波动公差δflu的校正算法,该方程可以构造如下:
F(unext)=||C(unext)-C(ui-1)||-L=0 (40)
实验例
利用实施例1的具体算法方案,在本例中进行两个NURBS曲线的分析模拟,以评估所提出的限制了弓高误差,加速度和加速度的NURBS曲线的双向自适应插值器(BAIN)的性能。
选择两个NURBS曲线作为案例研究,一个是蝴蝶形曲线,另一个是∞形曲线,它们被广泛用作本研究中的测试用例。仿真环境包括Intel(R)Core(TM)i5-4460 3.2GHz和4.00SDRAM个人计算机与Windows 7 操作系统。并且用于模拟的所有算法由Microsoft VisualStudio 2008通过C++语言开发和实现。
两个试验曲线的曲线参数:包括阶,控制点,节点矢量和权向量分别在附录1和附录2中详细提供。两个试验曲线的运动参数如表1所述。通过参数采样长度l的1.2节中给出的弧长和曲率计算模块,临界点和曲率曲线的试验曲线如图7(a)-图7(d)所示。用于模拟的插值器参数列于表1中。可以看出,蝶形曲线的轮廓曲率变化较大,且曲率比∞形曲线大。同时,蝶形曲线的运动参数小于另一个。通过这两种具有不同特征的曲线和两组运动参数,将使用BAIN方法求得的结果与具有进给速度调度(NIFS)的NURBS 插值器和双向最佳插值(BOI)方法进行对比,可以评估所提出的BAIN方法的可行性和适用性。
表1插值器参数
蝶形曲线的分析与比较
提出的BAIN法得到的蝴蝶形曲线的插值结果如图8(a)-(e)所示。可以看出,进给速度和加速度曲线是平滑的。每个插补点的向心加速度和弦误差可以满足规定的误差限制。然而,一些插补点中的加加速度曲线超过由舍入误差补偿产生的误差,但是仍然控制在一定范围内。
NIFS法和BOI法得到的插补结果分别如图9(a)-(e)和图10(a)-(e)所示。然而,没有给出NIFS和BOI的舍入误差补偿方法。因此,图9和图10中的总内插时间不一定是Ts的整数倍。但是,如果补偿舍入误差,图9(e)和图10(e)所示的加加速度也可能超过一些插补点的误差范围。可以看出,NIFS方法和BOI方法的进给速度曲线是平滑的。然而,由于不合理的相交进给速度调整方法,图10(b)中一些插补点的突变导致切向加速度曲线不连续。相反,由于标准的S形加减速算法使得NIFS方法的切向加速度曲线平滑连续。此外,各种方法的弓高误差和向心加速度都在允许的公差范围内。NIFS,BOI和BAIN的插补时间和最大弓高误差如下表所示。BIN的插补时间比NIFS和BOI稍长,因为它所提出的舍入误差补偿方法为一些短段增加了一个恒定的时间段。此外,κi被κi-1代替以简化等式(26)中的计算负载,这样也可以增加插补时间。
表2三种方法对蝶形曲线插补的最大弓高误差和插补时间的静态比较
从蝶形曲线模拟结果可以看出,NIFS方法和提出的BAIN方法得到了相似的结果:Jmax,amaxt和F都更小,曲线轮廓特别是临界点附近的曲率变化较大。
∞形曲线的分析比较如下:
通过NIFS方法,BOI方法和提出的BAIN方法的∞形曲线的插值结果如图11(a)-(e),图12(a)-(e)和图 13(a)-(e)所示。可以看出,通过BOI方法获得的图12(b)中所示的切向加速度曲线仍然有4.1.2所述相同 原因的突变。但弓高误差和向心加速度始终在误差范围内。对于NIFS方法的结果,一些插补点中的弓高 误差和向心加速度会超过限制误差。相应地,因为在基于标准S形加减速算法的进给调度期间,每个段 中间部分的约束被忽略,所以图13(a)所示的进给速度曲线的某些区域会不在进给速度限制范围内。相比 之下,图13(c)-(d)所示的通过提出的BAIN方法获得的弓高误差和向心加速度曲线总是在误差限制范围内。 同时,在一些具有进给速度连续性限制的区域中,加加速度是振荡的。而在这些区域,通过NIFS法获得 的进给速度不能满足各种约束条件。由BAIN法引起的加加速度振荡的原因可以解释如下:试验NURBS 曲线的曲率和S形加减速算法的加速度是连续的,这可以保证加速度和进给速度曲线的连续性,如图 11(a)-(b)所示。但是无法保证加加速曲线的连续性。因此,需要对某些加加速度进行自适应调整以适应进 给速度的限制。虽然加加速度曲线具有一些振荡并且超过由舍入误差补偿引起的最大加加速度限制,但 它仍然控制在一定程度内,对加工精度和平滑度影响不大。
∞型曲线的NIFS方法,BOI方法和BAIN方法的插补时间和最大弓高误差如表3所示。BAIN方法插补时间较长,因为通过自适应调度获得的进给速度小于标准S形加减速算法求出的进给速度。另外,4.1.2 中给出的原因也延长了插补时间。
表3三种方法对∞曲线插补的最大弓高误差和插补时间的静态比较
试验结果
本例采用Panasonic MBDH系列伺服电机和MHMD系列电机进行双轴运动平台的实验。并且所提出的NURBS曲线的双向自适应内插器在基于PC的运动控制器中实现,该控制器具有由我们团队自行开发的Windows 7操作系统(OS)。同时,由Kithara Software GmbH开发的用于Windows OS的模块化实时扩展软件的kithara实时套件(KRTS)安装到控制器。基于KRTS,运动控制器的OS可以分为两个子系统。一个是非实时操作系统(非实时操作系统),可以无需实时的任务执行任务。另一种是具有优异实时性能的实时系统KRTS-Kernel。因此,图1所示的预处理阶段可以在控制器的non-RTOS中实现。实时插值在 KRTS-Kernel中进行,其中插补周期设置为1ms。轴控制数据可以通过工业以太网(如EtherCAT)通过标准以太网卡发送到相应的伺服导出。因此,只有在PC上才能使用标准硬件进行运动控制。
对应于仿真,在实验中测试了蝴蝶形曲线和∞形曲线。可以通过实验系统上提出的双向自适应内插器执行平滑轨迹。提出的双向自适应进给调度方法比AF方法,DBLA方法和NIFS方法等传统调度方法复杂,需要更多的计算时间。因此,每个插补周期的计算时间都是实时测量的,如图11所示。同时,统计数据总结在表4中。可以看出,蝶形曲线和∞形曲线的最大和平均计算时间均小于50us。因此,1ms内插周期可以始终满足实时要求。
表4计算时间结果
附录1:蝶形曲线的参数
阶数:p=3.
控制点(mm):P=[(54.493,52.139),(55.507,52.139),(56.082,49.615),(56.780,44.971),(69.575,51.358), (77.786,58.573),(90.526,67.081),(105.973,63.801),(100.400,47.326),(94.567,39.913),(92.369,30.485), (83.440,33.757),(91.892,28.509),(89.444,20.393),(83.218,15.446),(87.621,4.830),(80.945,9.267),(79.834, 14.535),(76.074,8.522),(70.183,12.550),(64.171,16.865),(59.993,22.122),(55.680,36.359),(56.925, 24.995),(59.765,19.828),(54.493,14.940),(49.220,19.828),(52.060,24.994),(53.305,36.359),(48.992, 22.122),(44.814,16.865),(38.802,12.551),(32.911,8.521),(29.152,14.535),(28.040,9.267),(21.364,4.830), (25.768,15.447),(19.539,20.391),(17.097,28.512),(25.537,33.750),(16.602,30.496),(14.199,39.803), (8.668,47.408),(3.000,63.794),(18.465,67.084),(31.197,58.572),(39.411,51.358),(52.204,44.971),(52.904, 49.614),(53.478,52.139),(54.492,52.139)].
节点矢量:U=[0,0,0,0,0.0083,0.015,0.0361,0.0855,0.1293,0.1509,0.1931,0.2273,0.2435,0.2561, 0.2692,0.2889,0.3170,0.3316,0.3482,0.3553,0.3649,0.3837,0.4005,0.4269,0.4510,0.4660,0.4891,0.5000, 0.5109,0.5340,0.5489,0.5731,0.5994,0.6163,0.6351,0.6447,0.6518,0.6683,0.6830,0.7111,0.7307,0.7439,0.7565,0.7729,0.8069,0.8491,0.8707,0.9145,0.9639,0.9850,0.9917,1.0,1.0,1.0,1.0].
权向量:W=[1.0,1.0,1.0,1.2,1.0,1.0,1.0,1.0,1.0,1.0,1,2,1.0,1.0,5.0,3.0,1.0,1.1,1.0,1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.1,1.0,3.0,5.0,1.0,1.0,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.2,1.0, 1.0,1.0].
附录2:∞形曲线的参数
阶数:p=3.
控制点(mm):P=[(0,0),(55.507,52.139),(-150,-150),(-150,150),(0,0),(150,-150),(150,150),(0,0)].
节点矢量:U=[0,0,0,0,0.25,0.5,0.75,1.0,1.0,1.0,1.0].
权向量:W=[1.0,0.6,0.85,1,0.85,0.6,1.0]。

Claims (10)

1.一种基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,包括步骤如下:
(1)提取数据;利用NC解释器获取NURBS曲线数据和运动参数至运动数据缓冲区;
(2)预处理阶段;扫描获得NURBS曲线的关键特征,所述关键特征包括NURBS曲线的断点,根据断点将NURBS曲线划分为块,计算每个块的NURBS曲线的弧长和曲率;根据每个块内曲线的曲率将块划分为段;
(3)实时插补阶段;利用步骤(2)中得到的每个段的曲线数据和运动参数,获取该段内各周期的进给长度,进而找到新的插值点。
2.根据权利要求1所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,步骤(2)中,预处理阶段包括以下子模块步骤:
2-1、读取NURBS曲线数据和运动参数,所述曲线数据包括:阶数P、控制点{Pi}、节点向量{ui}、权因子{wi},所述运动参数包括指令进给速度F、最大加速度、最大加加速度;
2-2、在NURBS曲线的断点处划分曲线:
根据读取的曲线数据,检测判断曲线中的断点,利用断点将总的NURBS曲线分为不同的块,每一个块可以表示为[ubi,ubi+1],ubi和ubi+1分别代表该区间块的起点位置和块的终点位置,bi=1,2…..n,n为块的个数;
2-3、对每一个划分的块计算弧长和曲率;
利用基于辛普森规则的自适应正交方法求得每个块的弧长lbi,在计算弧长期间,同时求得每个块的边界节点的曲率,NURBS曲线C(u)的参数ubi处的曲率κ(ubi)表示如下:
<mrow> <mi>&amp;kappa;</mi> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mrow> <mi>b</mi> <mi>i</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mo>|</mo> <mo>|</mo> <msup> <mi>C</mi> <mo>&amp;prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mrow> <mi>b</mi> <mi>i</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>&amp;times;</mo> <msup> <mi>C</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mrow> <mi>b</mi> <mi>i</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <msup> <mi>C</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mrow> <mi>b</mi> <mi>i</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>|</mo> <msup> <mo>|</mo> <mn>3</mn> </msup> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>
把求得的每个块的弧长和曲率,生成特征数据缓冲区{[ubi,κ(ubi),lbi]};
2-4、判断每个块上的关键点,在每一个划分的块上再依据关键点划分为不同的段,对于第i个段,可以获得数据缓冲区其中ui是该段的起点参数和该段的起点的限制进给速度,uj是该段的终点参数和该段的终点的限制进给速度,lij是该段的弧长;
2-5、优化各段的进给速度,获得每个段的起始进给速度、终点进给速度,存入新的数据缓冲区 为第i段的节点矢量,为第i段的起始进给速度,为第i段的终点进给速度,为第i段的弧长;优化方法为反向规划和正向规划两部分结合组成的双向进给率预测方法,包括步骤如下:
2-5-1、根据标准S曲线加减速算法反向规划并更新数据缓冲区
2-5-2、根据标准S曲线加减速算法正向规划并更新数据缓冲区进入反向规划校正模块;
2-5-3、读取当前块的总段数k;
2-5-4、判断本段起始速度是否大于若是,进入2-5-5;若否,将当前段数k更新为k-1,返回步骤2-5-4;
2-5-5、根据提出的自适应进给调度方法进行反向插补,将反向插补结果存储到数据缓冲区{[uj,C(uj)]};判断是否大于反向最大速度且剩余弧长是否大于0,若是,重新进入2-5-5;若否,进入2-5-6;
2-5-6、判断是否小于等于反向最大速度若是,将k更新为k-1,返回步骤2-5-4;若否,进入2-5-7;
2-5-7、使用更新
3.根据权利要求2所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,步骤2-2中,检测判断为断点的情况包括以下两种:一种是判断有C0连续性的点是断点;一种是判断具有C1连续性的点,如果其节点向量的相应控制点是两个及以上控制点时将该点归为断点。
4.根据权利要求2所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,步骤2-4中,关键点的判断步骤为:首先,通过扫描每个块上的特征数据缓冲区{[ubi,κ(ubi),lbi]},找出具有比两个相邻边界节点更大的曲率的点作为候选点;其次,计算每个候选点的由弓高误差和向心加速度约束的进给速度
对于弓高误差,进给速度应满足以下关系:
其中κi是第i个候选点的曲率,δcho是最大允许误差,Ts是采样时间;
对于向心加速度,进给速度应满足以下关系:
其中amaxc是允许最大向心加速度;
因此,限制进给速度可以表示如下:
最后,限制进给速度小于指令进给速度F的候补点为关键点。
5.根据权利要求4所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,步骤(3)中,实时插补阶段包括进给速度规划和目标插补点计算,在进给速度规划模块中获得每个周期的进给速度和进给弧长;在目标插补点计算模块中,根据获得的进给弧长计算出目标插补点的位置。
6.根据权利要求5所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,进给速度规划包括以下两个子模块步骤:基于S型加减速算法的进给速度和加速度自适应调度,以及双向插补计算进给长度;
基于S型加减速算法的进给速度和加速度自适应调度,是根据预处理阶段求得的每个段的曲线数据、运动参数,自适应的求出每个段中各个进给周期的速度、加速度。
7.根据权利要求6所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,基于S型加减速算法的进给速度和加速度自适应调度包括步骤如下:
运动参数需要满足三个条件:
第一,令运动参数满足不等式如下:
vi≤F (5);
ai≤atmax (6);
Ji≤Jmax (7)
vi,ai和Ji分别是第i段的目标进给速度、加速度和加加速度,F是指令进给速度,atmax是允许的最大加速度,Jmax是允许的最大加加速度;
第二,目标进给速度vi应满足公式(2)、(3)所示的弓高和向心加速度约束;
第三,基于S型加减速算法,目标进给速度、加速度和加加速度表示如下:
ai=ai-1+JiTs (9);
其中阶段1,阶段2,阶段3和阶段4分别表示S形加减速算法的加加速阶段,匀加速阶段,减加速阶段和匀速阶段,
根据方程(4)-(10),目标加速度ai和目标进给速度vi用如下方法表示:
ai=min[amax,max(ai-1+JiTs,0)] (11)
<mrow> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>min</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>,</mo> <msqrt> <mfrac> <msub> <mi>a</mi> <mrow> <mi>c</mi> <mi>max</mi> </mrow> </msub> <msub> <mi>&amp;kappa;</mi> <mi>i</mi> </msub> </mfrac> </msqrt> <mo>,</mo> <mfrac> <mn>2</mn> <msub> <mi>T</mi> <mi>s</mi> </msub> </mfrac> <msqrt> <mrow> <mfrac> <mn>1</mn> <msubsup> <mi>&amp;kappa;</mi> <mi>i</mi> <mn>2</mn> </msubsup> </mfrac> <mo>-</mo> <msup> <mrow> <mo>(</mo> <mrow> <mfrac> <mn>1</mn> <msub> <mi>&amp;kappa;</mi> <mi>i</mi> </msub> </mfrac> <mo>-</mo> <msub> <mi>&amp;delta;</mi> <mi>max</mi> </msub> </mrow> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>,</mo> <msub> <mi>v</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mfrac> <mrow> <msub> <mi>a</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>a</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow> <mn>2</mn> </mfrac> <msub> <mi>T</mi> <mi>s</mi> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>12</mn> <mo>)</mo> </mrow> </mrow>
为了使目标加速度ai和进给速度vi相匹配,更新ai、vi
基于公式(8)派生出如下方程:ai=2(vi-vi-1)-ai-1Ts (13)
第i个周期的相应目标进给长度Si基于公式(8)-(13)求得如下:
最后,如果当前处于阶段1或阶段2,则使用S型加减速算法将加速度从ai减速到零时,相应的减速时间tdi和最大进给速度vdi表示如下:
<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>t</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> </msub> <mo>=</mo> <mfrac> <msub> <mi>a</mi> <mi>i</mi> </msub> <msub> <mi>J</mi> <mi>max</mi> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>15</mn> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <msub> <mi>v</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>&amp;Delta;s</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>&amp;Delta;s</mi> <mn>2</mn> </msub> <mo>=</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>+</mo> <mfrac> <msubsup> <mi>a</mi> <mi>i</mi> <mn>2</mn> </msubsup> <msub> <mi>J</mi> <mi>max</mi> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>16</mn> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> </mfenced>
从vi到vdi的相应位移Sdi由基于等式(15)-(16)再用公式(17)求出:
使用特征数据缓冲区{[uii,li]}来估计κdi,如下所示:
<mrow> <msub> <mi>&amp;kappa;</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>&amp;kappa;</mi> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mfrac> <mrow> <msubsup> <mi>S</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mi>a</mi> <mi>c</mi> <mi>c</mi> <mi>u</mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi>S</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>S</mi> <msub> <mi>d</mi> <mi>i</mi> </msub> </msub> <mo>-</mo> <msub> <mi>l</mi> <mi>m</mi> </msub> </mrow> <mrow> <msub> <mi>l</mi> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>l</mi> <mi>m</mi> </msub> </mrow> </mfrac> <mo>+</mo> <msub> <mi>&amp;kappa;</mi> <mi>m</mi> </msub> <mfrac> <mrow> <msub> <mi>l</mi> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>S</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>S</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> </msub> <mo>-</mo> <msubsup> <mi>S</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mrow> <mi>a</mi> <mi>c</mi> <mi>c</mi> <mi>u</mi> </mrow> </msubsup> </mrow> <mrow> <msub> <mi>l</mi> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>l</mi> <mi>m</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> </mrow>
此时如果此时vdi>F,那么进给速度调度在下一个阶段进入阶段3;
<mrow> <mi>g</mi> <mrow> <mo>(</mo> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>v</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mi>m</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>,</mo> <msqrt> <mfrac> <msub> <mi>a</mi> <mrow> <mi>max</mi> <mi>c</mi> </mrow> </msub> <msub> <mi>&amp;kappa;</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> </msub> </mfrac> </msqrt> <mo>,</mo> <mfrac> <mn>2</mn> <msub> <mi>T</mi> <mi>s</mi> </msub> </mfrac> <msqrt> <mrow> <mfrac> <mn>1</mn> <msubsup> <mi>&amp;kappa;</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> <mn>2</mn> </msubsup> </mfrac> <mo>-</mo> <msup> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <msub> <mi>&amp;kappa;</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> </msub> </mfrac> <mo>-</mo> <msub> <mi>&amp;delta;</mi> <mrow> <mi>c</mi> <mi>h</mi> <mi>o</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>)</mo> </mrow> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>19</mn> <mo>)</mo> </mrow> </mrow>
方程(19)是高阶方程,利用二分法求解a″i,求解出的a″i为更新后的ai
8.根据权利要求7所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,利用二分法求解a″i,二分法求解方法为:step1,初始参数,aH=ai,aL=a′i,进入step2;
step2,令根据公式(17)-(19)计算g(a″i),判断是否|g(a″i)|<δdic,是,进入step3,否,进入step4;
step3,输出a″i
step4,判断g(a″i)>0,是,进入step5,否,进入step6;
step5,令aH=a″i,返回step2;
step6,令aL=a″i,返回step2;其中δdic表示允许误差。
9.根据权利要求7所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,规划整个段内各个周期的速度,双向插补计算进给长度,包括步骤如下:
3-2-1、阶段1:在每个段内,基于段起点最大进给速度和段终点最大进给速度进行双向进给速度调节和插补;阶段1中,在S型加减速规则的阶段1,2和相应的6,7中同步执行双向插补,将正向插补的长度输出到目标插补点计算模块;将反向插补长度存储在数据缓冲区中;在实时插补过程中需要对进行调整,设定
步骤1:将调整直到
调整后的目标进给速度可如下表示:
其中aif是调整后的目标加速度,最大进给速度相应地导出如下:至此完成将调整直到
因此,根据方程(22)和(23)推导出如下等式:
方程(24)是一个二次方程,因此直接求解得下式:
<mrow> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>=</mo> <mo>-</mo> <mfrac> <mrow> <msub> <mi>J</mi> <mi>max</mi> </msub> <msub> <mi>T</mi> <mi>s</mi> </msub> </mrow> <mn>2</mn> </mfrac> <mo>+</mo> <msub> <mi>J</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> <msqrt> <mrow> <mfrac> <msubsup> <mi>T</mi> <mi>s</mi> <mn>2</mn> </msubsup> <mn>4</mn> </mfrac> <mo>-</mo> <mfrac> <mn>2</mn> <msub> <mi>J</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> </mfrac> <mrow> <mo>(</mo> <msubsup> <mi>v</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>f</mi> </msubsup> <mo>+</mo> <mfrac> <msub> <mi>T</mi> <mi>s</mi> </msub> <mn>2</mn> </mfrac> <msubsup> <mi>a</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>f</mi> </msubsup> <mo>-</mo> <msubsup> <mi>v</mi> <mrow> <mi>d</mi> <mi>j</mi> </mrow> <mi>b</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </msqrt> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>25</mn> <mo>)</mo> </mrow> </mrow>
相应地,调整后的目标长度Sif和预测的减小加速度长度基于等式(14)-(17)求出,反向插补的目标长度和预测的减小加速度长度分别为然后,两个方向的目标长度和预测长度与剩余长度Sij′进行比较如下:
转至步骤3;
转至步骤2;
其中
步骤2:重新调整
为调整时段起点和段终点的最大进给速度,根据(22)-(23)推导至下式:
<mrow> <msubsup> <mi>v</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>v</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>f</mi> </msubsup> <mo>+</mo> <mfrac> <mrow> <msubsup> <mi>a</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>f</mi> </msubsup> <mo>+</mo> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> </mrow> <mn>2</mn> </mfrac> <msub> <mi>T</mi> <mi>s</mi> </msub> <mo>+</mo> <mfrac> <msup> <mrow> <mo>(</mo> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mrow> <mn>2</mn> <msub> <mi>J</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>26</mn> <mo>)</mo> </mrow> </mrow>
<mrow> <msubsup> <mi>v</mi> <mrow> <mi>d</mi> <mi>j</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>v</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>b</mi> </msubsup> <mo>+</mo> <mfrac> <mrow> <msubsup> <mi>a</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>b</mi> </msubsup> <mo>+</mo> <msubsup> <mi>a</mi> <mi>j</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> </mrow> <mn>2</mn> </mfrac> <msub> <mi>T</mi> <mi>s</mi> </msub> <mo>+</mo> <mfrac> <msup> <mrow> <mo>(</mo> <msubsup> <mi>a</mi> <mi>j</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mrow> <mn>2</mn> <msub> <mi>J</mi> <mi>max</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>27</mn> <mo>)</mo> </mrow> <mo>,</mo> </mrow>
其中aif和ajb是分别是两个方向的调整目标加速度,f指代正向,b指代反向,两个方向相应的位移根据(14)-(17)式推理出:
<mrow> <msubsup> <mi>S</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>S</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>v</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>f</mi> </msubsup> <msub> <mi>T</mi> <mi>s</mi> </msub> <mo>+</mo> <mfrac> <msubsup> <mi>a</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>f</mi> </msubsup> <mn>3</mn> </mfrac> <msubsup> <mi>T</mi> <mi>s</mi> <mn>2</mn> </msubsup> <mo>+</mo> <mfrac> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mn>6</mn> </mfrac> <msubsup> <mi>T</mi> <mi>s</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>v</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <msubsup> <mi>t</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>+</mo> <mfrac> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mn>2</mn> </mfrac> <msup> <mrow> <mo>(</mo> <msubsup> <mi>t</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>-</mo> <mfrac> <msub> <mi>J</mi> <mi>max</mi> </msub> <mn>6</mn> </mfrac> <msup> <mrow> <mo>(</mo> <msubsup> <mi>t</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>3</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>28</mn> <mo>)</mo> </mrow> </mrow>
<mrow> <msubsup> <mi>S</mi> <mi>j</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>S</mi> <mrow> <mi>d</mi> <mi>j</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>v</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>b</mi> </msubsup> <msub> <mi>T</mi> <mi>s</mi> </msub> <mo>+</mo> <mfrac> <msubsup> <mi>a</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>b</mi> </msubsup> <mn>3</mn> </mfrac> <msubsup> <mi>T</mi> <mi>s</mi> <mn>2</mn> </msubsup> <mo>+</mo> <mfrac> <msubsup> <mi>a</mi> <mi>j</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mn>6</mn> </mfrac> <msubsup> <mi>T</mi> <mi>s</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>v</mi> <mi>j</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <msubsup> <mi>t</mi> <mrow> <mi>d</mi> <mi>j</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>+</mo> <mfrac> <msubsup> <mi>a</mi> <mi>j</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mn>2</mn> </mfrac> <msup> <mrow> <mo>(</mo> <msubsup> <mi>t</mi> <mrow> <mi>d</mi> <mi>j</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>-</mo> <mfrac> <msub> <mi>J</mi> <mi>max</mi> </msub> <mn>6</mn> </mfrac> <msup> <mrow> <mo>(</mo> <msubsup> <mi>t</mi> <mrow> <mi>d</mi> <mi>j</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>3</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>29</mn> <mo>)</mo> </mrow> </mrow>
其中:
最后,双向插补的各种长度应满足以下公式:
<mrow> <msubsup> <mi>S</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>S</mi> <mrow> <mi>d</mi> <mi>i</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>S</mi> <mi>j</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>S</mi> <mrow> <mi>d</mi> <mi>j</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>b</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>S</mi> <mrow> <mi>c</mi> <mi>o</mi> <mi>n</mi> </mrow> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>S</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>r</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>30</mn> <mo>)</mo> </mrow> </mrow>
其中并且得到如下构造方程:f(aif)=0 (31)
由于式(31)是aif的高阶方程,所以选择Newton-Raphson方法来求解aif,有以下迭代格式:
<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>d</mi> <mi>o</mi> <mo>:</mo> <msub> <mi>a</mi> <mi>m</mi> </msub> <mo>=</mo> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <mfrac> <mrow> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msup> <mi>f</mi> <mo>&amp;prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>,</mo> <mi>m</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mi>i</mi> <mi>l</mi> <mo>:</mo> <mo>|</mo> <mfrac> <mrow> <msub> <mi>a</mi> <mi>m</mi> </msub> <mo>-</mo> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow> <msub> <mi>a</mi> <mi>m</mi> </msub> </mfrac> <mo>|</mo> <mo>&amp;le;</mo> <mi>&amp;sigma;</mi> <mo>,</mo> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>n</mi> <mo>:</mo> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>&amp;prime;</mo> <mo>&amp;prime;</mo> <mi>f</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>a</mi> <mi>m</mi> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>32</mn> <mo>)</mo> </mrow> </mrow>
其中σ表示最大相对根误差,a0是初始值;
其中a0设定为利用公式(32)求出aif,将其代入(26)、(27),求出重新调整后的进入步骤3;
步骤3:利用当前速度与插补周期求得目标进给长度,将目标进给长度输出到目标插补点计算模块,重新判断当前所处的插补阶段,如果当前处于s曲线算法的阶段1、2,则重新进入阶段1;否则,进入阶段2;至此,在阶段1中完成s曲线算法的阶段1、2、6、7内的进给速度调节和插补;
3-2-2、阶段2:基于具有舍入误差补偿的复合算法的单向进给速度调节和插补;
设定标准S形加减速算法获得的三个时间分别为tp3,tp4和tp5,阶段2的总内插循环次数可以计算如下:
需要补偿的舍入误差Δl只是对应于Δt的长度,Δt表示如下:
Δt=(tp3+tp4+tp5)-N345Ts<Ts (34),
为确保匀速阶段存在,tp4应大于Δt,否则引入Scon、使tp4始终存在并且时长至少有1个插补周期;Scon为取自剩余未插补曲线的一段弧长;
对于需要补偿的舍入误差Δl,规划算法如下:加速度公式表示为:
<mrow> <mi>a</mi> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> <mi>T</mi> </mfrac> <mi>t</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>0</mn> <mo>&amp;le;</mo> <mi>t</mi> <mo>&amp;le;</mo> <mfrac> <mn>1</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> </mtd> <mtd> <mrow> <mfrac> <mn>1</mn> <mn>8</mn> </mfrac> <mi>T</mi> <mo>&lt;</mo> <mi>t</mi> <mo>&amp;le;</mo> <mfrac> <mn>3</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> <mi>T</mi> </mfrac> <mo>(</mo> <mrow> <mi>t</mi> <mo>-</mo> <mfrac> <mn>3</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mfrac> <mn>3</mn> <mn>8</mn> </mfrac> <mi>T</mi> <mo>&lt;</mo> <mi>t</mi> <mo>&amp;le;</mo> <mfrac> <mn>5</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <msub> <mi>a</mi> <mi>max</mi> </msub> </mrow> </mtd> <mtd> <mrow> <mfrac> <mn>5</mn> <mn>8</mn> </mfrac> <mi>T</mi> <mo>&lt;</mo> <mi>t</mi> <mo>&amp;le;</mo> <mfrac> <mn>7</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> <mi>T</mi> </mfrac> <mo>(</mo> <mrow> <mi>t</mi> <mo>-</mo> <mfrac> <mn>7</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mfrac> <mn>7</mn> <mn>8</mn> </mfrac> <mi>T</mi> <mo>&lt;</mo> <mi>t</mi> <mo>&amp;le;</mo> <mi>T</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>35</mn> <mo>)</mo> </mrow> </mrow>
其中公式(35)中的T是Δl的总运动时间,具有与加速度相同的时间分配规则的位移公式可以通过等式(36)的积分得出如下:
<mrow> <mi>S</mi> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mo>-</mo> <msup> <mrow> <mo>(</mo> <mfrac> <mi>T</mi> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <mo>)</mo> </mrow> <mn>2</mn> </msup> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>sin</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> <mi>T</mi> </mfrac> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mn>1</mn> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>T</mi> <mi>t</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msub> <mi>a</mi> <mi>max</mi> </msub> <msup> <mi>t</mi> <mn>2</mn> </msup> <mo>+</mo> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <mo>-</mo> <mfrac> <mn>1</mn> <mn>8</mn> </mfrac> <mo>)</mo> </mrow> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>T</mi> <mi>t</mi> <mo>+</mo> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <mn>128</mn> </mfrac> <mo>-</mo> <mfrac> <mn>1</mn> <mrow> <mn>16</mn> <msup> <mi>&amp;pi;</mi> <mn>2</mn> </msup> </mrow> </mfrac> <mo>)</mo> </mrow> <msub> <mi>a</mi> <mi>max</mi> </msub> <msup> <mi>T</mi> <mn>2</mn> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <msup> <mrow> <mo>(</mo> <mfrac> <mi>T</mi> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <mo>)</mo> </mrow> <mn>2</mn> </msup> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> <mi>T</mi> </mfrac> <mo>(</mo> <mrow> <mi>t</mi> <mo>-</mo> <mfrac> <mn>3</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>+</mo> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <mo>+</mo> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> <mo>)</mo> </mrow> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>T</mi> <mi>t</mi> <mo>-</mo> <mfrac> <mn>1</mn> <mn>16</mn> </mfrac> <msub> <mi>a</mi> <mi>max</mi> </msub> <msup> <mi>T</mi> <mn>2</mn> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msub> <mi>a</mi> <mi>max</mi> </msub> <msup> <mi>t</mi> <mn>2</mn> </msup> <mo>+</mo> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <mo>+</mo> <mfrac> <mn>7</mn> <mn>8</mn> </mfrac> <mo>)</mo> </mrow> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>T</mi> <mi>t</mi> <mo>+</mo> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <mrow> <mn>16</mn> <msup> <mi>&amp;pi;</mi> <mn>2</mn> </msup> </mrow> </mfrac> <mo>-</mo> <mfrac> <mn>33</mn> <mn>128</mn> </mfrac> <mo>)</mo> </mrow> <msub> <mi>a</mi> <mi>max</mi> </msub> <msup> <mi>T</mi> <mn>2</mn> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mrow> <mo>(</mo> <mfrac> <mi>T</mi> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <mo>)</mo> </mrow> <mn>2</mn> </msup> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> <mi>T</mi> </mfrac> <mo>(</mo> <mrow> <mi>t</mi> <mo>-</mo> <mfrac> <mn>7</mn> <mn>8</mn> </mfrac> <mi>T</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mn>1</mn> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <msub> <mi>a</mi> <mi>max</mi> </msub> <mi>T</mi> <mi>t</mi> <mo>+</mo> <mfrac> <mn>1</mn> <mn>8</mn> </mfrac> <msub> <mi>a</mi> <mi>max</mi> </msub> <msup> <mi>T</mi> <mn>2</mn> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>36</mn> <mo>)</mo> </mrow> </mrow>
总位移Strap,T和最大加速度amax之间存在特殊关系,得出:
<mrow> <mi>T</mi> <mo>=</mo> <msqrt> <mfrac> <msub> <mi>S</mi> <mrow> <mi>t</mi> <mi>r</mi> <mi>a</mi> <mi>p</mi> </mrow> </msub> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <mrow> <mn>4</mn> <mi>&amp;pi;</mi> </mrow> </mfrac> <mo>+</mo> <mfrac> <mn>1</mn> <mn>8</mn> </mfrac> <mo>)</mo> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> </mrow> </mfrac> </msqrt> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>37</mn> <mo>)</mo> </mrow> </mrow>
根据等式(37)和两个条件:算出式(34)-(35)中的所有参数;根据式(36)获得每个周期的补偿长度ΔlT,阶段2中的每个插补周期的进给长度Δlcom如下计算:
Δlcom=ΔlS+ΔlT (38)
其中ΔlS是由公知的标准S形加减速算法计算获得的补偿长度,ΔlT是由改进的梯形加减速规则计算的补偿长度,将目标进给长度Δlcom输出到目标插补点计算模块;
当阶段2的插补结束时,进入阶段3;
3-2-3、阶段3:反向提取反向插补数据;
在这个阶段,以相反的顺序提取阶段1中数据缓冲区所存储的反向插补数据并输出到目标插补点计算模块;当所有阶段1中数据缓冲区所存储的数据都被取出,则当前段的插补结束,进入下一个段的插补。
10.根据权利要求5所述的基于S曲线加减速算法的NURBS曲线双向自适应插补算法,其特征在于,目标插补点计算模块包括步骤如下:
3-3-1、根据进给长度确定目标插补点的参数unext
采用现有的收敛速度和计算负荷两种方法,应用基于预测器和校正器规则的数值计算方法来找出目标点的参数unext
3-3-2、基于de Boor-Cox算法,通过将unext代入路径C(u)描述来计算目标内插点位置C(unext)。
CN201710994472.7A 2017-10-23 2017-10-23 一种基于s曲线加减速算法的nurbs曲线双向自适应插补方法 Active CN107817764B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710994472.7A CN107817764B (zh) 2017-10-23 2017-10-23 一种基于s曲线加减速算法的nurbs曲线双向自适应插补方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710994472.7A CN107817764B (zh) 2017-10-23 2017-10-23 一种基于s曲线加减速算法的nurbs曲线双向自适应插补方法

Publications (2)

Publication Number Publication Date
CN107817764A true CN107817764A (zh) 2018-03-20
CN107817764B CN107817764B (zh) 2019-03-08

Family

ID=61607451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710994472.7A Active CN107817764B (zh) 2017-10-23 2017-10-23 一种基于s曲线加减速算法的nurbs曲线双向自适应插补方法

Country Status (1)

Country Link
CN (1) CN107817764B (zh)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549328A (zh) * 2018-03-22 2018-09-18 汇川技术(东莞)有限公司 自适应速度规划方法及系统
CN109582023A (zh) * 2018-12-21 2019-04-05 费子偕 一种新型载人工具以及适用其的控制方法
CN110189295A (zh) * 2019-04-16 2019-08-30 浙江工业大学 基于随机森林和中心线的眼底视网膜血管分割方法
CN110865610A (zh) * 2019-10-18 2020-03-06 中国工程物理研究院机械制造工艺研究所 一种基于机床振动抑制的刀具轨迹插值和速度规划方法
CN111198561A (zh) * 2019-12-05 2020-05-26 浙江大华技术股份有限公司 目标跟踪的运动控制方法、装置、计算机设备及存储介质
CN111421555A (zh) * 2020-05-29 2020-07-17 镇江奥立特机械制造有限公司 一种高精度机器人的多轴同步控制方法
CN111487930A (zh) * 2020-04-24 2020-08-04 东莞市精驰软件有限公司 基于对称图形替换技术的运动控制系统、方法、装置、机床和存储介质
CN111722591A (zh) * 2020-06-05 2020-09-29 浙江工业大学 一种商标模切机高精度联动插补的方法
CN112015142A (zh) * 2020-08-26 2020-12-01 无锡信捷电气股份有限公司 一种基于nurbs的小线段加工方法
CN112269356A (zh) * 2020-10-27 2021-01-26 南京溧航仿生产业研究院有限公司 一种机器人nurbs轨迹插补方法
CN112486034A (zh) * 2020-11-09 2021-03-12 北京配天技术有限公司 验证轨迹规划的方法、电子设备及存储介质
CN112859734A (zh) * 2019-11-27 2021-05-28 西安交通大学 一种Airthoid曲线及基于Airthoid曲线的运动规划平顺方法
CN113031525A (zh) * 2021-03-03 2021-06-25 福州大学 一种应用于数控加工的多项式加减速运动控制方法及设备
CN113031510A (zh) * 2019-12-24 2021-06-25 沈阳智能机器人创新中心有限公司 面向复杂多轴系统的b样条曲线计算加速方法
CN113156890A (zh) * 2020-01-22 2021-07-23 科德数控股份有限公司 一种非实时插补数控系统的倍率控制方法
CN113156891A (zh) * 2021-04-26 2021-07-23 北京航空航天大学 一种基于弓高误差限制和加加速度连续的进给率规划方法
CN113204215A (zh) * 2021-04-16 2021-08-03 华中科技大学 一种数控加工全局nurbs轨迹实时插补方法及其应用
CN113219989A (zh) * 2021-06-02 2021-08-06 安徽工业大学 一种基于改进的蝴蝶优化算法移动机器人路径规划方法
CN113341886A (zh) * 2021-05-25 2021-09-03 深圳市汇川技术股份有限公司 平滑进给速度规划方法、设备及计算机可读存储介质
CN113467368A (zh) * 2021-07-15 2021-10-01 苏州谋迅智能科技有限公司 S形速度曲线的调整方法
CN113504764A (zh) * 2021-06-30 2021-10-15 浙江大学 基于位置矢量加权积分的连续线段数控加工路径平滑方法
CN113589754A (zh) * 2021-07-23 2021-11-02 哈尔滨工业大学(深圳) 一种变螺旋角微细钻头的磨槽加工方法
CN114035513A (zh) * 2021-09-28 2022-02-11 苏州谋迅智能科技有限公司 S形速度曲线前瞻规划方法和装置、存储介质和计算设备
CN114200892A (zh) * 2021-11-01 2022-03-18 苏州谋迅智能科技有限公司 交互输入设备平滑输出的方法和装置、存储介质和设备
CN114237161A (zh) * 2021-11-16 2022-03-25 华南理工大学 一种基于数字滤波的工业机器人nurbs曲线插补方法
CN114475658A (zh) * 2022-02-23 2022-05-13 广州小鹏自动驾驶科技有限公司 一种自动驾驶速度的规划方法及装置、车辆和存储介质
CN114740803A (zh) * 2022-04-06 2022-07-12 南华大学 一种nurbs曲线插补速度控制方法、装置及设备
CN114942615A (zh) * 2022-05-23 2022-08-26 江南大学 一种等弓高误差插补方法、装置及存储介质
CN114995118A (zh) * 2022-07-18 2022-09-02 英孚康(浙江)工业技术有限公司 一种抑制过冲和反向的跃度自适应s型速度曲线规划方法
CN115237058A (zh) * 2022-09-21 2022-10-25 济南邦德激光股份有限公司 基于牛顿迭代法的b样条实时插补方法、设备和存储介质
CN115328032A (zh) * 2022-10-11 2022-11-11 济南邦德激光股份有限公司 基于s形加减速的b样条速度前瞻控制方法、设备和介质
CN117555291A (zh) * 2024-01-11 2024-02-13 佛山德玛特智能装备科技有限公司 一种插补方法、装置、插补器和介质
CN118170030A (zh) * 2024-04-19 2024-06-11 英孚康(浙江)工业技术有限公司 变换系数自适应的运控系统退绕式旋转轴超柔性控制方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001092516A (ja) * 1999-09-20 2001-04-06 Hitachi Ltd 数値制御曲面加工装置
CN101493687A (zh) * 2009-03-02 2009-07-29 广西大学 实时前瞻全程加减速控制的nurbs曲线自适应分段插补方法
CN102608956A (zh) * 2012-03-05 2012-07-25 浙江工业大学 一种基于de Boor算法的NURBS曲线自适应插补控制方法
CN103048953A (zh) * 2013-01-05 2013-04-17 福建工程学院 一种基于arm9嵌入式系统和fpga的nurbs曲线分段插补方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001092516A (ja) * 1999-09-20 2001-04-06 Hitachi Ltd 数値制御曲面加工装置
CN101493687A (zh) * 2009-03-02 2009-07-29 广西大学 实时前瞻全程加减速控制的nurbs曲线自适应分段插补方法
CN102608956A (zh) * 2012-03-05 2012-07-25 浙江工业大学 一种基于de Boor算法的NURBS曲线自适应插补控制方法
CN103048953A (zh) * 2013-01-05 2013-04-17 福建工程学院 一种基于arm9嵌入式系统和fpga的nurbs曲线分段插补方法

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549328A (zh) * 2018-03-22 2018-09-18 汇川技术(东莞)有限公司 自适应速度规划方法及系统
CN109582023A (zh) * 2018-12-21 2019-04-05 费子偕 一种新型载人工具以及适用其的控制方法
CN109582023B (zh) * 2018-12-21 2019-10-11 费子偕 一种新型载人工具以及适用其的控制方法
CN110189295A (zh) * 2019-04-16 2019-08-30 浙江工业大学 基于随机森林和中心线的眼底视网膜血管分割方法
CN110865610A (zh) * 2019-10-18 2020-03-06 中国工程物理研究院机械制造工艺研究所 一种基于机床振动抑制的刀具轨迹插值和速度规划方法
CN112859734B (zh) * 2019-11-27 2022-01-25 西安交通大学 一种Airthoid曲线及基于Airthoid曲线的运动规划平顺方法
CN112859734A (zh) * 2019-11-27 2021-05-28 西安交通大学 一种Airthoid曲线及基于Airthoid曲线的运动规划平顺方法
CN111198561A (zh) * 2019-12-05 2020-05-26 浙江大华技术股份有限公司 目标跟踪的运动控制方法、装置、计算机设备及存储介质
CN111198561B (zh) * 2019-12-05 2021-10-22 浙江大华技术股份有限公司 目标跟踪的运动控制方法、装置、计算机设备及存储介质
CN113031510B (zh) * 2019-12-24 2022-04-05 沈阳智能机器人创新中心有限公司 面向复杂多轴系统的b样条曲线计算加速方法
CN113031510A (zh) * 2019-12-24 2021-06-25 沈阳智能机器人创新中心有限公司 面向复杂多轴系统的b样条曲线计算加速方法
CN113156890A (zh) * 2020-01-22 2021-07-23 科德数控股份有限公司 一种非实时插补数控系统的倍率控制方法
CN113156890B (zh) * 2020-01-22 2023-07-18 科德数控股份有限公司 一种非实时插补数控系统的倍率控制方法
CN111487930A (zh) * 2020-04-24 2020-08-04 东莞市精驰软件有限公司 基于对称图形替换技术的运动控制系统、方法、装置、机床和存储介质
CN111421555A (zh) * 2020-05-29 2020-07-17 镇江奥立特机械制造有限公司 一种高精度机器人的多轴同步控制方法
CN111722591B (zh) * 2020-06-05 2021-10-08 浙江工业大学 一种商标模切机高精度联动插补的方法
CN111722591A (zh) * 2020-06-05 2020-09-29 浙江工业大学 一种商标模切机高精度联动插补的方法
CN112015142A (zh) * 2020-08-26 2020-12-01 无锡信捷电气股份有限公司 一种基于nurbs的小线段加工方法
CN112269356A (zh) * 2020-10-27 2021-01-26 南京溧航仿生产业研究院有限公司 一种机器人nurbs轨迹插补方法
CN112269356B (zh) * 2020-10-27 2022-03-18 南京溧航仿生产业研究院有限公司 一种机器人nurbs轨迹插补方法
CN112486034A (zh) * 2020-11-09 2021-03-12 北京配天技术有限公司 验证轨迹规划的方法、电子设备及存储介质
CN112486034B (zh) * 2020-11-09 2023-11-10 北京配天技术有限公司 验证轨迹规划的方法、电子设备及存储介质
CN113031525A (zh) * 2021-03-03 2021-06-25 福州大学 一种应用于数控加工的多项式加减速运动控制方法及设备
CN113204215A (zh) * 2021-04-16 2021-08-03 华中科技大学 一种数控加工全局nurbs轨迹实时插补方法及其应用
CN113156891B (zh) * 2021-04-26 2023-02-17 北京航空航天大学 一种基于弓高误差限制和加加速度连续的进给率规划方法
CN113156891A (zh) * 2021-04-26 2021-07-23 北京航空航天大学 一种基于弓高误差限制和加加速度连续的进给率规划方法
CN113341886A (zh) * 2021-05-25 2021-09-03 深圳市汇川技术股份有限公司 平滑进给速度规划方法、设备及计算机可读存储介质
CN113219989A (zh) * 2021-06-02 2021-08-06 安徽工业大学 一种基于改进的蝴蝶优化算法移动机器人路径规划方法
CN113504764A (zh) * 2021-06-30 2021-10-15 浙江大学 基于位置矢量加权积分的连续线段数控加工路径平滑方法
CN113504764B (zh) * 2021-06-30 2024-07-05 浙江大学 基于位置矢量加权积分的连续线段数控加工路径平滑方法
CN113467368A (zh) * 2021-07-15 2021-10-01 苏州谋迅智能科技有限公司 S形速度曲线的调整方法
CN113589754A (zh) * 2021-07-23 2021-11-02 哈尔滨工业大学(深圳) 一种变螺旋角微细钻头的磨槽加工方法
CN114035513A (zh) * 2021-09-28 2022-02-11 苏州谋迅智能科技有限公司 S形速度曲线前瞻规划方法和装置、存储介质和计算设备
CN114200892A (zh) * 2021-11-01 2022-03-18 苏州谋迅智能科技有限公司 交互输入设备平滑输出的方法和装置、存储介质和设备
CN114237161A (zh) * 2021-11-16 2022-03-25 华南理工大学 一种基于数字滤波的工业机器人nurbs曲线插补方法
CN114475658A (zh) * 2022-02-23 2022-05-13 广州小鹏自动驾驶科技有限公司 一种自动驾驶速度的规划方法及装置、车辆和存储介质
CN114475658B (zh) * 2022-02-23 2023-08-25 广州小鹏自动驾驶科技有限公司 一种自动驾驶速度的规划方法及装置、车辆和存储介质
CN114740803B (zh) * 2022-04-06 2022-12-27 南华大学 一种nurbs曲线插补速度控制方法、装置及设备
CN114740803A (zh) * 2022-04-06 2022-07-12 南华大学 一种nurbs曲线插补速度控制方法、装置及设备
CN114942615A (zh) * 2022-05-23 2022-08-26 江南大学 一种等弓高误差插补方法、装置及存储介质
CN114942615B (zh) * 2022-05-23 2023-07-28 江南大学 一种等弓高误差插补方法、装置及存储介质
CN114995118B (zh) * 2022-07-18 2023-08-22 英孚康(浙江)工业技术有限公司 一种抑制过冲和反向的跃度自适应s型速度曲线规划方法
CN114995118A (zh) * 2022-07-18 2022-09-02 英孚康(浙江)工业技术有限公司 一种抑制过冲和反向的跃度自适应s型速度曲线规划方法
CN115237058B (zh) * 2022-09-21 2023-01-10 济南邦德激光股份有限公司 基于牛顿迭代法的b样条实时插补方法、设备和存储介质
CN115237058A (zh) * 2022-09-21 2022-10-25 济南邦德激光股份有限公司 基于牛顿迭代法的b样条实时插补方法、设备和存储介质
CN115328032A (zh) * 2022-10-11 2022-11-11 济南邦德激光股份有限公司 基于s形加减速的b样条速度前瞻控制方法、设备和介质
CN117555291A (zh) * 2024-01-11 2024-02-13 佛山德玛特智能装备科技有限公司 一种插补方法、装置、插补器和介质
CN117555291B (zh) * 2024-01-11 2024-03-22 佛山德玛特智能装备科技有限公司 一种插补方法、装置、插补器和介质
CN118170030A (zh) * 2024-04-19 2024-06-11 英孚康(浙江)工业技术有限公司 变换系数自适应的运控系统退绕式旋转轴超柔性控制方法
CN118170030B (zh) * 2024-04-19 2024-08-16 英孚康(浙江)工业技术有限公司 变换系数自适应的运控系统退绕式旋转轴超柔性控制方法

Also Published As

Publication number Publication date
CN107817764B (zh) 2019-03-08

Similar Documents

Publication Publication Date Title
CN107817764B (zh) 一种基于s曲线加减速算法的nurbs曲线双向自适应插补方法
CN110865610B (zh) 一种基于机床振动抑制的刀具轨迹插值和速度规划方法
CN101493687B (zh) 实时前瞻全程加减速控制的nurbs曲线自适应分段插补方法
Nam et al. A study on a generalized parametric interpolator with real-time jerk-limited acceleration
CN101539769B (zh) 基于二次b样条曲线对g01代码的拟合及插补方法
CN107765648B (zh) 一种cnc加工的进给速度规划方法及装置
CN103064344B (zh) 一种基于nurbs曲线插补的速度平滑控制方法
CN104331025B (zh) 一种面向微小线段高效加工的速度前瞻预处理方法
CN107844058B (zh) 一种运动曲线离散动态规划方法
CN109765887A (zh) 一种自动驾驶控制方法
CN108227630A (zh) 一种采用时间参数多项式插补的自由曲面数控加工方法
CN106814694A (zh) 一种高速高精度的参数曲线前瞻插补算法
CN112907057B (zh) 基于改进mopso算法的生产调度优化方法及系统
CN104597845A (zh) 一种用于高质量加工的样条曲线插补算法
CN103163837B (zh) 一种面向五轴数控加工的刀具轨迹自适应管理系统及方法
CN111506988A (zh) 微小线段刀具路径c2连续压缩平滑方法
CN115202293B (zh) 一种工业机器人两段式速度规划方法
CN115202291A (zh) 一种基于椭圆弧拟合的nurbs曲线插补方法
CN114815743A (zh) 一种数控机床的曲线插补方法、系统及存储介质
CN113977573A (zh) 一种高阶复杂约束条件下高效的工业机器人加工节能轨迹规划方法
Sun et al. Smoothing interpolation of five-axis tool path with less feedrate fluctuation and higher computation efficiency
CN112506143A (zh) 基于s型曲线的高质量加工五次多项式速度规划方法
KR100664681B1 (ko) 매개변수곡선으로 기술된 로봇 경로의 샘플 테이터를이용한 직접보간 시스템 및 방법
CN110286651B (zh) 一种高维的轨迹插补方法
Yan et al. THREE-AXIS TOOL-PATH B-SPLINE FITTING BASED ON PREPROCESSING, LEAST SQUARE APPROXIMATION AND ENERGY MINIMIZATION AND ITS QUALITY EVALUATION.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant