基本原理
拐点判别

图1 曲率半径
如图1,假设p1、p2、p3为一条轨迹中的三个点,这三个点可以确定一个圆,该圆的半径作为p2点曲率半径,可以根据三点的坐标然后根据半径和最大加速度(作为向心加速度),求该曲率半径下的允许速度:
aa=(vc’/delt_t)2/r;v’c=sqrt(raa)delt_t
在拐点允许速度、vh、曲率半径允许速度中取最小值,作为该点的速度。向心加速度也可以分解为x、y两个方向上的分加速度。
θ是和之间的夹角,ci=1/ri是pi点的曲率,给出判断高曲率点的标准如下,此处的高曲率点作为第一类速度拐点[1](在拐点的位置处需要降速):
(a)ci>ci-1和ci>ci+1;
(b)θ≤90°;
(c)θ>90°。
如果点pi同时满足标准(a)和(b),可以判定此点是一个尖锐拐点;如果pi同时满足标准(a)和(c),可以判定此点是一个高曲率点但不是尖锐拐点。非尖锐拐点有可能包含在准直线段内,而尖锐拐点一定是降速点。

图2 拐点和准直线
准直线概念
准直线段的定义:两拐点(或起始点与拐点)之间各线段的组合。在准直线段内,所有两条线段的交点速度都小于允许速度,因此,可以作为一条直线来看待和计算。描述准直线的重要参数:起始速度v0、末速度ve、长度(直线内各线段长度之和),当这三个参数确定后,可以唯一确定与其对应的s型速度曲线。如图2中p1~p4就是一条准直线,其长度l=l1+l2+l3。直线段是准直线段的特例。
准直线段的安全性:当一条准直线段的末速度为最小速度v0时,则这条准直线是安全的,不会因为后续的准直线衔接不上导致冲击,至多会引起停顿。
准直线段的合并:前一条准直线段的末速度等于后一条准直线段的初速度。对后一条准直线段来说,若其长度l不能满足从其初速度v’o 按照降速模型降至其末速度v’e ,则改准直线段必须与前一条准直线段合并成一条新的准直线段。若l4不能满足从其初速度v’o 降速到其末速度v’e,则p4p5与前一条准直线段p1~p4合并成一条新的准直线段p1~p5,该准直线段的初速度vo、末速度为v’e、长度l’=l1+l2+l3+l4。
任意一条准直线段,只要其末速度ve>v0,都有可能与后一条准直线段合并。合并过程是一个倒推过程,直到满足降速模型。该倒推过程是针对准直线段,与以前的算法相比,大大提高效率。
计算vt,在pi点处速度大小不变,方向发生了变化即产生了δv,δv=vtsin(θ/2)2,可得:
=
将aa带入at,求出vt,δt=1ms;
判断:if vt≤vh,那么vt为该点的许用速度vc=vt,该点为拐点;
else vt>vh该交点不是拐点,通过曲率半径计算出许用速度,两者取最小值作为该点的许用速度vc。
当两直线段交点处的允许速度vc大于或等于最大速度vh,则该交点不是拐点,如图2中p2和p3;根据初速度vo(或当前速度v1)、及两直线段交点的允许速度(vc<vh),
若vc<vo或vc<v1,则该交点为拐点;
根据vo或v1、vc作为vh’,按升速模型计算该升速段距离l’,若l’< l,则该交点为拐点,如图2中p4。(l为起始点到该交点的实际距离和;l=l1+l2+l3)。
插补算法
定时插补算法
定时插补(粗插补)算法是通过对加速度,速度的递推计算出当前段的速度,根据定时delta_t,得出来delta_l=v×delta_t,对准直线用剩余距离来验算降速触发点,降速点的触发过程如图3所示。

图3 用剩余距离来验算降速触发点
粗插补算法
粗插补算法即为等长分割,就是处理通过定时分割后得到的距离li(δxi, δyi),准直线长度为l=σli,就是对li进行m等分,每段定长为l的话,
(即对x方向进行了mx等分,对y方向进行了my等分)。li= vi δt,如图4所示,定时分割完以后形成v1,v2,v3…的速度图,定长分割后将v1和v2之间也进行了细分,细分后的速度记为v11,v12,…,v1m。根据公式
,根据公式求出:
计算v2,v3之间的速度值。

图4 粗插补速度图
结语
实验结果如图5所示,实验中采用的参考数据为aa = 1000;ad = -1000; vsa = 2000; vsd = 2000;delt_t = 0.001;vh = 5000;ja = aa×aa/(2×vsa) ;jd = ad×ad/(2×vsd) ;编程使用c/c++基于vc6.0的环境,通过软件生成g代码下载到mpc05卡。

图5 速度曲线
从图5中明显看出速度达到了很好的平滑,图5中有六条准直线,因此就存在六条s型速度曲线。通过在电机齿轮上的测试,机械振动有了很明显的改善,无明显冲击。实验证明该算法能够很好的减小机械振动,提高机械切割的精度和质量,在算法的误差分析方面还有待进一步的研究。






