总线伺服舵机实际上可以理解为舵机的衍生品,数字舵机相比与模拟舵机而言是设计上的颠覆,而总线伺服单元对于舵机而言则是在功能和运用上的颠覆。舵机实际上只能发挥出总线伺服舵机非常微小的部分。
那么什么是总线伺服舵机。我们先来看一下我们现在使用舵机和数字舵机时遇见的问题。
1、我们利用舵机(不论数字还是模拟)搭建一个仿人机器人,用了20个自由度,用了20个舵机。每根舵机都要接到控制卡上,有的线还需要延长,所有的线加起来有超过30根,像团海草一样把机器人整个身体缠了个遍,机器人在走动的时候突然发现舵机线被拉松了,机器人一个趔趄把脖子都摔断了。控制卡上需要做出20个PWM信号接口(我们一直在为这个技术问题发愁,现在或许好一点),那可是长长的一排插针啊。健忘的我还很容易忘记哪个插针对应哪个舵机,好不容易接上后,一通电,机器人腿转到背后去了,一排查发现腿关节接到肩关节了。当我们需要给机器人加些传感器时候,突然发现,IO口都被用掉了,定时器不够用了,天啊,真是噩梦。
2、舵机的每一个舵机的参数不一定一样,不时还会出现中位偏差比较大的,好不容易装出机器人来后发现舵机的中位不一致,和理论计算得出来的机器人步态不相匹配。这回麻烦大了,需要对每一个舵机设置中位,在发送舵机控制信号的时候还需要对每一个舵机都单独加入这个修正值,而不能统一调用某一个通用的PWM产生函数,天啊,一个步态就是20行代码啊。当然,程序员都是勤劳和严谨的,并不觉得这是辛苦的事情。而有些人会买可以通过编程器调节和设置中位的舵机,当然,可能会很贵。
3、机器人步态的编写是件非常麻烦的事,我们在编写步态的时候给舵机的初始值基本上都是有偏差的,比如我想肩关节转到180度位置,我给的是255的控制值,但由于舵机个体差异的问题,这个值已经让舵机处于堵转状态。过一会之后,我们发现机器人一只胳膊不能用了,可怜的机器人啊,还不知道到底发生了什么事。时候检查发现机器人肩关节堵转时间过久,导致电机过热,让舵机外壳融化,然后导致减速齿轮箱错位,舵机就失效了,机器人的一只胳膊就残废了。
第一点的原因我们可以理解为,现在的舵机都是并联控制的,线都是需要接到控制板上,我们可以幻想,如果舵机可以串联就好了。脚腕关键的舵机串到膝关节,一直串到髋关节,最后一根线直接接到控制卡上,甚至可以把所有的舵机都串进去。我们同样可以惊喜的发现,只需要1根线,最多4根线就可以搞定20个舵机了,哎,世界真奇妙啊。
第二点的原因是舵机自己不能存储中位修正值,修正值需要我们发控制脉冲的时候补进去。我们可以想象,如果我告诉舵机:你好,放松,我要修正你的头的位置,它有点歪了。然后舵机就放松下来,我们把它的头摆正,然后告诉它:这是你头部的正确方向,你以后需要以这位置为正前方,然后舵机就把这个位置记下来了,并且我告诉它转60度它就以这为初始位置转60多,不多不少。
第三点原因是机器人没有神经系统,根本不知道疼痛。如果我们能给控制卡提供每一个关节的力矩、电流、电压、温度、转角,那么机器人缺胳膊少腿的问题都可以解决。呵呵,好像有点神奇了。
其实一点不神奇,因为自从总线伺服单元出现后,这些幻想都可以瞬间变成现实。总线伺服舵机简单的说就是可以串联,并且接受数据信号,能够提供关节的力矩、电流、温度、角度等信息,能准确控制位置的运动单元,外形可以和舵机一模一样。我们用一个带串口给总线发送一条指令:舵机1,转20度;舵机2转30度,舵机3休息……直到理论上最后一个舵机。然后所有的舵机就会执行这条指令。
那么什么是总线伺服舵机。我们先来看一下我们现在使用舵机和数字舵机时遇见的问题。
1、我们利用舵机(不论数字还是模拟)搭建一个仿人机器人,用了20个自由度,用了20个舵机。每根舵机都要接到控制卡上,有的线还需要延长,所有的线加起来有超过30根,像团海草一样把机器人整个身体缠了个遍,机器人在走动的时候突然发现舵机线被拉松了,机器人一个趔趄把脖子都摔断了。控制卡上需要做出20个PWM信号接口(我们一直在为这个技术问题发愁,现在或许好一点),那可是长长的一排插针啊。健忘的我还很容易忘记哪个插针对应哪个舵机,好不容易接上后,一通电,机器人腿转到背后去了,一排查发现腿关节接到肩关节了。当我们需要给机器人加些传感器时候,突然发现,IO口都被用掉了,定时器不够用了,天啊,真是噩梦。
2、舵机的每一个舵机的参数不一定一样,不时还会出现中位偏差比较大的,好不容易装出机器人来后发现舵机的中位不一致,和理论计算得出来的机器人步态不相匹配。这回麻烦大了,需要对每一个舵机设置中位,在发送舵机控制信号的时候还需要对每一个舵机都单独加入这个修正值,而不能统一调用某一个通用的PWM产生函数,天啊,一个步态就是20行代码啊。当然,程序员都是勤劳和严谨的,并不觉得这是辛苦的事情。而有些人会买可以通过编程器调节和设置中位的舵机,当然,可能会很贵。
3、机器人步态的编写是件非常麻烦的事,我们在编写步态的时候给舵机的初始值基本上都是有偏差的,比如我想肩关节转到180度位置,我给的是255的控制值,但由于舵机个体差异的问题,这个值已经让舵机处于堵转状态。过一会之后,我们发现机器人一只胳膊不能用了,可怜的机器人啊,还不知道到底发生了什么事。时候检查发现机器人肩关节堵转时间过久,导致电机过热,让舵机外壳融化,然后导致减速齿轮箱错位,舵机就失效了,机器人的一只胳膊就残废了。
第一点的原因我们可以理解为,现在的舵机都是并联控制的,线都是需要接到控制板上,我们可以幻想,如果舵机可以串联就好了。脚腕关键的舵机串到膝关节,一直串到髋关节,最后一根线直接接到控制卡上,甚至可以把所有的舵机都串进去。我们同样可以惊喜的发现,只需要1根线,最多4根线就可以搞定20个舵机了,哎,世界真奇妙啊。
第二点的原因是舵机自己不能存储中位修正值,修正值需要我们发控制脉冲的时候补进去。我们可以想象,如果我告诉舵机:你好,放松,我要修正你的头的位置,它有点歪了。然后舵机就放松下来,我们把它的头摆正,然后告诉它:这是你头部的正确方向,你以后需要以这位置为正前方,然后舵机就把这个位置记下来了,并且我告诉它转60度它就以这为初始位置转60多,不多不少。
第三点原因是机器人没有神经系统,根本不知道疼痛。如果我们能给控制卡提供每一个关节的力矩、电流、电压、温度、转角,那么机器人缺胳膊少腿的问题都可以解决。呵呵,好像有点神奇了。
其实一点不神奇,因为自从总线伺服单元出现后,这些幻想都可以瞬间变成现实。总线伺服舵机简单的说就是可以串联,并且接受数据信号,能够提供关节的力矩、电流、温度、角度等信息,能准确控制位置的运动单元,外形可以和舵机一模一样。我们用一个带串口给总线发送一条指令:舵机1,转20度;舵机2转30度,舵机3休息……直到理论上最后一个舵机。然后所有的舵机就会执行这条指令。