机器人控制方法、装置、电子设备及可读存储介质
技术领域
本申请涉及机器控制领域,具体而言,涉及一种机器人控制方法、装置、电子设备及可读存储介质。
背景技术
现有技术中,对通过关节驱动的机器人进行控制时,往往采用位置环、速度环、电流环三环比例积分微分控制(Proportional Integral Derivative control,简称PID控制),即微处理器发出的对机器人的位置指令与机器人的位置反馈量组合后,经比例调节获得速度指令;该速度指令与速度前馈指令以及速度反馈量组合后,经PID调节获得电流指令;该电流指令与电流反馈量组合后,经PID调节获得控制机器人的电机的控制量。
然而,关节驱动的机器人通常包括电机、减速器、伺服驱动器等一整套机电系统,其中存在着大量不利于准确实现位置控制的因素,例如摩擦非线性、间隙非线性,尤其是在高精度位置跟随控制中,上述因素的存在使得位置跟随控制的效果变差。
发明内容
本申请实施例的目的在于提供一种机器人控制方法、装置、电子设备及可读存储介质,用以改善现有技术不利于准确实现位置控制、使位置跟随控制的效果较差的问题。
第一方面,本申请实施例提供了一种机器人控制方法,用于对机器人的运动进行控制,所述机器人的控制方式包括位置环、速度环以及电流环三环比例积分微分PID控制,所述方法包括:将速度前馈指令输入给参数确定的摩擦力模型;获得所述摩擦力模型输出的电流值,所述电流值与所述速度前馈指令表征的速度值相对应,所述电流值为控制补偿量;将包括有所述电流值的电流前馈指令输入给电流环控制器,以使所述电流环控制器将所述电流前馈指令与电流指令以及电流反馈量组合成电流组合量,并对所述电流组合量进行PID调节得到电机的控制量,其中,所述电机用于驱动所述机器人的关节。
在上述的实施方式中,微处理器可以把速度前馈指令输入给参数确定的摩擦力模型,由摩擦力模型输出对应的电流值;然后微处理器可以把包括电流值的电流前馈指令输入到PID控制的电流环控制器,使得电流环控制器生成的电流组合量中包括有上述的电流前馈指令,从而可以对最终获得的电机控制量产生影响,从而改善现有技术不利于准确实现位置控制、使位置跟随控制的效果较差的问题。
在一个可能的设计中,所述摩擦力模型是自变量为速度值、因变量为电流值的多项式拟合函数,在所述将速度前馈指令输入给参数确定的摩擦力模型之前,所述方法还包括:获取机器人实际运动的多个实际速度值;获取所述多个实际速度值中的每个实际速度值对应的实际电流值;将所述多个实际速度值以及每个实际速度值对应的实际电流值代入参数未确定的多项式拟合函数中,计算所述多项式拟合函数的未确定的参数,从而获得参数确定的摩擦力模型。
在上述的实施方式中,微处理器可以先获得机器人运动的多个实际速度值,以及多个实际速度值中每个实际速度值对应的实际电流值,将实际速度值以及对应的实际电流值代入多项式拟合函数中,从而确定多项式拟合函数的未确定的参数,获得明确的摩擦力模型。基于多个实际速度值和各自对应的实际电流值来确定摩擦力模型,使得摩擦力模型的确定更准确。
在一个可能的设计中,所述获取机器人实际运动的多个实际速度值,包括:获取所述机器人的多个速度反馈值,其中,所述速度反馈值为所述实际速度值;或获取多个速度前馈指令,其中,所述速度前馈指令表征的速度值作为所述实际速度值。
在上述的实施方式中,可以直接获取机器人的速度反馈值,并且把速度反馈至作为实际速度值,也可以获取速度前馈指令,并把速度前馈指令中的速度值作为实际速度值,获取实际速度值的方式不应该理解为是对本申请的限制。
在一个可能的设计中,所述获取机器人实际运动的多个实际速度值,包括:获取机器人朝向目标方向实际运动的多个实际速度值。
在上述的实施方式中,由于机器人可以通过机械关节来运动,因此,可以将朝向同一机械关节方向的实际速度值以及对应的实际电流值作为一组样本,即把朝向第一方向的实际速度值以及朝向第一方向的实际电流值作为样本来确定朝向第一方向的摩擦力模型;把朝向第二方向的实际速度值以及朝向第二方向的实际电流值作为样本来确定朝向第二方向的摩擦力模型,第一方向与第二方向是不同的方向,从而进一步增加摩擦力模型的准确性。
在一个可能的设计中,所述将所述多个实际速度值以及每个实际速度值对应的实际电流值代入参数未确定的多项式拟合函数中,包括:将所述多个实际速度值以及每个实际速度值对应的实际电流值代入if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中,其中,n>1且为正整数,vff为实际速度值,if为vff对应的实际电流值,km(m=1,2,3…n)为参数;所述计算所述多项式拟合函数的未确定的参数,包括:通过最小二乘法计算if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中的km(m=1,2,3…n)。
在一个可能的设计中,所述方法还包括:获取PID控制值反馈量,并根据所述PID控制值反馈量以及PID控制值指令计算第一PID控制值误差;确定所述第一PID控制值误差大于PID控制值设定修正阈值;对所述摩擦力模型的全部参数进行扰动训练;对于进行过所述扰动训练的摩擦力模型,计算第二PID控制值误差;判断所述第二PID控制值误差是否小于PID控制值修正收敛阈值;若是,结束所述扰动训练,将扰动训练获得的摩擦力模型作为新的摩擦力模型;若否,执行步骤:对所述摩擦力模型的全部参数进行扰动训练。
在上述的实施方式中,随着机器人使用时间的推移,部件老化等影响,有可能使得PID控制量的误差逐渐变大,因此,当PID控制量的误差超过设定修正阈值时,可以利用扰动训练的方式来调整PID控制量的误差,从而在机器人使用的全寿命过程中,依然能维持机器人控制的准确性在较高的水平。
在一个可能的设计中,所述PID控制值包括速度值和位置值。
第二方面,本申请实施例提供了一种机器人控制装置,用于对机器人的运动进行控制,所述机器人的控制方式包括位置环、速度环以及电流环三环比例积分微分PID控制,所述装置包括:速度指令输入模块,用于将速度前馈指令输入给参数确定的摩擦力模型;电流值获取模块,用于获得所述摩擦力模型输出的电流值,所述电流值与所述速度前馈指令表征的速度值相对应,所述电流值为控制补偿量;电流指令输入模块,用于将包括有所述电流值的电流前馈指令输入给电流环控制器,以使所述电流环控制器将所述电流前馈指令与电流指令以及电流反馈量组合成电流组合量,并对所述电流组合量进行PID调节得到电机的控制量,其中,所述电机用于驱动所述机器人的关节。
在一个可能的设计中,所述装置还包括:实际速度获取模块,用于获取机器人实际运动的多个实际速度值;实际电流获取模块,用于获取所述多个实际速度值中的每个实际速度值对应的实际电流值;模型确定模块,用于将所述多个实际速度值以及每个实际速度值对应的实际电流值代入参数未确定的多项式拟合函数中,计算所述多项式拟合函数的未确定的参数,从而获得参数确定的摩擦力模型。
在一个可能的设计中,实际速度获取模块,还用于获取所述机器人的多个速度反馈值,其中,所述速度反馈值为所述实际速度值;或获取多个速度前馈指令,其中,所述速度前馈指令表征的速度值作为所述实际速度值。
在一个可能的设计中,实际速度获取模块,还用于获取机器人朝向目标方向实际运动的多个实际速度值。
在一个可能的设计中,模型确定模块,还用于将所述多个实际速度值以及每个实际速度值对应的实际电流值代入if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中,其中,n>1且为正整数,vff为实际速度值,if为vff对应的实际电流值,km(m=1,2,3…n)为参数;通过最小二乘法计算if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中的km(m=1,2,3…n)。
在一个可能的设计中,所述装置还包括:控制值误差计算模块,用于获取PID控制值反馈量,并根据所述PID控制值反馈量以及PID控制值指令计算第一PID控制值误差;误差确定模块,用于确定所述第一PID控制值误差大于PID控制值设定修正阈值;扰动训练模块,用于对所述摩擦力模型的全部参数进行扰动训练;误差计算模块,用于对于进行过所述扰动训练的摩擦力模型,计算第二PID控制值误差;误差判断模块,用于判断所述第二PID控制值误差是否小于PID控制值修正收敛阈值;扰动结束模块,用于在所述第二PID控制值误差小于PID控制值修正收敛阈值时,结束所述扰动训练,将扰动训练获得的摩擦力模型作为新的摩擦力模型;循环执行模块,用于在所述第二PID控制值误差不小于PID控制值修正收敛阈值时,执行步骤:对所述摩擦力模型的全部参数进行扰动训练。
第三方面,本申请提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行第一方面或第一方面的任一可选的实现方式所述的方法。
第四方面,本申请提供一种可读存储介质,该可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第一方面或第一方面的任一可选的实现方式所述的方法。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现方式中的方法。
为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术中进行机器人控制的PID控制方式的流程示意图;
图2为本申请实施例提供的机器人控制方法的流程示意图;
图3为本申请实施例提供的机器人控制方法的流程示意图;
图4为本申请实施例提供的机器人控制方法的部分步骤的流程示意图;
图5为本申请实施例提供的机器人控制方法的部分步骤的流程示意图;
图6为本申请实施例提供的机器人控制装置的示意性结构框图;
图7示出了现有技术与本申请进行机器人控制的效果示意图。
具体实施方式
在描述本申请实施例前,先对现有技术进行简要说明如下:
请参见图1,图1示出了现有技术对机器人控制的PID控制方法,现有技术中通常采用采用位置环、速度环、电流环三环PID控制。微处理器可以同时发出位置指令和速度前馈指令,其中,位置指令用于控制机器人的运动位置,机器人在接受位置指令进行活动时,又及时受到速度前馈指令的调控。详情参见图1,位置指令与机器人反馈回来的位置反馈量组合后,经比例调节Kp并与速度前馈指令组合获得速度指令;速度指令与机器人反馈回来的速度反馈量组合后,经PID调节获得电流指令;该电流指令与机器人反馈回来的电流反馈量组合后,经PID调节获得控制机器人的电机的控制量。
然而,上述的控制方式中存在着大量不利于准确实现位置控制的因素,例如摩擦非线性、间隙非线性,尤其是在高精度位置跟随控制中,上述因素的存在使得位置跟随控制的效果变差。
现有技术中存在的上述缺陷,均是申请人在经过实践并仔细研究后得出的结构,因此,上述问题的发现过程以及下文中本申请实施例针对上述问题所提出的解决方案,都应该是申请人在本申请过程中对本申请做出的贡献。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
图3为本申请实施例提供的一种机器人控制方法,该方法可以由电子设备执行,该电子设备可以是微处理器,也可以是计算机,电子设备的具体类型不应该理解为是对本申请的限制。图3示出的机器人控制方法具体包括如下步骤:
步骤S110,将速度前馈指令输入给参数确定的摩擦力模型。
速度前馈指令为电子设备发送的对位置指令进行调控的前馈指令,摩擦力模型为一个多项式拟合函数if=F(vff),该多项式拟合函数的自变量为速度值vff,因变量为电流值if。
步骤S120,获得所述摩擦力模型输出的电流值,所述电流值与所述速度前馈指令表征的速度值相对应,所述电流值为控制补偿量。
请参见图2,由于该摩擦力模型的参数是确定的,因此,将一个速度值输入该摩擦力模型,该摩擦力模型便会输出一个相应的电流值。
步骤S130,将包括有所述电流值的电流前馈指令输入给电流环控制器,以使所述电流环控制器将所述电流前馈指令与电流指令以及电流反馈量组合成电流组合量,并对所述电流组合量进行PID调节得到电机的控制量。
其中,所述电机用于驱动所述机器人的关节。
电流前馈指令为包括有摩擦力模型输出的电流值的可对机器人的运动起调控作用的前馈指令,该电流前馈指令可以与电流指令以及电流反馈量组合起来,形成电流组合量,对该电流组合量进行PID调节,便可以获得电机的控制量。
电子设备可以把速度前馈指令输入给参数确定的摩擦力模型,由摩擦力模型输出对应的电流值;然后微处理器可以把包括电流值的电流前馈指令输入到PID控制的电流环控制器,使得电流环控制器生成的电流组合量中包括有上述的电流前馈指令,从而可以对最终获得的电机控制量产生影响,从而改善现有技术不利于准确实现位置控制、使位置跟随控制的效果较差的问题。
请参见图4,在步骤S110之前,该方法还可以包括如下步骤S101至步骤S103:
步骤S101,获取机器人实际运动的多个实际速度值。
实际速度值为机器人或机器人的部分结构实际运动时的速度值。
步骤S101具体包括:获取机器人朝向目标方向实际运动的多个实际速度值。
在一种具体实施方式中,机器人能够以电机作为关节支点,进行关节活动,对于关节活动,机器人可以沿第一方向转动,转动范围为0°至180°;机器人也可以沿第二方向转动,转动范围也为0°至180°,第一方向与第二方向相反。为了便于描述,不妨设第一方向为正向,第二方向为反向。可以将朝向同一机械关节方向的实际速度值以及对应的实际电流值作为一组样本,即把朝向正向的实际速度值以及朝向正向的实际电流值作为样本来确定朝向正向的摩擦力模型;把朝向反向的实际速度值以及朝向反向的实际电流值作为样本来确定朝向反向的摩擦力模型,正向与反向是不同的方向,对不同方向分别建立各自的摩擦力模型,进一步增加摩擦力模型的准确性。
可选地,可以获取所述机器人的多个速度反馈值,所述速度反馈值为所述实际速度值;或者获取多个速度前馈指令,所述速度前馈指令表征的速度值作为所述实际速度值。
在一种具体实施方式中,实际速度值的获取方式不是固定的,可以直接获取机器人的速度反馈值,并且把速度反馈至作为实际速度值;也可以获取速度前馈指令,并把速度前馈指令中的速度值作为实际速度值,获取实际速度值的方式不应该理解为是对本申请的限制。
步骤S102,获取所述多个实际速度值中的每个实际速度值对应的实际电流值。
实际电流值为机器人在接收到控制指令并按照某一实际速度值运动时,维持该机器人运动的电流值。
可选地,实际速度值以及实际电流值可以由电子设备运行关节自标定程序获得。
步骤S103,将所述多个实际速度值以及每个实际速度值对应的实际电流值代入参数未确定的多项式拟合函数中,计算所述多项式拟合函数的未确定的参数,从而获得参数确定的摩擦力模型。
可选地,步骤S103具体包括:将所述多个实际速度值以及每个实际速度值对应的实际电流值代入if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中,其中,n>1且为正整数,vff为实际速度值,if为vff对应的实际电流值,km(m=1,2,3…n)为未确定的参数。通过最小二乘法计算if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中的km(m=1,2,3…n)。在计算出km(m=1,2,3…n)后,便得到了参数确定的摩擦力模型。在计算出参数km(m=1,2,3…n)后,电子设备可以通过上位机软件把确定出的参数存储在该电子设备的存储器中。
电子设备可以先获得机器人运动的多个实际速度值,以及多个实际速度值中每个实际速度值对应的实际电流值,将实际速度值以及对应的实际电流值代入多项式拟合函数中,从而确定多项式拟合函数的未确定的参数,获得明确的摩擦力模型。基于多个实际速度值和各自对应的实际电流值来确定摩擦力模型,使得摩擦力模型的确定更准确。
请参见图5,在一种具体实施方式中,本申请实施例提供的机器人控制方法还可以包括如下步骤S210至步骤S260:
步骤S210,获取PID控制值反馈量,并根据所述PID控制值反馈量以及PID控制值指令计算第一PID控制值误差。
PID控制值为进行PID控制的部分参量,PID控制值可以包括速度值和位置值。为了便于描述,接下来不妨以位置值为例继续进行说明。
电子设备可以接收机器人反馈回来的位置反馈量,并将用户输入的位置指令与位置反馈量相减,获得位置误差。
步骤S220,确定所述第一PID控制值误差大于PID控制值设定修正阈值。
PID控制值设定修正阈值为一个表征对应的摩擦力模型是否需要修正的临界点,超过该设定修正阈值,表示对应的摩擦力模型需要修正;未超过该设定修正阈值,表示对应的摩擦力模型不需要修正。
在上文的举例继续进行说明:
将位置误差与位置设定修正阈值进行比较,若位置误差大于位置设定修正阈值,则表示需要对该位置进行修正,执行步骤S230。
步骤S230,对所述摩擦力模型的全部参数进行扰动训练。
步骤S240,对于进行过所述扰动训练的摩擦力模型,计算第二PID控制值误差。
第二PID控制值误差为进行过扰动训练的摩擦力模型计算得到的误差。
步骤S250,判断所述第二PID控制值误差是否小于PID控制值修正收敛阈值,若是,执行步骤S260;若否,执行步骤S230。
PID控制值修正收敛阈值是表征摩擦力模型是否足够收敛的临界点,若第二PID控制值误差小于PID控制值修正收敛阈值,则表示对应的摩擦力模型足够收敛,不需要再进行参数调整;若第二PID控制值误差不小于PID控制值修正收敛阈值,则表示对应的摩擦力模型不足够收敛,还需要再进行参数调整。
步骤S260,结束所述扰动训练,将扰动训练获得的摩擦力模型作为新的摩擦力模型。
扰动训练的具体过程可以为:对确定的参数km(m=1,2,3…n)分别依次增加扰动量Δkm(m=1,2,3…n),Δkm可以为正,也可以为负。然后,利用增加过扰动量的参数组成新的摩擦力模型(即多项式拟合函数),利用新的摩擦力模型计算新的控制值误差,并将新的控制值误差与PID控制值修正收敛阈值比较,从而确定摩擦力模型是否已经足够收敛,并形成新的摩擦力模型。
随着机器人使用时间的推移,部件老化等影响,有可能使得PID控制量的误差逐渐变大,因此,当PID控制量的误差超过设定修正阈值时,可以利用扰动训练的方式来调整摩擦力模型,进而调整PID控制量的误差,从而在机器人使用的全寿命过程中,依然能维持机器人控制的准确性在较高的水平。
请参见图6,图6示出了本申请实施例提供的机器人控制装置,所述装置300包括:
速度指令输入模块310,用于将速度前馈指令输入给参数确定的摩擦力模型。
电流值获取模块320,用于获得所述摩擦力模型输出的电流值,所述电流值与所述速度前馈指令表征的速度值相对应,所述电流值为控制补偿量。
电流指令输入模块330,用于将包括有所述电流值的电流前馈指令输入给电流环控制器,以使所述电流环控制器将所述电流前馈指令与电流指令以及电流反馈量组合成电流组合量,并对所述电流组合量进行PID调节得到电机的控制量,其中,所述电机用于驱动所述机器人的关节。
所述装置还包括:实际速度获取模块,用于获取机器人实际运动的多个实际速度值。
实际电流获取模块,用于获取所述多个实际速度值中的每个实际速度值对应的实际电流值。
模型确定模块,用于将所述多个实际速度值以及每个实际速度值对应的实际电流值代入参数未确定的多项式拟合函数中,计算所述多项式拟合函数的未确定的参数,从而获得参数确定的摩擦力模型。
实际速度获取模块,还用于获取所述机器人的多个速度反馈值,其中,所述速度反馈值为所述实际速度值;或获取多个速度前馈指令,其中,所述速度前馈指令表征的速度值作为所述实际速度值。
实际速度获取模块,还用于获取机器人朝向目标方向实际运动的多个实际速度值。
模型确定模块,还用于将所述多个实际速度值以及每个实际速度值对应的实际电流值代入if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中,其中,n>1且为正整数,vff为实际速度值,if为vff对应的实际电流值,km(m=1,2,3…n)为参数;通过最小二乘法计算if=k0+k1×(vff)+k2×(vff)2+...+kn×(vff)n中的km(m=1,2,3…n)。
所述装置还包括:
控制值误差计算模块,用于获取PID控制值反馈量,并根据所述PID控制值反馈量以及PID控制值指令计算第一PID控制值误差。
误差确定模块,用于确定所述第一PID控制值误差大于PID控制值设定修正阈值。
扰动训练模块,用于对所述摩擦力模型的全部参数进行扰动训练。
误差计算模块,用于对于进行过所述扰动训练的摩擦力模型,计算第二PID控制值误差。
误差判断模块,用于判断所述第二PID控制值误差是否小于PID控制值修正收敛阈值。
扰动结束模块,用于在所述第二PID控制值误差小于PID控制值修正收敛阈值时,结束所述扰动训练,将扰动训练获得的摩擦力模型作为新的摩擦力模型。
循环执行模块,用于在所述第二PID控制值误差不小于PID控制值修正收敛阈值时,执行步骤:对所述摩擦力模型的全部参数进行扰动训练。
是否增加速度前馈指令的位置误差曲线如图7所示,未增加速度前馈指令时,位置误差较大且随速度波动;增加速度前馈指令时,位置误差较小且平缓。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。