1.本技术涉及机器人技术领域,尤其涉及一种数据处理方法、装置、电 子设备及存储介质。
背景技术:2.目前工业机器人的应用场景广泛,不同应用场景对机器人运行速度曲 线也有不同需求,常见的机器人运行速度规划有s型(多项式)曲线、sine 曲线、sine2曲线。对于不同的运行速度曲线,如何保证机器人实现快速、 平稳地停止是机器人运动控制中的一个重要课题。
3.目前,不同的运行速度规划需单独开发与之匹配的停止速度规划,开 发效率非常低。
技术实现要素:4.为了解决上述技术问题或者至少部分地解决上述技术问题,本技术提 供了一种数据处理方法、装置、电子设备及存储介质。
5.第一方面,本技术提供了一种数据处理方法,包括:
6.若在机器人按照第一运动规划运动过程中接收到触发停止指令,获取 所述第一运动规划中各剩余周期对应的第一插补数据;
7.基于所述第一插补数据确定下一周期的第二插补数据;
8.输出所述第二插补数据,以控制所述机器人在下一周期按照所述第二 插补数据运动,直至完成停止控制。
9.可选地,基于所述第一插补数据确定下一周期的第二插补数据,包括:
10.根据所述第一插补数据确定高斯滤波器的窗值;
11.基于所述第一插补数据及所述高斯滤波器的窗值确定缓冲数组;
12.基于所述第一插补数据、所述高斯滤波器的窗值、所述缓冲数组及高 斯滤波器,对所述第一插补数据进行加权处理,得到第二插补数据。
13.可选地,根据所述第一插补数据确定高斯滤波器的窗值,包括:
14.根据减速段的加速度最大值、减速段的加加速度及运行最大速度确定 所述第一运动规划对应的减速段时间;
15.根据所述减速段时间确定所述高斯滤波器的窗值。
16.可选地,基于所述第一插补数据及所述高斯滤波器的窗值确定缓冲数 组,包括:
17.按照所述高斯滤波器的窗值确定缓冲数组的大小;
18.在所述第一插补数据中提取插补周期;
19.基于所述缓冲数组的大小及所述插补周期生成缓冲数组。
20.可选地,基于所述第一插补数据、所述缓冲数组、所述窗值及高斯滤 波器,对所述第一插补数据进行加权处理,得到第二插补数据,包括:
21.在所述第一插补数据中提取插补位移数组;
22.基于所述第一插补数据确定下一周期的高斯概率和所述缓冲数组的数 学期望;
23.基于所述高斯概率和所述数学期望确定缓冲时间;
24.基于所述缓冲时间及所述插补位移数组确定所述第二插补数据。
25.可选地,基于所述第一插补数据、所述缓冲数组、所述窗值及高斯滤 波器,对所述第一插补数据进行加权处理,得到第二插补数据,还包括:
26.获取缓冲数组对应的当前的索引值,所述索引值每经过一个周期自增 一;
27.将所述缓冲数组中与所述当前的索引值对应的插补周期设置为0。
28.可选地,所述方法还包括:
29.在所述第一插补数据中提取已完成插补次数及插补总次数,所述已完 成插补次数每经过一个周期自增一;
30.若所述已完成插补次数大于或者等于所述插补总次数,或者,所述缓 冲时间为0,确定完成停止控制。
31.第二方面,本技术提供了一种数据处理装置,包括:
32.获取模块,用于若在机器人按照第一运动规划运动过程中接收到触发 停止指令,获取所述第一运动规划中各剩余周期对应的第一插补数据;
33.第一确定模块,用于基于所述第一插补数据确定下一周期的第二插补 数据;
34.输出模块,用于输出所述第二插补数据,以控制所述机器人在下一周 期按照所述第二插补数据运动,直至完成停止控制。
35.可选地,所述第一确定模块包括:
36.第一确定单元,用于根据所述第一插补数据确定高斯滤波器的窗值;
37.第二确定单元,用于基于所述第一插补数据及所述高斯滤波器的窗值 确定缓冲数组;
38.加权处理单元,用于基于所述第一插补数据、所述高斯滤波器的窗值、 所述缓冲数组及高斯滤波器,对所述第一插补数据进行加权处理,得到第 二插补数据。
39.可选地,所述第一确定单元包括:
40.第一确定子单元,用于根据减速段的加速度最大值、减速段的加加速 度及运行最大速度确定所述第一运动规划对应的减速段时间;
41.第二确定子单元,用于根据所述减速段时间确定所述高斯滤波器的窗 值。
42.可选地,所述第二确定单元包括:
43.第三确定子单元,用于按照所述高斯滤波器的窗值确定缓冲数组的大 小;
44.第一提取子单元,用于在所述第一插补数据中提取插补周期;
45.生成子单元,用于基于所述缓冲数组的大小及所述插补周期生成缓冲 数组。
46.可选地,所述加权处理单元包括:
47.第二提取子单元,用于在所述第一插补数据中提取插补位移数组;
48.第四确定子单元,用于基于所述第一插补数据确定下一周期的高斯概 率和所述缓冲数组的数学期望;
49.第五确定子单元,用于基于所述高斯概率和所述数学期望确定缓冲时 间;
50.第六确定子单元,用于基于所述缓冲时间及所述插补位移数组确定所 述第二插
补数据。
51.可选地,所述加权处理单元还包括:
52.获取子单元,用于获取缓冲数组对应的当前的索引值,所述索引值每 经过一个周期自增一;
53.设置子单元,用于将所述缓冲数组中与所述当前的索引值对应的插补 周期设置为0。
54.可选地,所述方法还包括:
55.提取模块,用于在所述第一插补数据中提取已完成插补次数及插补总 次数,所述已完成插补次数每经过一个周期自增一;
56.第二确定模块,用于若所述已完成插补次数大于或者等于所述插补总 次数,或者,所述缓冲时间为0,确定完成停止控制。
57.第三方面,本技术提供了一种电子设备,包括处理器、通信接口、存 储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相 互间的通信;
58.存储器,用于存放计算机程序;
59.处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述 的数据处理方法。
60.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读 存储介质上存储有数据处理方法的程序,所述数据处理方法的程序被处理 器执行时实现第一方面任一所述的数据处理方法的步骤。
61.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
62.本技术实施例通过在第一运动规划中获取各剩余周期对应的第一插补 数据,并基于第一插补数据进行二次规划得到第二插补数据,进而基于第 二插补数据控制机器人在下一周期的运动,直至停止,实现无论机器人运 动过程中所依据的是何种运行速度规划,均可以完成停止控制,无需针对 不同的运行速度规划单独开发与之匹配的停止速度规划,提高开发效率。
附图说明
63.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本 发明的实施例,并与说明书一起用于解释本发明的原理。
64.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地, 对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。
65.图1为本技术实施例提供的一种运行状态机的示意图;
66.图2为本技术实施例提供的一种停止状态机的示意图;
67.图3为本技术实施例提供的一种逻辑状态机的示意图;
68.图4为本技术实施例提供的一种数据处理方法的流程图;
69.图5为图4中步骤s102的流程图;
70.图6为本技术实施例提供的一种实际应用中的数据处理方法的流程图;
71.图7为本技术实施例提供的一种以s型曲线完成停止控制的停止速度 曲线示意
图;
72.图8为本技术实施例提供的一种应用于s型速度曲线完成停止控制的 停止速度曲线示意图;
73.图9为本技术实施例提供的一种应用于sine型速度曲线完成停止控制 的停止速度曲线示意图;
74.图10为本技术实施例提供的一种应用于sinesquare型速度曲线完成停 止控制的停止速度曲线示意图;
75.图11为本技术实施例提供的一种数据处理装置的结构图;
76.图12为本技术实施例提供的一种电子设备的结构图。
具体实施方式
77.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本 申请实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描 述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施 例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动 的前提下所获得的所有其他实施例,都属于本技术保护的范围。
78.由于目前,不同的运行速度规划需单独开发与之匹配的停止速度规划, 开发效率非常低。为此,本技术实施例提供一种数据处理方法、装置、电 子设备及存储介质,能够通过在第一运动规划中获取各剩余周期对应的第 一插补数据,并基于第一插补数据进行二次规划得到第二插补数据,进而 基于第二插补数据控制机器人在下一周期的运动,直至停止,实现无论机 器人运动过程中所依据的是何种运行速度规划,均可以完成停止控制,无 需针对不同的运行速度规划单独开发与之匹配的停止速度规划,提高开发 效率。
79.该数据处理方法可以应用于机器人中,机器人指能够运动且能够停止 运动的机器人,机器人中包括控制器、规划器和驱动模块等等,控制器能 够分别与规划器和驱动模块通信。
80.本技术实施例中,规划器中包括:逻辑状态机、运行状态机及停止状 态机,其中,如图1所示,运行状态机包括的状态有“就绪状态”、“运行 状态”、“待机状态”、“完成状态”和“报错状态”,用于实现机器人运动, 例如指令要求机器人从a点运动到b点;如图2所示,停止状态机包括的 状态有“就绪状态”、“开始状态”、“中断状态”、“完成状态”和“报错状 态”,用于实现机器人停止运动;如图3所示,逻辑状态机包括“就绪状态”、
ꢀ“
执行运行指令”、“停止状态”、“急停状态”等多个状态,用于整体状态 的切换。
81.执行运动指令:“用户触发运行指令,并完成速度规划”是逻辑状态机 的一个触发条件,从当前的“就绪状态”迁移到“执行运行指令”,这个状 态迁移“触发运行指令,并完成速度规划”又是运行状态机的一个触发条 件,让运行状态机从“就绪状态”迁移到“运行状态”,并执行“每个周期 输出一份插补数据”这个动作,控制器在获取到插补数据后,将插补数据 发送至驱动模块,驱动模块驱动机器人按照插补数据运动;
82.停止:“用户触发停止命令”也是逻辑状态机的一个触发条件,从当前 的“执行运动指令”迁移到“停止状态”,这个逻辑状态机的状态迁移“用 户触发停止命令”是运行状态机的一个触发条件,让运行状态机从“运行 状态”迁移到“待机状态”,并执行“将当前的所
有插补数据(1000份长度 数据),从运行状态机的存储器拷贝到停止状态机的存储器中”这个动作, 而“用户触发停止命令”是停止状态机的一个触发条件,让停止状态机从
ꢀ“
就绪状态”迁移至“开始状态”,并执行“本发明所涉及的停止控制,输 出处理过后的插补数据”这个动作。然后“插补完成或buffertime为0
”ꢀ
是停止状态机的一个触发条件,让停止状态机从“开始”状态切换至“完 成”;
83.继续运动:“触发继续命令”是逻辑状态机的一个触发条件,逻辑状态 机从“停止状态”切换至“执行运行指令”状态,这个状态迁移“触发继 续命令”也是运行状态机的一个触发条件,让运行状态机从“待机状态
”ꢀ
迁移到“运行状态”,并执行“按照插补数据继续运行”这个动作,也是停 止状态机的一个触发条件,让停止状态机从“完成”迁移至“就绪”。
84.如图4所示,该数据处理方法可以包括以下步骤:
85.步骤s101,若在机器人按照第一运动规划运动过程中接收到触发停止 指令,获取所述第一运动规划中各剩余周期对应的第一插补数据;
86.机器人在做运动或者停止运动等时,均是按照规划器规划的相应运动 规划完成的,本技术实施例中,机器人是按照第一运动规划进行运动,第 一运动规划中包括每个插补周期对应的插补数据,插补数据即每一个插补 周期内需要运动的长度总和。
87.每个插补周期,机器人都会读取一个插补数据(运动长度)来进行运 动。需要注意的是:运行指令运动时,机器人从运行状态机中读取第一插 补数据olddata。
88.示例性地,在控制机器人按照第一运动规划运动时,假设指令是让机 器人从a点运动到b点,首先在规划器中使用某种规划方法将ab段长度 切分成若干份长度,假设从a运行到b运行需要1000个插补周期,则分成 1000份长度,这1000份长度就是插补数据,是控制器从规划器得到的、机 器人在每一个插补周期内需要运动的长度总和。
89.在机器人运动过程中若接收到触发停止指令,由于接收到触发停止指 令时,机器人可能已经运动了若干个插补周期,所以,可以在规划器的运 动状态机中获取每个剩余周期对应的第一插补数据olddata,olddata的内 部包括:插补周期cycletime、已完成插补次数x、插补总次数y和插补位 移数组oldlength等,其中,插补位移数组oldlength的数组大小为y。
90.步骤s102,基于所述第一插补数据确定下一周期的第二插补数据;
91.在该步骤中,可以对第一插补数据进行加权处理,得到下一周期的第 二插补数据。
92.具体地,在获取到每个剩余周期对应的第一插补数据后,可以将获取 到的所有第一插补数据olddata拷贝至停止状态机,停止状态机通过高斯滤 波器,对第一插补数据olddata进行加权处理,可以理解为:
93.第二插补数据newdata=第一插补数据olddata*缓冲时间buffertime。 其中,缓冲时间buffertime即是加权处理的加权因子,如上述,机器人是 按插补周期进行运动的,若buffertime为1,意味着1个插补周期,若 buffertime小于1,则newdata小于olddata,即机器人在相同的时间内走 的距离更短,实现减速的效果。
94.示例性的,正常运行时,1个插补周期运行1个插补周期对应的位移; 而应用本发明进行停止运动时,1个插补周期只运行0.8个插补周期对应的 位移,其中的0.8个插补周期就是buffertime。
95.步骤s103,输出所述第二插补数据,以控制所述机器人在下一周期按 照所述第二插补数据运动,直至完成停止控制。
96.停止状态机输出第二插补数据,控制器在获取到第二插补数据后,将 第二插补数据发送至驱动模块,驱动模块驱动机器人按照第二插补数据运 动。也就是,机器人从停止状态机中读取第二插补数据newdata(此第二 插补数据是基于运行状态机拷贝的第一插补数据,进行二次规划后得到的 插补数据)。比如第二插补数据newdata中,插补周期是0.1秒,对应的插 补位移是0.1米,就是说机器人在这0.1秒钟内要运动0.1米。
97.在输出所述第二插补数据之后,所述方法还包括:
98.在所述第一插补数据中提取已完成插补次数及插补总次数,所述已完 成插补次数每经过一个周期自增一;若所述已完成插补次数大于或者等于 所述插补总次数,或者,所述缓冲时间为0,确定完成停止控制。
99.当已完成插补次数大于或者等于所述插补总次数时,表明插补完成, 当插补完成时,说明机器人运动到终点,自然也就按照原规划停止,速度 也为0。
100.当buffertime为0时,说明机器人1个插补周期只运行0个插补周期 对应的位移,0个插补周期对应的位移就是0,机器人每一个周期移动0米, 这样就完成停止运动,速度降为0了。
101.示例性的,(1)若插补次数x》=y,意味着插补完成。假设y=100, windows=15,在运行状态机中运行到x=90时,触发了停止命令。在停止 状态机接着从第90个点继续插补,继续插补10次之后,到达了终点,所 以机器人停止。这是第一种停止的情况,并没有完全运行完高斯滤波器就 停止了。
102.(2)buffertime=0。同样假设y=100,windows=15,在运行状态机中 运行到x=80时,触发了停止命令。继续插补15次之后,将 buffer[1]~buffer[15]中所有数都变成0了,此时buffertime=0,插补位移 newlength也变成0,也就是从这之后,机器人每一个插补周期运动0米。 这是第二种停止的情况,插补没完成,只是一直在原地踏步(保持静止状 态)。
[0103]
本技术实施例通过在第一运动规划中获取各剩余周期对应的第一插补 数据,并基于第一插补数据进行二次规划得到第二插补数据,进而基于第 二插补数据控制机器人在下一周期的运动,直至停止,实现无论机器人运 动过程中所依据的是何种运行速度规划,均可以完成停止控制,无需针对 不同的运行速度规划单独开发与之匹配的停止速度规划,提高开发效率。
[0104]
在本技术的又一实施例中,如图5所示,步骤s102基于所述第一插补 数据确定下一周期的第二插补数据,包括:
[0105]
步骤s201,根据所述第一插补数据确定高斯滤波器的窗值;
[0106]
在该步骤中,可以根据减速段的加速度最大值、减速段的加加速度及 运行最大速度确定所述第一运动规划对应的减速段时间,再根据所述减速 段时间确定所述高斯滤波器的窗值。
[0107]
具体地,高斯滤波器的窗值设置可以参考以下公式:
[0108]
[0109]
windows=round(tdec)
[0110]
其中,tdec为原规划减速段时间,dec为减速段的加速度最大值,jerk 为减速段的加加速度,即减速段的加速度的导数,vmax为运行最大速度, windows为高斯滤波器的窗值,round()函数是将tdec除以插补周期后 取整。其中,高斯滤波器窗值从数据结构的角度可以理解为是一个数组的 大小,从物理意义的角度可以理解为是停止所需要的时间。
[0111]
步骤s202,基于所述第一插补数据及所述高斯滤波器的窗值确定缓冲 数组;
[0112]
该步骤是对缓冲数组buffer进行初始化设置,具体地,可以按照所述 高斯滤波器的窗值确定缓冲数组的大小;在所述第一插补数据中提取插补 周期;基于所述缓冲数组的大小及所述插补周期生成缓冲数组。
[0113]
具体地,可以将缓冲数组buffer的大小设置为窗值windows;将缓冲 数组buffer中所有的值设置为插补周期cycletime;并初始化检索值index=0。
[0114]
高斯滤波器的原理可以简化理解为:假设窗值windows为100,插补 周期cycletime为1秒,则初始时,buffer数组的平均值是1秒。进入第1 次插补时,把第1个数从1秒变成0秒,再求平均值为0.99秒。第2次插 补时,把第2个数从1变成0,再求平均值为0.98秒...如此类推,第100次 插补时,buffer数组的平均值就是0。上述的“平均值”就是缓冲时间 buffertime,但这样滤波只能说是“均值”滤波器,因为它使用的是“平均 分布”。而高斯滤波器是使用“高斯正态分布”替换了“平均分布”,不是 求buffer数组的“平均值”,而是求它的“高斯值”并作为缓冲时间buffertime 输出。
[0115]
步骤s203,基于所述第一插补数据、所述高斯滤波器的窗值、所述缓 冲数组及高斯滤波器,对所述第一插补数据进行加权处理,得到第二插补 数据。
[0116]
本技术实施例中,需要对高斯滤波器进行参数设置,即:设置均值μ= 0;设置标准差σ=1,令已完成插补次数x=x+1,开始第x次插补,然后 执行高斯滤波器,高斯滤波器的输入参数包括:窗值windows;缓冲数组 buffer[1]~buffer[windows];高斯函数的参数μ、σ;索引值index。
[0117]
然后,获取缓冲数组对应的当前的索引值,所述索引值每经过一个周 期自增一;将所述缓冲数组中与所述当前的索引值对应的插补周期设置为0。 也即:令缓冲数组buffer中第index个数变为0,然后令index自增1,可 参考如下公式:
[0118]
buffer[index]=0
[0119]
index=index+1
[0120]
在该步骤中,可以在所述第一插补数据中提取插补位移数组;基于所 述第一插补数据确定下一周期的高斯概率和所述缓冲数组的数学期望;
[0121]
具体地,可以按照下式分别求出当前周期的高斯概率gsum和缓冲数组 buffer的数学期望sum:
[0122][0123][0124]
gsum为高斯概率,sum为缓冲数组的数学期望,这里可以简单理解成 为:gsum为总
个数,sum为总数,buffertime=总数/总个数,得到一个类 似平均值的数。其余参数对应的含义已补充,其中windows、μ、σ为设 置值,buffer[i]在积分中可以看成是一个关于i的函数,i只是一个算子。
[0125]
然后,基于所述高斯概率和所述数学期望确定缓冲时间;基于所述缓 冲时间及所述插补位移数组确定所述第二插补数据。
[0126]
具体地,可以利用高斯滤波器计算缓冲时间和新的插补位移(即第二 插补数据)newlength:
[0127][0128]
newlength[x]=oldlength[x]
×
buffertime
[0129]
缓冲时间buffertime初始值为cycletime,停止状态机每运行一个周期, buffertime都会减小,运行windows个周期后buffertime将减小为0。
[0130]
插补位移是表示距离的量,是机器人的移动距离。插补位移是通过规 划器得到的,规划器主要实现的是速度规划,比如,从a点走到b点要走 10米,以1米/秒的匀速完成这段位移,机器人的插补周期是0.1秒,需要 10秒,即100个插补周期。即把10米分成100份,每份0.1米,机器人每 个插补周期走0.1米。最终得到这100份0.1米的位移,就是规划器输出的 插补位移。
[0131]
在得到第二插补数据后,将第二插补数据newlength[x]数据上传至运 动驱动模块,驱动机器人进行相应长度的位移,完成第x次插补。
[0132]
示例性的,假设机器人一直是匀速运动的,每个插补周期的插补位移 都是0.1米,插补周期是0.1,总插补次数是5。则oldlength[1]~oldlength[5] 都是0.1,也就是机器人这5个插补周期的速度都是1m/s。若第一个周期是, 触发停止命令,使用本发明的方法对oldlength进行加权,得到newlength[1]~newlength[5]分别等于0.1、0.6、0.2、0、0,则对应的速度 分别是1m/s、0.6m/s、0.2m/s、0m/s、0m/s,从而实现了减速。
[0133]
一方面,由于本技术利用高斯滤波器对第一插补数据进行加权处理, 利用到了高斯滤波的特性,高斯滤波器应用到了高斯分布函数(正态分布 函数),使第二插补数据也具有高斯分布函数的特性,即连续且可导,曲线 柔和。加速度与力成正比例关系(根据牛顿第二定律f=ma),意味着机器 人停止时力的变化更柔和,从而减小抖动。由于现有技术中t型减速曲线 的加速度图像是阶跃的、不连续的,s型减速曲线的加速度图像是一个梯形, 连续但不可导的,所以本技术实施例的停止效果优于现有技术中的速度规 划方式。
[0134]
另一方面,在减速段时触发停止命令,假设此时原运动规划中减加速 度已经很大了,再有1秒钟速度就会降到0了。触发停止命令时候,重新 规划运动,虽然捷度会更大,但是减加速度又从0开始增加,就有可能会 花2秒才能把速度降到0。时间变长,就意味着运动距离变长,所以是有可 能会超过目标点。
[0135]
而使用高斯滤波减速,并非重新规划运动,对原规划的输出进行二次 规划。举个例子,假设插补周期是1秒,原规划减速段每个周期输出的位 移是:1、0.8、0.6、0.4、0.2、0,共运行了3的距离,而高斯停止规划对 其输出进行二次规划,则二次规划后的位移是:0.8、0.64、0.48、0.32、0.16、 0(此处简单的对原规划输出乘以0.8,而本发明是乘以高斯函数的倍率), 只运行了2.4的距离。这个倍率不会大于1,所以在减速段时,机器人的运 动距离只
会比原规划要小,故肯定不会超过目标点。这也是高斯滤波的特 性之一,解决了减速段超过目标点的问题。
[0136]
同时,将高斯滤波的窗值(窗值可以看作是减速的时间)设置为原规 划减速段的时间,保证了非减速段触发停止命令时,高斯滤波的停止减速 时间不大于原规划的减速时间,从而严格保证了机器人停止运动不会超过 目标点。
[0137]
为了便于理解,如图6所示,本技术还提供一种实际应用中的实施例, 如下:
[0138]
step1:用户触发停止命令,机器人控制器从运行状态切换至停止状态, 并从运行状态机获取当前所有的插补数据olddata。
[0139]
step2:将获取到的插补数据olddata全部拷贝至停止状态机,olddata 的内部包括:
[0140]
(1)插补周期cycletime;
[0141]
(2)已完成插补次数x;
[0142]
(3)插补总次数y;
[0143]
(4)插补位移数组oldlength,数组大小为y;
[0144]
step3:高斯滤波器的窗值设置:
[0145][0146]
windows=round(tdec)
[0147]
tdec为原规划减速段时间,dec为减速段的加速度最大值,jerk为减 速段的加加速度,vmax为运行最大速度,windows为高斯滤波窗值,round ()函数是将tdec除以插补周期后取整。其中,高斯滤波器窗值从数据结 构的角度可以理解为是一个数组的大小,从物理意义的角度可以理解为是 停止所需要的时间。
[0148]
step4:初始化缓冲数组buffer:
[0149]
(1)设置数组buffer的大小为windows;
[0150]
(2)将buffer数组中所有的值设置为cycletime;
[0151]
(3)初始化检索值index=0;
[0152]
step5:标准型高斯函数的参数设置:
[0153]
(1)均值μ=0;
[0154]
(2)标准差σ=1。
[0155]
step6:令插补次数x=x+1,开始第x次插补。
[0156]
step7:执行高斯滤波器,高斯滤波器的输入参数:
[0157]
(1)窗值windows;
[0158]
(2)缓冲数组buffer[1]~buffer[windows];
[0159]
(3)高斯函数的参数μ、σ;
[0160]
(4)索引值index。
[0161]
step8:令缓冲数组buffer中第index个数变为0,然后令index自增1:
[0162]
buffer[index]=0
[0163]
index=index+1
[0164]
step9:此步骤中的循环体为积分器,分别求出当前周期的高斯概率 gsum和缓冲
数组buffer的数学期望sum:
[0165][0166][0167]
step10:高斯滤波器输出缓冲时间和新的插补位移:
[0168][0169]
newlength[x]=oldlength[x]
×
buffertime
[0170]
缓冲时间buffertime初始值为cycletime,停止状态机每运行一个周期, buffertime都会减小,运行windows个周期后buffertime将减小为0。
[0171]
step11:将newlength[x]数据上传至运动驱动模块,驱动机器人进行 相应长度的位移,完成第x次插补。
[0172]
step12:判断buffertime是否为0或者插补是否完成,若否,跳转至 step5,进行下一周期的插补;若是,完成停止运动。
[0173]
本技术还进行了对比实验,对照组-传统s型速度规划曲线的停止控制 方法,以s型速度规划为例,其停止的速度规划曲线也为s型速度规划, 其停止速度曲线如图7所示,虽然s型停止曲线很好的符合s型速度曲线, 但它仅可用于s型速度曲线。若用于其他速度曲线,由于速度特性差异, 可能出现较大的冲击(尤其在加速段)。
[0174]
一般来说,运行速度规划的初速度、初加速度为0,但停止速度规划的 初速度、初加速度往往都不为0,而且该初速度、初加速度的准确获取也是 一个难点。所以,停止速度规划的开发难度是较大的。
[0175]
实验组-本发明提出的兼容三种不同速度曲线的停止控制方法,使用本 发明停止控制方法,分别在三种不同速度曲线的匀速段、加速段、减速段 触发停止命令,如附图8、图9、图10所示,并可得到以下结论:
[0176]
(1)本发明的通用性。本发明停止控制方法可适用于不同的速度曲线, 且在各个阶段触发停止命令,速度都能平滑下降。
[0177]
(2)本发明可避免停止运动超出目标点。对停止命令触发后的速度曲 线求积分不大于对原规划曲线求积分,即停止命令触发后的位移不大于原 规划的剩余位移。
[0178]
(3)本发明可快速、平稳地停止。在加速段、匀速段、减速段中,速 度变化曲线平滑,且停止的减速时间短,能较快地将速度降至0。
[0179]
在本技术的又一实施例中,如图11所示,还提供一种数据处理装置, 包括:
[0180]
获取模块11,用于若在机器人按照第一运动规划运动过程中接收到触 发停止指令,获取所述第一运动规划中各剩余周期对应的第一插补数据;
[0181]
第一确定模块12,用于基于所述第一插补数据确定下一周期的第二插 补数据;
[0182]
输出模块13,用于输出所述第二插补数据,以控制所述机器人在下一 周期按照所述第二插补数据运动,直至完成停止控制。
[0183]
可选地,所述第一确定模块包括:
[0184]
第一确定单元,用于根据所述第一插补数据确定高斯滤波器的窗值;
[0185]
第二确定单元,用于基于所述第一插补数据及所述高斯滤波器的窗值 确定缓冲数组;
[0186]
加权处理单元,用于基于所述第一插补数据、所述高斯滤波器的窗值、 所述缓冲数组及高斯滤波器,对所述第一插补数据进行加权处理,得到第 二插补数据。
[0187]
可选地,所述第一确定单元包括:
[0188]
第一确定子单元,用于根据减速段的加速度最大值、减速段的加加速 度及运行最大速度确定所述第一运动规划对应的减速段时间;
[0189]
第二确定子单元,用于根据所述减速段时间确定所述高斯滤波器的窗 值。
[0190]
可选地,所述第二确定单元包括:
[0191]
第三确定子单元,用于按照所述高斯滤波器的窗值确定缓冲数组的大 小;
[0192]
第一提取子单元,用于在所述第一插补数据中提取插补周期;
[0193]
生成子单元,用于基于所述缓冲数组的大小及所述插补周期生成缓冲 数组。
[0194]
可选地,所述加权处理单元包括:
[0195]
第二提取子单元,用于在所述第一插补数据中提取插补位移数组;
[0196]
第四确定子单元,用于基于所述第一插补数据确定下一周期的高斯概 率和所述缓冲数组的数学期望;
[0197]
第五确定子单元,用于基于所述高斯概率和所述数学期望确定缓冲时 间;
[0198]
第六确定子单元,用于基于所述缓冲时间及所述插补位移数组确定所 述第二插补数据。
[0199]
可选地,所述加权处理单元还包括:
[0200]
获取子单元,用于获取缓冲数组对应的当前的索引值,所述索引值每 经过一个周期自增一;
[0201]
设置子单元,用于将所述缓冲数组中与所述当前的索引值对应的插补 周期设置为0。
[0202]
可选地,所述方法还包括:
[0203]
提取模块,用于在所述第一插补数据中提取已完成插补次数及插补总 次数,所述已完成插补次数每经过一个周期自增一;
[0204]
第二确定模块,用于若所述已完成插补次数大于或者等于所述插补总 次数,或者,所述缓冲时间为0,确定完成停止控制。
[0205]
在本技术的又一实施例中,还提供一种电子设备,包括处理器、通信 接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总 线完成相互间的通信;
[0206]
存储器,用于存放计算机程序;
[0207]
处理器,用于执行存储器上所存放的程序时,实现权利要求前述任一 方法实施例所述的数据处理方法。
[0208]
本发明实施例提供的电子设备,处理器通过执行存储器上所存放的程 序通过在第一运动规划中获取各剩余周期对应的第一插补数据,并基于第 一插补数据进行二次规划得到第二插补数据,进而基于第二插补数据控制 机器人在下一周期的运动,直至停止,实现无论机器人运动过程中所依据 的是何种运行速度规划,均可以完成停止控制,无需针
对不同的运行速度 规划单独开发与之匹配的停止速度规划,提高开发效率。
[0209]
上述电子设备提到的通信总线1140可以是外设部件互连标准 (peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构 (extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线1140 可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一 条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0210]
通信接口1120用于上述电子设备与其他设备之间的通信。
[0211]
存储器1130可以包括随机存取存储器(randomaccessmemory,简称 ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁 盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储 装置。
[0212]
上述的处理器1110可以是通用处理器,包括中央处理器 (centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称 np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专 用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程 门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器 件、分立门或者晶体管逻辑器件、分立硬件组件。
[0213]
在本技术的又一实施例中,还提供一种计算机可读存储介质,所述计 算机可读存储介质上存储有数据处理方法的程序,所述数据处理方法的程 序被处理器执行时实现前述任一方法实施例所述的数据处理方法的步骤。
[0214]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅 用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或 者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术 语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得 包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还 包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或 者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”ꢀ
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还 存在另外的相同要素。
[0215]
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或 实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而 易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情 况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这 些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范 围。
技术特征:1.一种数据处理方法,其特征在于,包括:若在机器人按照第一运动规划运动过程中接收到触发停止指令,获取所述第一运动规划中各剩余周期对应的第一插补数据;基于所述第一插补数据确定下一周期的第二插补数据;输出所述第二插补数据,以控制所述机器人在下一周期按照所述第二插补数据运动,直至完成停止控制。2.根据权利要求1所述的数据处理方法,其特征在于,基于所述第一插补数据确定下一周期的第二插补数据,包括:根据所述第一插补数据确定高斯滤波器的窗值;基于所述第一插补数据及所述高斯滤波器的窗值确定缓冲数组;基于所述第一插补数据、所述高斯滤波器的窗值、所述缓冲数组及高斯滤波器,对所述第一插补数据进行加权处理,得到第二插补数据。3.根据权利要求2所述的数据处理方法,其特征在于,根据所述第一插补数据确定高斯滤波器的窗值,包括:根据减速段的加速度最大值、减速段的加加速度及运行最大速度确定所述第一运动规划对应的减速段时间;根据所述减速段时间确定所述高斯滤波器的窗值。4.根据权利要求2所述的数据处理方法,其特征在于,基于所述第一插补数据及所述高斯滤波器的窗值确定缓冲数组,包括:按照所述高斯滤波器的窗值确定缓冲数组的大小;在所述第一插补数据中提取插补周期;基于所述缓冲数组的大小及所述插补周期生成缓冲数组。5.根据权利要求2所述的数据处理方法,其特征在于,基于所述第一插补数据、所述缓冲数组、所述窗值及高斯滤波器,对所述第一插补数据进行加权处理,得到第二插补数据,包括:在所述第一插补数据中提取插补位移数组;基于所述第一插补数据确定下一周期的高斯概率和所述缓冲数组的数学期望;基于所述高斯概率和所述数学期望确定缓冲时间;基于所述缓冲时间及所述插补位移数组确定所述第二插补数据。6.根据权利要求2所述的数据处理方法,其特征在于,基于所述第一插补数据、所述缓冲数组、所述窗值及高斯滤波器,对所述第一插补数据进行加权处理,得到第二插补数据,还包括:获取缓冲数组对应的当前的索引值,所述索引值每经过一个周期自增一;将所述缓冲数组中与所述当前的索引值对应的插补周期设置为0。7.根据权利要求5所述的数据处理方法,其特征在于,所述方法还包括:在所述第一插补数据中提取已完成插补次数及插补总次数,所述已完成插补次数每经过一个周期自增一;若所述已完成插补次数大于或者等于所述插补总次数,或者,所述缓冲时间为0,确定完成停止控制。
8.一种数据处理装置,其特征在于,包括:获取模块,用于若在机器人按照第一运动规划运动过程中接收到触发停止指令,获取所述第一运动规划中各剩余周期对应的第一插补数据;第一确定模块,用于基于所述第一插补数据确定下一周期的第二插补数据;输出模块,用于输出所述第二插补数据,以控制所述机器人在下一周期按照所述第二插补数据运动,直至完成停止控制。9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1~7任一所述的数据处理方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据处理方法的程序,所述数据处理方法的程序被处理器执行时实现权利要求1-7任一所述的数据处理方法的步骤。
技术总结本发明涉及一种数据处理方法、装置、电子设备及存储介质,该数据处理方法,包括:若在机器人按照第一运动规划运动过程中接收到触发停止指令,获取所述第一运动规划中各剩余周期对应的第一插补数据;基于所述第一插补数据确定下一周期的第二插补数据;输出所述第二插补数据,以控制所述机器人在下一周期按照所述第二插补数据运动,直至完成停止控制。本申请实施例能够实现无论机器人运动过程中所依据的是何种运行速度规划,均可以完成停止控制,无需针对不同的运行速度规划单独开发与之匹配的停止速度规划,提高开发效率。提高开发效率。提高开发效率。
技术研发人员:胡飞鹏 罗兆江 雷俊松 刘旭 赵航 李晓源
受保护的技术使用者:珠海格力电器股份有限公司
技术研发日:2022.07.15
技术公布日:2022/11/1