一种总线舵机及其控制装置、控制系统和控制方法与流程

文档序号:11619967阅读:715来源:国知局
一种总线舵机及其控制装置、控制系统和控制方法与流程

本发明涉及舵机技术领域,特别涉及一种总线舵机及其控制装置、控制系统和控制方法。



背景技术:

串口总线舵机因其所具有的布线简单、具有反馈等优点,被广泛应用在许多产品中,例如,机器人产品。目前,所使用的总线舵机的控制方式为:用一个串口给总线发送一条指令,该条指令中包含于每个舵机的识别号id以及对应的指令信息。例如,若某一指令具体为舵机id0,转20度;舵机id1转30度,舵机id2休息……,将该指令转换成最简单的数据发送格式为:0020013002xx…(空格只是为了方便阅读,实际指令中不包括空格)。总线舵机中的每个舵机会根据该指令完成相应的动作。但是,一个串口的通信速率有限,对于总线舵机中的舵机数量较多的情况来说,发送的指令数据的长度较长,消耗的时间较长,会导致指令执行的滞后,影响运动效果,进而影响用户体验。



技术实现要素:

鉴于现有技术中指令数据的发送消耗的时间较长,会导致指令执行的滞后,影响运动效果,进而影响用户体验的问题,提出了本发明的一种总线舵机及其控制装置、控制系统和控制方法,以便解决或至少部分地解决上述问题。

根据本发明的一个方面,提供了一种总线舵机的控制装置,控制端为所述总线舵机中的每个舵机配置一识别号id,并使用串口向所述总线舵机发送指令数据,所述指令数据包括与所述总线舵机中所有舵机的识别号id对应的所有指令数据;所述控制装置设置在总线舵机中的每个舵机中,包括:

位置信息确定模块,用于根据自身配置的识别号id,对接收的指令数据确定所述舵机需要读取所述指令数据的位置信息;

读取模块,用于当接收到所述控制端发送的一条指令数据时,根据所述位置信息从所述指令数据的相应位置读取与自身配置的识别号id对应的指令数据;

控制模块,用于根据所述读取模块读取的指令数据执行相应的动作。

根据本发明的另一个方面,提供了一种总线舵机,所述总线舵机包括一个或多个舵机,每个舵机包括前述的控制装置。

根据本发明的又一个方面,提供了一种总线舵机的控制系统,所述控制系统包括总线舵机和控制端;所述总线舵机包括一个或多个舵机;

所述控制端,用于为所述总线舵机中的每个舵机配置一识别号id;以及,使用串口向所述总线舵机发送指令数据,所述指令数据包括与所述总线舵机中所有舵机的识别号id对应的所有指令数据;

所述总线舵机中的每个舵机,用于根据自身配置的所述识别号id,对接收的指令数据确定需要读取所述指令数据的位置信息;当接收到所述控制端发送的一条指令数据时,根据所述位置信息从所述指令数据的相应位置读取与自身配置的识别号id对应的指令数据,根据读取的指令数据执行相应的动作。

根据本发明的再一个方面,提供了一种总线舵机的控制方法,控制端为所述总线舵机中的每个舵机配置一识别号id,并使用串口向所述总线舵机发送指令数据,所述指令数据包括与所述总线舵机中所有舵机的识别号id对应的所有指令数据;所述方法包括:

对于总线舵机中的每个舵机,根据自身配置的所述识别号id,对接收的指令数据确定需要读取所述指令数据的位置信息;

当接收到所述控制端发送的一条指令数据时,根据所述位置信息从所述指令数据的相应位置读取与自身配置的识别号id对应的指令数据;

根据读取的指令数据执行相应的动作。

综上所述,本发明技术方案中,控制端会为总线舵机中的每个舵机配置一识别号id,并使用串口向总线舵机发送指令数据,这里的指令数据只包括与总线舵机中所有舵机的识别号id对应的所有指令数据;而每个舵机会根据自身配置的识别号id,对接收的指令数据确定需要读取指令数据的位置信息;当接收到控制端发送的一条指令数据时,根据确定的位置信息从指令数据的相应位置读取与自身配置的识别号id对应的指令数据;然后根据读取的指令数据执行相应的动作。由于指令数据中只需包括与总线舵机中所有舵机的识别号id对应的所有指令数据即可,不需要再包括每个舵机的识别号id,相比较现有技术而言,指令数据的长度大大减少,指令数据的发送消耗的时间减少,通讯效率提高,使得每个舵机能够及时执行相应动作,保证运动效果,进而增强用户体验。

附图说明

图1为本发明实施例一提供的一种总线舵机的控制装置的结构示意图;

图2为本发明实施例二提供的一种总线舵机的结构示意图;

图3为本发明实施例三提供的一种总线舵机的控制系统的结构示意图;

图4为本发明实施例四提供的一种总线舵机的控制方法的流程示意图;

图5为本发明实施例五提供的一种总线舵机的控制流程示意图。

具体实施方式

本发明的设计思路是:为减少指令数据的长度,控制端会为总线舵机中的每个舵机配置一识别号id,并使用串口向总线舵机发送指令数据;而每个舵机会根据自身配置的识别号id,确定需要读取指令数据的位置信息;然后只需要根据确定出的位置信息从指令数据的相应位置读取与自身配置的识别号id对应的指令数据;再根据读取的指令数据执行相应的动作。由于指令数据中只需包括与总线舵机中所有舵机的识别号id对应的所有指令数据即可,不需要再包括每个舵机的识别号id,指令数据的长度大大减少。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一

控制端为总线舵机中的每个舵机配置一识别号id,并使用串口向总线舵机发送指令数据,指令数据包括与总线舵机中所有舵机的识别号id对应的所有指令数据。

例如,总线舵机中包括5个舵机,这5个舵机的识别号id分别为id00、id01、id02、id03、id04。则指令数据中就包括分别与id00、id01、id02、id03、id04对应的指令数据。

图1为本发明实施例一提供的一种总线舵机的控制装置的结构示意图,该总线舵机的控制装置设置在总线舵机中的每个舵机中。如图1所示,该总线舵机的控制装置100包括:

位置信息确定模块110,用于根据自身配置的识别号id,对接收的指令数据确定需要读取指令数据的位置信息。

读取模块120,用于当接收到控制端发送的一条指令数据时,根据位置信息从指令数据的相应位置读取与自身配置的识别号id对应的指令数据。

控制模块130,用于根据读取模块120读取的指令数据执行相应的动作。

由于每个舵机都会根据位置信息从指令数据的相应位置读取与自身配置的识别号id对应的指令数据,则指令数据中只需包括与总线舵机中所有舵机的识别号id对应的所有指令数据即可,不需要再包括每个舵机的识别号id,例如,该指令数据的数据格式可以是“1020304050”,而不是“00100120023003400450”。相比较现有技术而言,指令数据的长度大大减少,指令数据的发送消耗的时间减少,通讯效率提高,使得每个舵机能够及时执行相应动作,保证运动效果,进而增强用户体验。

下面针对如何确定舵机需要读取指令数据的位置信息进行详细说明。

如果控制端设定指令数据按照对应的每个舵机的识别号id的从小到大的顺序排列,例如,总线舵机中包括5个舵机,这5个舵机的识别号id分别为id00、id02、id03、id05、id06。控制端发送的指令数据就是按照舵机id的大小顺序排列的,则每个舵机就可以根据自身的id确定指令数据中对应自身的指令数据。

那么位置信息确定模块110,具体用于确定每个舵机的指令数据占用的字节数;根据识别号id以及字节数确定需要读取指令数据的位置信息为:指令数据中的第n段字节段;其中,每段字节段包含字节数个字节,n表示舵机的识别号id的大小在总线舵机中所有舵机的识别号的从小到大的排列中排列第n位。

在上述例子中,5个舵机的识别号id分别为id00、id02、id03、id05、id06。确定每个舵机的指令数据占用的字节数为3,那么指令数据的格式为:aaabbbcccdddeee(这里的字母没有具体意义或者可代表对应每个舵机的指令数据),这个指令数据可根据每个舵机的指令数据占用的字节数3,被分割为5段字节段,分别是aaa、bbb、ccc、ddd、eee。如果要确定id03舵机需要读取指令数据的位置信息,判断id3在所有的舵机中的从小到大的排列中排列第3位,那么就确定该舵机读取指令数据的位置信息为指令数据中的第3段字节段。每接收到控制端发送的一条指令数据,该id03舵机只需读取第3段字节段即可。

进一步地,如果控制端设定指令数据的初始位为0,并将总线舵机中的舵机的识别号id从0开始按从小到大的顺序依次配置;例如,总线舵机中包括5个舵机,这5个舵机的识别号id分别为id00、id01、id02、id03、id04。

那么位置信息确定模块110,具体用于根据识别号id以及字节数确定需要读取指令数据的位置信息为:指令数据中的第(id*字节数)位的字节至第(id*字节数+字节数-1)位的字节。

一般情况下,舵机的指令数据为角度数据,则占用的字节数为2个字节,所以本实施例的一个具体例子就是:根据识别号id以及字节数确定舵机需要读取指令数据的位置信息为:指令数据中的第(id*2)位的字节和第(id*2+1)位的字节。

例如,id03的舵机读取指令数据的位置为:指令数据中的第6、7位。当接收到控制端发送的指令数据“1020304050”后,该id03舵机只需读取指令数据的第6位和第7为字节“40”的数据,然后根据该“40”的指令转动40度即可。

实施例二

图2为本发明实施例二提供的一种总线舵机的结构示意图。如图2所示,该总线舵机包括舵机210、舵机220、舵机230、舵机240、舵机250,分别与串口总线连接。每个舵机包括如图1所示的控制装置100。

需要说明的是,这里总线舵机中的舵机个数不限于5个,可以根据需要设定。

实施例三

图3为本发明实施例三提供的一种总线舵机的控制系统的结构示意图。如图3所示,该总线舵机的控制系统包括总线舵机310和控制端320;总线舵机310包括一个或多个舵机。

控制端320,用于为总线舵机中的每个舵机配置一识别号id;以及,使用串口向总线舵机发送指令数据,指令数据包括与总线舵机中所有舵机的识别号id对应的所有指令数据。例如,总线舵机中包括5个舵机,这5个舵机的识别号id分别为id00、id01、id02、id03、id04。则指令数据中就包括分别与id00、id01、id02、id03、id04对应的指令数据。

总线舵机310中的每个舵机,用于根据自身配置的识别号id,对接收的指令数据确定需要读取指令数据的位置信息;当接收到控制端发送的一条指令数据时,根据位置信息从指令数据的相应位置读取与自身配置的识别号id对应的指令数据,根据读取的指令数据执行相应的动作。

由于每个舵机都会根据位置信息从指令数据的相应位置读取与舵机的识别号id对应的指令数据,则指令数据中只需包括与所述总线舵机中所有舵机的识别号id对应的所有指令数据即可,不需要再包括每个舵机的识别号id,例如,该指令数据的数据格式可以是“1020304050”,而不是“00100120023003400450”。相比较现有技术而言,指令数据的长度大大减少,指令数据的发送消耗的时间减少,通讯效率提高,使得每个舵机能够及时执行相应动作,保证运动效果,进而增强用户体验。

具体地,控制端320,还用于设定指令数据按照对应的每个舵机的识别号id的从小到大的顺序排列,例如,总线舵机中包括5个舵机,这5个舵机的识别号id分别为id00、id02、id03、id05、id06。控制端发送的指令数据就是按照舵机id的大小顺序排列的,则每个舵机就可以根据自身的id确定指令数据中对应自身的指令数据。

总线舵机310中的每个舵机,具体用于确定自身的指令数据占用的字节数;根据自身配置的识别号id以及字节数确定需要读取指令数据的位置信息为:指令数据中的第n段字节段;其中,每段字节段包含字节数个字节,n表示自身配置的识别号id的大小在总线舵机中所有舵机的识别号id的从小到大的排列中排列第n位。

在上述例子中,5个舵机的识别号id分别为id00、id02、id03、id05、id06。确定每个舵机的指令数据占用的字节数为3,那么指令数据的格式为:aaabbbcccdddeee(这里的字母没有具体意义或者可代表对应每个舵机的指令数据),这个指令数据可根据每个舵机的指令数据占用的字节数3,被分割为5段字节段,分别是aaa、bbb、ccc、ddd、eee。如果要确定id03舵机需要读取指令数据的位置信息,判断id3在所有的舵机中的从小到大的排列中排列第3位,那么就确定该舵机读取指令数据的位置信息为指令数据中的第3段字节段。每接收到控制端发送的一条指令数据,该id03舵机只需读取第3段字节段即可。

进一步地,控制端320,还用于设定指令数据的初始位为0;以及,将总线舵机中的舵机的识别号id从0开始按从小到大的顺序依次配置;例如,总线舵机中包括5个舵机,这5个舵机的识别号id分别为id00、id01、id02、id03、id04。

总线舵机310中的每个舵机,具体用于根据识别号id以及字节数确定需要读取指令数据的位置信息为:指令数据中的第(id*字节数)位的字节至第(id*字节数+字节数-1)位的字节。

一般情况下,舵机的指令数据为角度数据,则占用的字节数为2个字节,所以本实施例的一个具体例子就是:根据识别号id以及字节数确定舵机需要读取指令数据的位置信息为:指令数据中的第(id*2)位的字节和第(id*2+1)位的字节。

例如,id03的舵机读取指令数据的位置为:指令数据中的第6、7位。当接收到控制端发送的一条指令数据“1020304050”后,该id03舵机只需读取指令数据的第6位和第7为字节“40”的数据,然后根据该“40”的指令转动40度即可。

实施例四

图4为本发明实施例四提供的一种总线舵机的控制方法的流程示意图。控制端为总线舵机中的每个舵机配置一识别号id,并使用串口向总线舵机发送指令数据,指令数据包括与总线舵机中所有舵机的识别号id对应的所有指令数据;如图4所示,该方法包括:

步骤s110,对于总线舵机中的每个舵机,根据自身配置的识别号id,对接收的指令数据确定需要读取指令数据的位置信息。

步骤s120,当接收到控制端发送的一条指令数据时,根据位置信息从指令数据的相应位置读取与自身配置的识别号id对应的指令数据。

步骤s130,根据读取的指令数据执行相应的动作。

具体地,控制端设定指令数据按照对应的每个舵机的识别号id的从小到大的顺序排列。

则步骤s110中的根据自身配置的识别号id,对接收的指令数据确定需要读取指令数据的位置信息包括:确定每个舵机的指令数据占用的字节数;根据识别号id以及字节数确定需要读取指令数据的位置信息为:指令数据中的第n段字节段;其中,每段字节段包含字节数个字节,n表示舵机的识别号id的大小在总线舵机中所有舵机的识别号的从小到大的排列中排列第n位。

进一步地,控制端设定指令数据的初始位为0,并将总线舵机中的舵机的识别号id从0开始按从小到大的顺序依次配置;

则步骤s110中的根据识别号id以及字节数确定需要读取指令数据的位置信息具体为:指令数据中的第(id*字节数)位的字节至第(id*字节数+字节数-1)位的字节。

需要说明的是,图4所示方法的各实施例与图1所示装置的各实施例对应相同,上文已有详细说明,在此不再赘述。

实施例五

图5为本发明实施例五提供的一种总线舵机的工作流程示意图。以机器人为例,按照机器人有18个关节自由度来计算,总线舵机中会包括18个舵机,分别是id00、id01、id02、…、id17。线需要发送的指令数据是使舵机id00,转20度;舵机id01转30度,舵机id02休息……,id17转60°,则指令数据的格式为“2030xx……60”,串口的波特率为9600。如图5所示,总线舵机的工作流程为:

控制端为每个舵机配置一个识别号id。舵机id00确定自身接收数据时读取指令数据的位置信息为第0、1位,舵机id01确定自身接收数据时读取指令数据的位置信息为第2、3位,舵机id02确定自身接收数据时读取指令数据的位置信息为第4、5位,…,舵机id17确定自身接收数据时读取指令数据的位置信息为第34、35位。当接收到指令数据“2030xx……60”后,舵机id00读取指令数据“20”,转20度;舵机id01读取指令数据“30”,转30度;舵机id02读取指令数据“xx”,休息;…;舵机id17读取指令数据“60”,转60度,该通信时间为288ms。相比较发送“0020012002xx…1760”指令数据消耗的576ms的时间,节省了时间288ms,提高了通信效率,使得每个舵机能够及时执行相应动作,保证运动效果,进而增强用户体验。

综上所述,本发明技术方案中,控制端会为总线舵机中的每个舵机配置一识别号id,并使用串口向总线舵机发送指令数据,这里的指令数据只包括与总线舵机中所有舵机的识别号id对应的所有指令数据;而每个舵机会根据自身配置的识别号id,对接收的指令数据确定需要读取指令数据的位置信息;当接收到控制端发送的一条指令数据时,根据确定的位置信息从指令数据的相应位置读取与自身配置的识别号id对应的指令数据;然后根据读取的指令数据执行相应的动作。由于每个舵机都会根据位置信息从指令数据的相应位置读取与舵机的识别号id对应的指令数据,则指令数据中只需包括与总线舵机中所有舵机的识别号id对应的所有指令数据即可,不需要再包括每个舵机的识别号id,相比较现有技术而言,指令数据的长度大大减少,指令数据的发送消耗的时间减少,通讯效率提高,使得每个舵机能够及时执行相应动作,保证运动效果,进而增强用户体验。

以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1