[0074] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0075] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。
[0076] 其中一个实施例中,提供一种圆弧轨迹速度自适应控制方法,以克服了切割轨迹中圆弧与长直线衔接处的过切现象,提高不同半径圆形轨迹的切割精度和切割效率。
[0077] 如图1所示,本实施例的圆弧轨迹速度自适应控制方法,包括:
[0078] 步骤1、遍历PLT文件中闭合曲线的各坐标点,计算基于各相邻坐标点所组成的线段的斜率,根据斜率计算出相邻线段速度方向变化的夹角作为拐角。
[0079] 如图2所示,已知PLT文件中任意连续三点坐标为Pi(xi,yi),Pi+1(xi+1,yi+1),Pi+2(xi+2,yi+2),则计算相邻线段Pi Pi+1和Pi+1Pi+2的拐角θi+1如下:
[0080]
[0081]
[0082]
[0083]
[0084] θi+1=acos(cosα*cosβ+sinα*sinβ)*(180/π)
[0085] 其中,角α为经过拐点Pi+1前的速度与X轴正方向的夹角,角β为经过拐点Pi+1后的速度与X轴正方向的夹角。拐角θi+1为对应于坐标Pi+1(即拐点Pi+1)的拐角,令闭合曲线中坐标点的总个数为N,则i的取值范围为0~N‑3,为了计算得到各个拐点对应的拐点,在i的取值范围之外,还要额外计算拐点PN‑1对应的拐角,取坐标P0,PN‑1,PN‑2进行计算。
[0086] 步骤2、以每一坐标点作为拐点,根据相邻线段所对应的拐角对拐点速度进行约束。本实施例中的速度约束应理解为确定速度最大值。
[0087] 令经过拐点前的速度为v,经过拐点后的速度为v',且速度v和速度v'大小相同、方向不同,速度变化量在一个插补周期内,即速度变化量Δv为:
[0088] Δv=amaxT
[0089] 式中,amax为X轴和Y轴(在轨迹切割中通常基于X轴和Y轴控制刀头完成运行,本实施例基于X轴和Y轴进行规划,但不限于整个切割中只存在X轴和Y轴)的最大合加速度,T为插补周期;
[0090] 设速度v与X轴正方向的夹角为α,速度v'与X轴正方向的夹角为β,则速度v和速度v'在X、Y轴方向上的速度分量的大小为:
[0091] vx=v cosα
[0092] v'x=v'cosβ
[0093] vy=v sinα
[0094] v'y=v'sinβ
[0095] 设amax_x、amax_y分别为X轴和Y轴最大允许加速度,则经过拐点前后的速度在X、Y轴方向上的速度变化为:
[0096] v'x‑vx=v'cosβ‑v cosα=amax_xT
[0097] v'y‑vy=v'sinβ‑v sinα=amax_yT
[0098] 由于速度v'和速度v大小相等,方向不同,则有v'=v,设拐点处的速度为vm,计算出vm的速度为:
[0099]
[0100] 且为了便于用户对拐点速度可控,进一步调整拐点速度vm为:
[0101]
[0102] 式中,vturn为用户设定的拐弯系数。需要说明的是,本实施例中的速度为具有大小和方向的速度,但是在以上计算过程中仅取速度的大小进行计算,即公式中的v,v',vm,vturn表示相应速度的大小。
[0103] 容易理解的是,以上计算的拐点速度vm为统一表述方式,在具体计算时为了便于建立每一拐点对应的拐点速度,可基于vm进一步添加下标标识进行区分。
[0104] 步骤3、提取闭合曲线中的圆弧轨迹,并计算各个圆弧轨迹的半径、圆心、线速度,根据各个圆弧轨迹的线速度对构成圆弧轨迹的拐点对应的拐点速度进行约束更新。
[0105] 步骤3.1、取PLT文件中的连续三个坐标点Pi、Pi+1、Pi+2,令初始值i=0,i最大值为N‑3,N为闭合曲线中坐标点的总个数,计算这三个点所组成的两条线段Pi Pi+1和Pi+1Pi+2的差值为Δli和对应的拐角为θi+1,判断θi+1是否小于拐角阈值θangle,若满足转到步骤3.2,若不满足,则i=i+1,并转到步骤3.1;
[0106] 步骤3.2、判断圆弧点的数量pointSum是否为0,若pointSum为0,则圆弧起始点序号Startnum=i,pointSum=pointSum+1,圆弧线段长度差值D_value=Δli,且i=i+1并转到步骤3.1;若pointSum不为0,转到步骤3.3;
[0107] 步骤3.3、判断Δli与D_value的差值的绝对值是否小于设定阈值Ldis,若满足,转到步骤3.4;若不满足,转到步骤3.6;
[0108] 步骤3.4、判断当前圆弧半径(即步骤3.2中确定了圆弧起始点序号的圆弧)R是否为0,若R为0,则继续判断pointSum是否大于6,若pointSum大于6,取序号为Startnum、Startnum+2、Startnum+5三点坐标确定圆弧,计算圆弧的半径R、圆心坐标CentrePoint,并跳到步骤3.5,若pointSum小于6,则pointSum=pointSum+1,i=i+1,转到步骤3.1;若R不为
0,跳到步骤3.5;
[0109] 步骤3.5、判断当前拐点Pi与圆心CentrePoint的距离是否在半径R的阈值内(这里的半径R的阈值应理解为基于半径R确定的判断范围,例如半径R的阈值为0.9R~1.1R),若满足,则pointSum=pointSum+1,i=i+1,转到步骤3.1;若不满足,转到步骤3.6;
[0110] 步骤3.6、判断pointSum是否大于6,若大于6,圆弧终点序号Endnum=i,取序号为Startnum、 三点坐标确定圆弧,计算圆弧的线速度Vel,Vel=2πnR+Vstart,n为转速,Vstart为起跳速度,并转到步骤3.7;若pointSum小于6,则更新Startnum=i,pointSum=1,D_value=Δli,当前圆弧半径R为0,i=i+1,转到步骤3.1;
[0111] 步骤3.7、根据圆弧的线速度Vel对此圆弧的各个拐点速度进行约束,并保存此圆弧段的最大速度Vmax:
[0112] Vmin=min(vmk)(k=Startnum...Endnum)
[0113] 式中,vmk为步骤2中由拐角大小约束的拐点速度;
[0114] 对拐点速度进行约束更新:
[0115] vmk=min(Vel,Vmin)(k=Startnum...Endnum)
[0116] 保存此圆弧的最大速度:
[0117] Vmax=vmk
[0118] 式中,Startnum为此圆弧起始点序号,Endnum为此圆弧终点序号;容易理解的是,步骤3.7中限定圆弧段的最大速度时以Vmax进行统一表述,在具体计算时为了便于建立不同圆弧对应的最大速度,可基于Vmax进一步添加下标标识进行区分。
[0119] 且i=i+1,转到步骤3.1。
[0120] 步骤4、根据步骤3更新后的各个拐点的拐点速度、各相邻坐标点所构成的线段长度,利用速度倒推法对拐点速度进行约束更新。
[0121] 步骤4.1、令相邻两个坐标点组成的线段长度为L0、L1、…、LN‑2,其中N为闭合曲线中坐标点的总个数,取步骤3约束更新后各个拐点P0、P1、…、PN‑1的拐点速度为vm0、vm1、…、vm(N‑1),且起点和终点的速度相等,即vm0=vm(N‑1)=Vstart,Vstart为起跳速度;
[0122] 步骤4.2、假设当前点速度为vmb,b=N‑1,...,3,2,1,从当前点开始以S型速度曲线加速,当加速距离达到Lb‑1时的速度为v'm(b‑1),则更新拐点Pb‑1的速度为vm(b‑1)=min(vm(b‑1),v'm(b‑1)),继续以vm(b‑1)作为当前点速度以S型速度曲线加速,直到速度倒推至v0。
[0123] 在速度倒推法中,以vm(N‑1)起始开始进行倒推,在倒推时取倒推距离为拐点PN‑1和拐点PN‑2之间的间距LN‑2,当加速距离达到LN‑2时得到一个倒推速度v'm(N‑2),而在步骤3中约束更新后拐点PN‑2对应的速度为vm(N‑2),因此需要重新更新约束,更新为vm(N‑2)=min(vm(N‑2),v'm(N‑2)),完成由速度vm(N‑1)至vm(N‑2)的倒推约束更新。接下去继续以vm(N‑2)开始进行倒推,同理类推,直至完成由速度vm1至vm0的倒推约束更新
[0124] 本实施例中对拐点速度进行约束时,先后采取了三种不同的约束方法,即先基于拐角进行速度约束,后基于圆弧的参数对全部或部分拐点速度约束进行更新,最后基于最新的速度约束利用速度倒推法继续对全部或部分拐点速度进行更新,以此综合考虑了拐点速度的各个影响因素,使得步骤4最终得到的拐点速度具有有效性和可行性。
[0125] 步骤5、利用加减速算法对闭合曲线进行插补,并限制圆弧轨迹的最大速度,完成闭合曲线的速度规划。
[0126] 步骤5.1、取由matlab制定生成的S型速度曲线,并离散成f阶,构成加速度表AccTab=[at1,at2...at(j‑1)、atj...at(f‑1),atf]、加速步长表LenTab=[Lt1,Lt2...Lt(j‑1)、Ltj...Lt(f‑1),Ltf],j=1...f,用户设定的最大切割速度为Vuser,切割加速度为Auser,计算速度表VTab=[Vt1,Vt2...Vt(j‑1)、Vtj...Vt(f‑1),Vtf],其中速度表计算如下:
[0127] Vtj=Vstart+Lt1*at1*Auser,j=1
[0128] Vtj=Vt(j‑1)+Ltj*atj*Auser,j≠1
[0129] 式中,Vstart为预设定的起跳速度,且若Vtj>Vuser,则Vtj=Vuser;
[0130] 步骤5.2:根据当前速度Vcur、目标速度Vtar、相邻两个坐标点之间的长度Lc,计算加减速距离如下:
[0131] 取当前速度Vcur、目标速度Vtar中的较小值作为初始速度,以S型速度曲线加速至两速度中的较大值,加速距离为L'acc,若加速距离L'acc≥Lc,则L'acc=Lc;
[0132] (1)、若Vcur<Vtar:
[0133] 则加速距离
[0134] (2)、若Vcur≥Vtar:
[0135] 则加速距离
[0136] 则计算得到减速距离为Ldec=Lc‑Lacc;
[0137] 由于实际加速段累积插补长度可能与加速距离不重合,即实际运动过程中以加速距离Lacc为目标基准进行运动,但由于运动误差的影响导致实际运动距离与Lacc相比具有一定偏差,因此需要对加速距离进行更新,更新实际加速距离为 (其中vci为加速段在每个插补周期的实际速度,T为插补周期),所以实际减速距离为Ldecactual=Lc‑Laccactual。
[0138] 步骤5.3:根据计算得到的加速距离和减速距离判断当前插补位置处于加速段或减速段并在每个插补周期内进行相应的加减速,且如果当前相邻两个坐标点之间的线段不为圆弧段,则限制当前插补位置的最大速度为预设的最大允许速度;如果当前相邻两个坐标点之间的线段为圆弧段,则限制当前插补位置的最大速度为圆弧的最大速度Vmax。
[0139] 即本申请的速度规划控制后,整个闭合曲线的运行中直线按照预设的最大允许速度进行运动,圆弧按照限制的每段圆弧的最大速度进行运动,并且所有拐点按照步骤4最终更新后的拐点速度进行运动,以保证运动精度和速度。并且本申请的速度规划在如图3所示的长直线与圆弧衔接类型以及多圆弧衔接类型中均具有优异的应用效果。
[0140] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0141] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。