本发明涉及舵机领域,特别涉及舵机控制。
背景技术:
现有的舵机一般不能实现360度全位置锁位,这就意味着舵机上存在着较大的锁位死区,特别是在位置传感器的角度临界区域,舵机可能不能正常锁位。如果目标位置正好在锁位死区范围内,则舵机就可能不会在正转/反转一个任意角度后锁位于目标位置,从而导致舵机的应用受到一定的限制。
图1所示为一个12位数字式磁编码器坐标图,图中直线处为磁编码器角度跳变点,直线左边临近位置值为4095,直线位置值为0,当舵机要锁位在直线附近位置区域的某一角度时传统的控制方式可能会使舵机的运动方向出错或舵机直接失控制。比如想让舵机锁位在位置0处,假设起始时舵机已很好的停在了位置0处,当舵机受到一个外界的力使得舵机的实际角度位置由起始的0变为4090时,传统的偏差计算方式计算出来偏差(-4090)=目标值(0)–当前实际值(4090),在PID控制方法下将会产生一个很激进的响应,同时舵机的运转方向也可能是错的,即舵机转动一整圈才能回到原来的目标位置。
技术实现要素:
为了克服现有技术的不足,本发明的目的在于提供舵机临界点锁位方法和装置,其能解决现有的舵机上存在着较大的锁位死区,如果目标位置正好在锁位死区范围内,则舵机就可能不会在正转/反转一个任意角度后锁位于目标位置,从而导致舵机的整体应用受到一定的限制的问题。
本发明的目的采用以下技术方案实现:
舵机临界点锁位方法,包括以下步骤:
根据目标位置值和实际位置值计算当前目标偏差;
根据所述当前目标偏差与上次目标偏差计算偏差变化值;
判断所述偏差变化值与约束值的关系是否满足预设条件;
若满足所述预设条件,则根据当前目标偏差和预设值的大小关系修正所述当前目标偏差,将修正后的当前目标偏差作为当前控制偏差;
根据所述当前控制偏差控制舵机向所述目标位置运行。
优选的,所述根据目标位置值和实际位置值计算当前目标偏差,具体为,所述当前目标偏差等于所述目标位置值减去所述实际位置值;
所述根据当前目标偏差和预设值的大小关系将所述当前目标偏差修正当前目标偏差,将修正后的当前目标偏差作为当前控制偏差,具体为:
若所述当前目标偏差小于所述预设值,则所述当前控制偏差等于所述当前目标偏差加上所述最大位置编码值;
若所述当前目标偏差大于所述预设值,则所述当前控制偏差等于所述当前目标偏差减去所述最大位置编码值;
若所述当前目标偏差等于所述预设值,则将所述当前控制偏差置为上次目标偏差的值。
优选的,所述根据所述当前目标偏差与上次目标偏差计算偏差变化值,具体为,所述偏差变化值等于所述当前目标偏差与上次目标偏差的差值的绝对值;
所述判断所述偏差变化值与约束值的关系是否满足预设条件,具体为,判断偏差变化值是否大于所述约束值。
优选的,所述约束值根据最大位置编码值确定。
优选的,所述约束值等于所述最大位置编码值的二分之一。
优选的,所述预设值为0。
舵机临界点锁位装置,包括:
第一计算模块,用于根据目标位置值和实际位置值计算当前目标偏差;
第二计算模块,用于根据所述当前目标偏差与上次目标偏差计算偏差变化值;
预设条件判断模块,用于判断所述偏差变化值与约束值的关系是否满足预设条件;
修正模块,用于当所述偏差变化值与约束值的关系若满足所述预设条件,则根据当前目标偏差和预设值的大小关系修正所述当前目标偏差,将修正后的当前目标偏差作为当前控制偏差;
控制模块,用于根据所述当前控制偏差控制舵机向所述目标位置运行。
优选的,所述第一计算模块包括:
第一差值单元,具体被配置为所述当前目标偏差等于所述目标位置值减去所述实际位置值;
所述修正模块包括:
第一判断单元,用于判断当前目标偏差和预设值的大小关系;
第一计算单元,用于若所述当前目标偏差小于预设值,则所述当前控制偏差等于所述当前目标偏差加上所述最大位置编码值;
第二计算单元,用于若所述当前目标偏差大于预设值,则所述当前控制偏差等于所述当前目标偏差减去所述最大位置编码值;
第三计算单元,用于若所述当前目标偏差等于预设值,则将所述当前控制偏差置为上次目标偏差的值。
优选的,所述第二计算模块具体被配置为:所述偏差变化值等于所述当前目标偏差与上次目标偏差的差值的绝对值;
所述预设条件判断模块具体用于判断:所述偏差变化值是否大于所述约束值。
舵机临界点锁位装置,包括:
处理器以及用于存储处理器可执行的指令的存储器;
所述处理器被配置为:
根据目标位置值和实际位置值计算当前目标偏差;
根据所述当前目标偏差与上次目标偏差计算偏差变化值;
判断所述偏差变化值与约束值的关系是否满足预设条件;
若满足所述预设条件,则根据当前目标偏差和预设值的大小关系修正所述当前目标偏差,将修正后的当前目标偏差作为当前控制偏差;
根据所述当前控制偏差控制舵机向所述目标位置运行。相比现有技术,本发明的有益效果在于:通过在舵机的控制过程中给舵机的控制偏差值加入预设条件,以判断目标偏差是否突变。如果目标偏差发生了突变,通过对当前目标偏差修正,避免因角度值急剧跳变而产生的控制偏差急剧跳变。尤其对于PID控制的舵机,对偏差值进行了连续性约束,在不外加任何外部电路及更换位置传感器的基础上实现了磁编码传感舵机的360度全位置锁位功能,提高了舵机的锁位行程,扩大了舵机的应用场景。
附图说明
图1图是一个12位数字式磁编码器坐标图。
图2是本发明实施例一提供的舵机临界点锁位方法的流程示意图。
图3是本发明实施例二提供的舵机临界点锁位方法的流程示意图。
图4是本发明实施例三提供的舵机临界点锁位装置的结构示意图。
图5是图4中修正模块的结构示意图。
图6是本发明实施例四提供的舵机临界点锁位装置的结构示意图。
具体实施方式
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
实施例一:
如图2所示的舵机临界点锁位方法包括以下步骤:
S101,根据目标位置值和实际位置值计算当前目标偏差。典型的,所述根据目标位置值和实际位置值计算当前目标偏差,具体为,所述当前目标偏差等于所述目标位置值减去所述实际位置值。
S102,根据所述当前目标偏差与上次目标偏差计算偏差变化值。典型的,所述根据所述当前目标偏差与上次目标偏差计算偏差变化值,具体为,所述偏差变化值等于所述当前目标偏差与上次目标偏差的差值的绝对值。
S103,判断所述偏差变化值与约束值的关系是否满足预设条件。典型的,所述判断所述偏差变化值与约束值的关系是否满足预设条件,具体为,判断偏差变化值是否大于所述约束值。所述约束值可以根据最大位置编码值确定,如所述约束值等于所述最大位置编码值的二分之一。
导致旋转编码传感舵机在旋转编码器位置跳变点附近不能很好锁位的根本原因是在该区域角度值存在急剧跳变,但直接原因则是因角度值急剧跳变而产生的控制偏差急剧跳变。根据舵机的实际运动情况可知,舵机的运行速度是不能突变的,舵机位移量等于速度在时间上的积分同样不应有突变。而舵机实际位置值与目标位置值之间的偏差可以看作为舵机还未完成的位移量,同样该值也应该是不能突变的。因此通过在舵机的控制过程中给舵机的控制偏差值加入预设条件,以判断目标偏差是否突变。
若偏差变化值大于所述约束值,则表示目标偏差发生了突变,通过对当前目标偏差修正,避免因角度值急剧跳变而产生的控制偏差急剧跳变。尤其对于PID控制的舵机,对偏差值进行了连续性约束,在不外加任何外部电路及更换位置传感器的基础上实现了磁编码传感舵机的360度全位置锁位功能,提高了舵机的锁位行程,扩大了舵机的应用场景。
S104,若满足所述预设条件,则根据当前目标偏差和预设值的大小关系修正所述当前目标偏差,将修正后的当前目标偏差作为当前控制偏差。当发现计算出来的当前目标偏差存在较大的突变情况下则认定当前的当前目标偏差计算结果有误,就需要采用一个新的计算公式重新计算当前目标偏差,以保证控制偏差的连续性。
优选的,所述根据当前目标偏差和预设值的大小关系将所述当前目标偏差修正当前目标偏差,将修正后的当前目标偏差作为当前控制偏差,具体为:
若所述当前目标偏差小于所述预设值,则所述当前控制偏差等于所述当前目标偏差加上所述最大位置编码值;
若所述当前目标偏差大于所述预设值,则所述当前控制偏差等于所述当前目标偏差减去所述最大位置编码值;
若所述当前目标偏差等于所述预设值,则将所述当前控制偏差置为上次目标偏差的值。
参见图1,直线处为磁编码器角度跳变点,当舵机要锁位在直线附近位置区域的某一角度时传统的控制方式可能会使舵机的运动方向出错或舵机直接失去控制。直线左边临近位置值为4095,直线位置值为0,因此优选的,所述预设值为0。如果当前目标偏差存在较大的突变,就将当前目标偏差通过与最大位置编码值的运算修正得到当前控制偏差。尤其在锁位死区范围内,通过对当前目标偏差的修正可以避免使舵机的运动方向出错或舵机直接失控制。
S105,根据所述当前控制偏差控制舵机向所述目标位置运行。用加了约束条件后的偏差去进行PID运行控制舵机输出,使磁编码传感舵机在磁编码器位置跳变点区域也能实现良好锁位功能。
本发明所示的舵机临界点锁位方法,通过在舵机的控制过程中给舵机的控制偏差值加入预设条件,以判断目标偏差是否突变。如果目标偏差发生了突变,通过对当前目标偏差修正,避免因角度值急剧跳变而产生的控制偏差急剧跳变。尤其对于PID控制的舵机,对偏差值进行了连续性约束,在不外加任何外部电路及更换位置传感器的基础上实现了磁编码传感舵机的360度全位置锁位功能,提高了舵机的锁位行程,扩大了舵机的应用场景。
实施例二
为了更好的理解本发明实施例中舵机临界点锁位方法,实施例二提供一具体应用场景,参考图3。如图3所示的舵机临界点锁位方法,舵机利用旋转编码器控制,所述旋转编码器为绝对式编码器或旋转增量式编码器。所述旋转编码器为12位,因此最大位置编码值为4096。优选的,约束值取2048,预设值为0。典型的,在本实施例中若所述偏差变化值与约束值的关系不满足所述预设条件,则当前控制偏差等于所述当前目标偏差。
比如想让舵机锁位在位置0处,假设起始时舵机已很好的停在了位置0处,目标偏差为0。当舵机受到一个外界的力使得舵机的实际角度位置由起始的0变为4090时,传统的偏差计算方式计算出来控制偏差(-4090)=目标值(0)–当前实际值(4090),在PID控制方法下将会产生一个很激进的响应,同时舵机的运转方向也可能是错的,即舵机转动一整圈才能回到原来的目标位置。
在本发明的舵机临界点锁位方法中,当前目标偏差为(-4090)=目标值(0)–当前实际值(4090)。上次目标偏差为0,偏差变化值为4090,大于约束值2048,表示目标偏差出现了突变。需要对当前目标偏差进行修正。由于当前目标偏差小于0,所以当前控制偏差=-4090+4096=6。此时舵机只需要转动很小的角度就可以回到原来的目标位置。
在另一实施例中,所述当前目标偏差等于所述实际位置值减去所述目标位置值。所述根据所述当前目标偏差和预设值的大小关系将所述当前目标偏差修正为当前控制偏差,具体为:
若所述当前目标偏差大于预设值,则所述当前控制偏差等于所述当前目标偏差加上所述最大位置编码值;
若所述当前目标偏差小于预设值,则所述当前控制偏差等于所述当前目标偏差减去所述最大位置编码值;
若所述当前目标偏差等于预设值,则将所述当前控制偏差置为上次目标偏差的值。
实施例三:
如图4所示的舵机临界点锁位装置,包括:
第一计算模块101,用于根据目标位置值和实际位置值计算当前目标偏差;
第二计算模块102,用于根据所述当前目标偏差与上次目标偏差计算偏差变化值;典型的,第二计算模块102具体被配置为:所述偏差变化值等于所述当前目标偏差与上次目标偏差的差值的绝对值;
预设条件判断模块103,用于判断所述偏差变化值与约束值的关系是否满足预设条件;典型的,预设条件判断模块103具体用于判断:所述偏差变化值是否大于所述约束值。
修正模块104,用于当所述偏差变化值与约束值的关系若满足所述预设条件,则根据当前目标偏差和预设值的大小关系修正所述当前目标偏差,将修正后的当前目标偏差作为当前控制偏差;
控制模块105,用于根据所述当前控制偏差控制舵机向所述目标位置运行。
典型的,在另一实施例中,舵机临界点锁位装置还包括维持模块(图未示),用于若不满足所述预设条件,则当前控制偏差等于所述当前目标偏差。
具体的,第一计算模块101包括:
第一差值单元1011,具体被配置为所述当前目标偏差等于所述目标位置值减去所述实际位置值;
如图5,修正模块104包括:
第一判断单元1041,用于判断当前目标偏差和预设值的大小关系;
第一计算单元1042,用于若所述当前目标偏差小于预设值,则所述当前控制偏差等于所述当前目标偏差加上所述最大位置编码值;
第二计算单元1043,用于若所述当前目标偏差大于预设值,则所述当前控制偏差等于所述当前目标偏差减去所述最大位置编码值;
第三计算单元1044,用于若所述当前目标偏差等于预设值,则将所述当前控制偏差置为上次目标偏差的值。
本实施例中的装置与前述实施例中的方法是基于同一发明构思下的两个方面,在前面已经对方法实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施中的系统的结构及实施过程,为了说明书的简洁,在此就不再赘述。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块或单元可以是或者也可以不是物理上分开的,作为模块或单元示意的部件可以是或者也可以不是物理模块,既可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等,如实施例四。
实施例四
如图6所示的舵机临界点锁位装置,包括:
处理器200以及用于存储处理器200可执行的指令的存储器300;
处理器200被配置为:
根据目标位置值和实际位置值计算当前目标偏差;
根据所述当前目标偏差与上次目标偏差计算偏差变化值;
判断所述偏差变化值与约束值的关系是否满足预设条件;
若满足所述预设条件,则根据当前目标偏差和预设值的大小关系修正所述当前目标偏差,将修正后的当前目标偏差作为当前控制偏差;
根据所述当前控制偏差控制舵机向所述目标位置运行。
典型的,处理器200还被配置为:若所述偏差变化值与约束值的关系不满足所述预设条件,则当前控制偏差等于所述当前目标偏差。
本实施例中的装置与前述实施例中的方法是基于同一发明构思下的两个方面,在前面已经对方法实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施中的系统的结构及实施过程,为了说明书的简洁,在此就不再赘述。
本发明实施例提供的装置,通过在舵机的控制过程中给舵机的控制偏差值加入预设条件,以判断目标偏差是否突变。如果目标偏差发生了突变,通过对当前目标偏差修正,避免因角度值急剧跳变而产生的控制偏差急剧跳变。尤其对于PID控制的舵机,对偏差值进行了连续性约束,在不外加任何外部电路及更换位置传感器的基础上实现了磁编码传感舵机的360度全位置锁位功能,提高了舵机的锁位行程,扩大了舵机的应用场景。
对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。