本发明涉及机器人,尤其涉及一种机器人电机动态调速规则及其在线求解方法。
背景技术:
1、机器人运动过程中平顺性与快速性是衡量其运动控制能力的重要指标。在现有机器人控制中,当需要以不同的速度执行示教轨迹时,一般通过修改示教轨迹的设定速度来改变轨迹的运行速度。而对于工序轨迹繁多的复杂作业而言,每次变更轨迹速度时,操作人员都需要重新修改每条轨迹的速度设定值,这就显得非常繁琐,同时容易出错,极大的影响了工作效率和机器人作业质量。
2、专利申请号为201210224099的中国发明专利公开了一种进给速度实时修调方法,该方法每次调速时都需要重新检测当前点的加减速状态,根据不同的公式对后续的速度曲线进行重新规划,逻辑复杂且计算量大,且该专利主要针对的是数控机床加工领域中的进给速度调节。而在机器人控制领域中,其运动轨迹通常采用s型速度规划或者更高阶的速度规划方法,若采用重新规划则求解过程复杂,计算量较大,无法高效执行机器人电机的动态调速。
技术实现思路
1、本发明所要解决的技术问题在于提供一种机器人电机动态调速规则及其在线求解方法,以解决每次变更轨迹速度时,操作人员都需要重新修改每条轨迹的速度设定值而导致过程繁琐的问题。
2、本发明通过以下技术手段实现解决上述技术问题的:
3、一种机器人电机动态调速规则及其在线求解方法,包括以下步骤:
4、s10、建立缓存区,以存储轨迹插补数据dn,其中n为自然数;
5、s20、实时获取当前的调整倍率rate;
6、s30、判断调整倍率rate是否发生改变,若发生变化,对缓存的轨迹插补数据进行修正并判断电机是否处于换向节点,若是,执行步骤s40,若否,执行步骤s50;
7、s40、在当前插补周期下,令插补目标值jtarget=d0并下发至电机,重新执行步骤s20;若当前插补周期处于换向后的第一个插补周期,则进行步骤s50;
8、s50、此时电机并未进行换向,计算当前插补目标值jtarget;
9、s60、判断插补目标值jtarget是否在[d0,d1]区间内,如果在区间内,则向缓存头部获取新插补数据d2并进行更新发送至电机端,如果不在则直接将,插补目标值jtarget发送至电机端,并返回步骤s10直至轨迹插补数据dn全部修正结束。
10、通过实时获取当前的调整倍率rate并判断其是否发生变化,通过在当前插补周期下,令插补目标值jtarget=d0并下发至电机,若当前插补周期处于换向后的第一个插补周期,计算当前插补目标值jtarget,并判断插补目标值jtarget是否在[d0,d1]区间内,如果在区间内,则向缓存头部获取新插补数据d2并进行更新发送至电机端,依次类推实现将存储的存储轨迹插补数据dn进行全部修正,从而实现对复杂轨迹速度的实时调整。
11、作为本发明进一步的方案:所述步骤s1包括:
12、s11、获取每次缓存的头部轨迹插补数据d0,初始化插补目标值jtarget=d0,并获取下一个轨迹插补数据d1进行存储;
13、s12、判断是否获取轨迹插补数据d1,若获取,则执行步骤s20,若未获取,直接令插补目标值jtarget=d0并发送给电机,等待数据生产线程继续生产新的轨迹插补数据后结束。
14、作为本发明进一步的方案:每消费一次轨迹插补数据,缓存区中各位数据向前移动一位。
15、作为本发明进一步的方案:所述缓存区大小为20。
16、作为本发明进一步的方案:正常运行时每次获取缓存的头部轨迹插补数据d0,初始化插补目标值jtarget=d0,并获取下一个轨迹插补数据d1。
17、作为本发明进一步的方案:所述调整倍率rate的取值范围为0%≤rate≤100%。
18、作为本发明进一步的方案:所述修正包括以下步骤:
19、s31、保存前一插补周期计算得到的两个轨迹插补数据d1和d0之间的差值deltaj_last,并利用公式(1)计算当前插补周期的差值deltaj;
20、deltaj=d1-d0 (1)
21、s32、判断deltaj*deltaj_last是否<0,其中deltaj_last为最后一次周期所获得的的差值,如果是,则表明电机开始换向,执行步骤s40,反之,执行步骤s50。
22、作为本发明进一步的方案:计算当前插补目标值jtarget的计算公式如下:jtarget=jtarget+deltaj*rate(2)。
23、作为本发明进一步的方案:进行更新发送至电机端包括:
24、并更新d0=d1,d1=d2,将此时的插补目标值jtarget发送至电机端。
25、一种机器人电机动态调速规则及其在线求解系统,包括:
26、存储模块,建立缓存区,以存储轨迹插补数据dn,其中n为自然数;
27、获取模块,用于实时获取当前的调整倍率rate;
28、第一判断模块,用于判断调整倍率rate是否发生改变,若发生变化,对缓存的轨迹插补数据进行修正并判断电机是否处于换向节点,若是,进入赋值模块,若否,进入计算模块;
29、赋值模块,用于在当前插补周期下,令插补目标值jtarget=d0并下发至电机,返回获取模块;若当前插补周期处于换向后的第一个插补周期,则进入计算模块;
30、计算模块,用于计算当前插补目标值jtarget;
31、第二判断模块,用于判断插补目标值jtarget是否在[d0,d1]区间内,如果在区间内,则向缓存头部获取新插补数据d2并进行更新发送至电机端,如果不在则直接将,插补目标值jtarget发送至电机端,并返回存储模块直至轨迹插补数据dn全部修正结束。
32、本发明的优点在于:
33、1、本发明可以实时获取当前的调整倍率rate并判断其是否发生变化,通过在当前插补周期下,令插补目标值jtarget=d0并下发至电机,若当前插补周期处于换向后的第一个插补周期,计算当前插补目标值jtarget,并判断插补目标值jtarget是否在[d0,d1]区间内,如果在区间内,则向缓存头部获取新插补数据d2并进行更新发送至电机端,依次类推实现将存储的存储轨迹插补数据dn进行全部修正,从而实现对复杂轨迹速度的实时调整。
34、2、本发明中,先通过数据生产线程得到插补数据缓存,然后利用消费线程实时地对速度倍率进行检测,从而对缓存中的插补数据进行修正,达到实时调速的目的。
35、3、根据本发明专利提供的动态调速在线求解方法就能够得到平滑、连续的速度变化曲线,在避免调速过程中机械冲击的同时,解决重新规划时的代码量大和稳定性问题,逻辑简单、计算量小,可极大减小后续算法开发的工作量,同时满足机器人实时性强的需求。
36、4、运用本发明时,在机器人整个作业过程中,机器人现场操作人员只需要通过手持示教器发出调速命令,可以非常方便地控制机器人以不同的速度作业,有效提高了机器人的作业效率。