一种两轴联动机械臂运动控制的同步误差补偿方法
技术领域
本发明属于运动控制技术领域,尤其是一种两轴联动机械臂运动控制的同步误差补偿方法。
背景技术
目前,随着科技的迅速发展,机械臂在各种制造行业广泛应用,使得工业自动化程度不断提高。虽然各种机械臂的形态、结构和功能各不一样,但是它们都有一个共同点,就是要沿着某条轨迹精准的运动到一点。在市场上有很多低端的机械臂控制器与伺服器之间是开环控制,没有对伺服器反馈的脉冲加以利用,若控制器与伺服器之间采取闭环控制,就可以对机械臂运动过程中产生的同步误差进行实时补偿,使得机械臂两轴联动的同步性更好。
发明内容
为了克服现有的两轴联动低端控制器在运动过程中定位精度低、两轴同步性差这些方面的不足,本发明提出了一种两轴联动机械臂运动控制的同步误差补偿方法,主要解决计算时取整误差以及硬件延时和机械响应延时误差,实现了机械臂两轴联动具有精度高、同步性好的特点。
本发明解决其技术问题所采用的技术方案如下:
一种两轴联动机械臂运动控制的同步误差补偿方法,所述方法包括以下步骤:
1)采用S型加减速算法并结合电机的性能,建立基于频率的速度表(v0,v1,v2,...,vn),基于脉冲数的步长表(s0,s1,s2,...,sn)和基于步长的加速度表(a0,a1,a2,...,an),三者间的关系有ai=(vi+1-vi)/si;
设在坐标系中有一线段l,其长度为L,与X轴夹角为θ,线段l在X轴上的映射长度大于在Y轴上的映射长度,选取X轴为参考轴,结合速度规划得到起始速度vstart、终止速度vend和匀速速度vcons,则由起始速度vstart得X轴起始速度vX0=vstart*cosθ,Y轴起始速度vY0=vstart*sinθ,同理可得,X轴终止速度vXl,Y轴终止速度vYl,X轴匀速速度vXn,Y轴匀速速度vYn,计算X轴加速长度为LXacce、匀速长度为LXcons和减速长度为LXdece,则L=LXacce+LXcons+LXdece;
2)在运动过程中进行同步插补,计算X轴、Y轴每个插补周期的速度和需要发送的脉冲数;
计算X轴在第i+1个插补周期的速度vXi+1:
vXi+1=vXi+aj*MXi (1)
其中,vXi为X轴第i个插补周期的速度,加速度aj的下标j为vXi在速度表中(v0,v1,v2,...,vn)的位置,通过搜索vj≤vXi<vj+1来确定下标j,MXi为X轴第i个插补周期需要发送的脉冲数;
同理可得,Y轴第i+1个插补周期的速度vYi+1:
vYi+1=vYi+aj*MYi (2)
所述公式(1)和公式(2)中MXi、MYi的确定方法如下:
计算X轴第i个插补周期需要发送的脉冲数MXi:
MXi=int[T*vXi] (3)
其中,int[]表示对计算结果进行取整,确保得到的脉冲数为整数;T为固定的插补时间,由系统的插补精度要求和硬件的相关参数共同决定;vXi为X轴第i个插补周期的速度,则X轴第i个插补周期TXi为:
TXi=MXi/vXi (4)
再计算Y轴第i个插补周期需要发送的脉冲数MYi:
MYi=int[TYi*vYi] (5)
其中,TYi为Y轴第i个插补周期,TYi=TXi+ΔTYi-1,ΔTYi-1为Y轴上一次插补周期计算MYi-1取整时舍去的小数所对应的时间,vYi为Y轴第i个插补周期的速度,计算TYi*vYi取整时舍去的小数所对应的时间ΔTYi,加到下一次Y轴的插补周期TYi+1中;
3)使用伺服器的编码器进行同步误差反馈补偿,根据伺服器编码器实时反馈的位置来确定X轴、Y轴的同步脉冲误差ΔMXi、ΔMYi和同步时间误差ΔtXi、ΔtYi。
进一步,在X轴第i个插补周期结束时,采集编码器反馈回来的当前插补周期内X轴运行的脉冲数M'Xi,计算X轴在第i个插补周期内的同步脉冲误差ΔMXi和同步时间误差ΔtXi:
ΔMXi=MXi-M'Xi (6)
ΔtXi=ΔMXi/vXi (7)
同理可得,Y轴在第i个插补周期内的同步脉冲误差M'Yi和同步时间误差ΔtYi:
ΔMYi=MYi-M'Yi (8)
ΔtYi=ΔMYi/vYi (9)
若ΔtXi>ΔtYi,说明X轴滞后Y轴,则Y轴第i+1个插补周期更新为T'Yi+1,即T′Yi+1=TYi+1+(ΔtXi-ΔtYi),X轴第i+1个插补周期保持不变,即T′Xi+1=TXi+1;若ΔtXi<ΔtYi,说明Y轴滞后X轴,则X轴第i+1个插补周期更新为T'Xi+1,即T'Xi+1=TXi+1+(ΔtYi-ΔtXi),Y轴第i+1个插补周期保持不变,即T′Yi+1=TYi+1。
更进一步,计算X轴、Y轴每个插补周期的脉冲发送频率,根据所述步骤2)中X轴第i个插补周期需要发送的脉冲数为MXi和所述步骤3)中X轴第i个插补周期更新为T′Xi,得X轴在第i个插补周期的脉冲发送频率为fXi:
fXi=MXi/T′Xi (10)
同理可得,Y轴在第i个插补周期的脉冲发送频率为fYi:
fYi=MYi/T′Yi (11)
所述同步误差补偿方法还包括以下步骤:
4)在运动过程中,将参考轴X轴每次插补周期发送的脉冲数进行累加判断是否运动到终点;
将X轴每次插补周期发送的脉冲数进行累加得到MXadd:
MXadd=MX0+MX1+MX2+...+MXi (12)
所述步骤1)中X轴加速长度为LXacce、匀速长度为LXcons、减速长度为LXdece,在加速过程中,所述公式(1)和所述公式(2)中的aj大于0,当MXadd≥LXacce时,说明加速过程完成进入匀速过程;在匀速过程中,所述公式(1)和所述公式(2)中的aj恒为0,当MXadd≥LXacce+LXcons时,提前进入减速过程以确保减速到终止速度vXl;在减速过程中,所述公式(1)和所述公式(2)中的aj小于0,当MXadd≥L时,以终止速度vXl运行MXi-(MXadd-L)个脉冲达到线段的终点。
本发明的有益效果为:(1)每一次插补都对上一次插补计算时的误差进行补偿,提高了机械臂两轴联动的精度和同步性;(2)使用同步误差反馈补偿法,更进一步提高了两轴联动的同步性,减小了硬件延时和机械响应延时的误差。
附图说明
图1为同步误差补偿方法的流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
参照图1,一种两轴联动机械臂运动控制的同步误差补偿方法,包括以下步骤:
1)采用S型加减速算法并结合电机的性能,建立基于频率的速度表(v0,v1,v2,...,vn),基于脉冲数的步长表(s0,s1,s2,...,sn)和基于步长的加速度表(a0,a1,a2,...,an),三者间的关系有ai=(vi+1-vi)/si。
设在坐标系中有一线段l,其长度为L,与X轴夹角为θ,线段l在X轴上的映射长度大于在Y轴上的映射长度,选取X轴为参考轴,结合速度规划得到起始速度vstart、终止速度vend和匀速速度vcons,则由起始速度vstart得X轴起始速度vX0=vstart*cosθ,Y轴起始速度vY0=vstart*sinθ,同理可得,X轴终止速度vXl,Y轴终止速度vYl,X轴匀速速度vXn,Y轴匀速速度vYn。计算X轴加速长度为LXacce、匀速长度为LXcons和减速长度为LXdece,则L=LXacce+LXcons+LXdece。
加速长度
减速长度
匀速长度LXcons=L-LXacce-LXdece
2)如图1,在运动过程中进行同步插补,计算X轴、Y轴每个插补周期的速度和需要发送的脉冲数。
计算X轴在第i+1个插补周期的速度vXi+1:
vXi+1=vXi+aj*MXi (1)
其中,vXi为X轴第i个插补周期的速度,加速度aj的下标j为vXi在速度表中(v0,v1,v2,...,vn)的位置,通过搜索vj≤vXi<vj+1来确定下标j,MXi为X轴第i个插补周期需要发送的脉冲数。
同理可得,Y轴第i+1个插补周期的速度vYi+1:
vYi+1=vYi+aj*MYi (2)
所述公式(1)和公式(2)中MXi、MYi的确定方法如下:
计算X轴第i个插补周期需要发送的脉冲数MXi:
MXi=int[T*vXi] (3)
其中,int[]表示对计算结果进行取整,确保得到的脉冲数为整数;T为固定的插补时间,由系统的插补精度要求和硬件的相关参数共同决定;vXi为X轴第i个插补周期的速度。则X轴第i个插补周期TXi为:
TXi=MXi/vXi (4)
再计算Y轴第i个插补周期需要发送的脉冲数MYi:
MYi=int[TYi*vYi] (5)
其中,TYi为Y轴第i个插补周期,TYi=TXi+ΔTYi-1,ΔTYi-1为Y轴上一次插补周期计算MYi-1取整时舍去的小数所对应的时间,vYi为Y轴第i个插补周期的速度。计算TYi*vYi取整时舍去的小数所对应的时间ΔTYi,加到下一次Y轴的插补周期TYi+1中。
3)使用伺服器的编码器进行同步误差反馈补偿,根据伺服器编码器实时反馈的位置来确定X轴、Y轴的同步脉冲误差ΔMXi、ΔMYi和同步时间误差ΔtXi、ΔtYi。
进一步,在X轴第i个插补周期结束时,采集编码器反馈回来的当前插补周期内X轴运行的脉冲数M'Xi,计算X轴在第i个插补周期内的同步脉冲误差ΔMXi和同步时间误差ΔtXi:
ΔMXi=MXi-M'Xi (6)
ΔtXi=ΔMXi/vxi (7)
同理可得,Y轴在第i个插补周期内的同步脉冲误差M'Yi和同步时间误差ΔtYi:
ΔMYi=MYi-M'Yi (8)
ΔtYi=ΔMYi/vYi (9)
若ΔtXi>ΔtYi,说明X轴滞后Y轴,则Y轴第i+1个插补周期更新为T'Yi+1,即T′Yi+1=TYi+1+(ΔtXi-ΔtYi),X轴第i+1个插补周期保持不变,即T′Xi+1=TXi+1;若ΔtXi<ΔtYi,说明Y轴滞后X轴,则X轴第i+1个插补周期更新为T'Xi+1,即T'Xi+1=TXi+1+(ΔtYi-ΔtXi),Y轴第i+1个插补周期插保持不变,即T′Yi+1=TYi+1。
更进一步,计算X轴、Y轴每个插补周期的脉冲发送频率。根据所述步骤2)中X轴第i个插补周期需要发送的脉冲数为MXi和所述步骤3)中X轴第i个插补周期更新为T′Xi,可得X轴在第i个插补周期的脉冲发送频率为fXi:
fXi=MXi/T′Xi (10)
同理可得,Y轴在第i个插补周期的脉冲发送频率为fYi:
fYi=MYi/T′Yi (11)
所述同步误差补偿方法还包括以下步骤:
4)在运动过程中,将参考轴X轴每次插补周期发送的脉冲数进行累加判断是否运动到终点。
将X轴每次插补周期发送的脉冲数进行累加得到MXadd:
MXadd=MX0+MX1+MX2+...+MXi (12)
所述步骤1)中X轴加速长度为LXacce、匀速长度为LXcons、减速长度为LXdece,在加速过程中,所述公式(1)和所述公式(2)中的aj大于0,当MXadd≥LXacce时,说明加速过程完成进入匀速过程;在匀速过程中,所述公式(1)和所述公式(2)中的aj恒为0,当MXadd≥LXacce+LXcons时,提前进入减速过程以确保减速到终止速度vXl;在减速过程中,所述公式(1)和所述公式(2)中的aj小于0,当MXadd≥L时,以终止速度vXl运行MXi-(MXadd-L)个脉冲达到线段的终点。