在机器人系统中使用舵机
背景
舵机 (Servo) 是机器人系统中非常常见的执行机构,在多足机器人、人形机器人、相机云台以及低成本机械臂中,我们都可以见到舵机的身影。舵机的本质是一套小型的闭环伺服系统,它接收目标信号,通过驱动内部的直流电机,并经过减速齿轮组,从而调整输出轴的角度。该输出角度通过电位器采样,再由反馈控制系统调整其输出角度与目标值匹配。整个过程构成一个典型的闭环反馈控制系统。
舵机的优势在于结构紧凑、使用方便、价格便宜,但位置精度、负载能力及维持位置的能力有限,适合对控制性能要求不高、体积要求小的场合。而对于高精度、大扭矩、高速的场合则不适用(除极少数高端产品外),可以用交、直流有刷/无刷电机 + 旋转编码器的方案替代。
1. 舵机的分类与选择
1.1 舵机的分类
舵机按内部控制方式分为:
- 模拟舵机:内部使用模拟电路(比较器 + 放大电路)进行闭环控制;
- 数字舵机:内部使用数字电路(一般为单片机)进行闭环控制。
无论模拟还是数字舵机,接受的都是PWM信号;而在数字电机下还有一类为”总线式舵机” — 即在数字舵机的基础上,支持通过总线(TXD/RXD)下发指令。总线式舵机可以减少硬件平台的负载,且具有“维持”功能,不用持续输出信号。总线式舵机控制方式更加灵活,一般可以支持速度闭环、位置闭环等多种模式。有些数字舵机还支持多级串联,可以减少占用的I/O口数量。缺点是一般价格很高,可达几百美刀。如TurtleBot 3中就使用了DYNAMIXEL XL430-W250的总线舵机,价格在人民币500元左右。
总结一下,即舵机可按命令输入方式分为:
- PWM舵机:接收PWM信号作为参考输入;需要持续输入信号;
- 总线舵机:通过总线接收参考输入;具有保持功能。
根据尺寸和动力特性,舵机也可以按照以下方式进行分类:
- 小型航模舵机,一般体积较小且采用塑料齿轮组,如SG90。一般用于摄像头云台;
- 中型舵机,一般使用金属齿轮,如MG995/MG996。可用于四轮车的方向控制;
- 大扭力舵机,同样使用金属齿轮,扭力大于25kg/cm,用于机械臂主要受力关节;
- 高性能舵机,一般采用霍尔式或增量编码器进行位置反馈,同时采用高精密齿轮,提高转向稳定性。
1.2 舵机的选择
我们在为机器人选用舵机时,主要考虑的因素与指标有:
- 最大旋转角度:电机从一端极限位置到另一端极限位置的角度差;常见的有90°,180°及270°。有少部分舵机支持360°,这种舵机一般不能控制具体的角度,只能控制转动的速度,性质是速度闭环(而非一般的位置闭环),常用于学习用小车平台。
- 响应速度:响应速度表示了从位置A到达位置B所需要的时间,一般以单位s/60°表示。响应速度高固然好,但有时快速响应易产生较大的控制抖动。
- 最大扭矩:影响舵机能接受的最大负载。为了提升最大扭矩,除了使用金属齿轮的大扭力舵机外,一般还会用到双舵机并联的方法(一些桌面级6-DoF机械臂的底部、人形机器人的腰部位置会使用)。但这种方式在实际使用中极容易因为舵机参数的不同导致其中一个舵机烧毁。
- 供电电压:典型的电压一般为4.8v起,最大12v。一般来说电压越大,能提供的最大功率也越大(在保证电流足够的情况下)。
- 价格:价格也是一个重要的考量因素,但是价格低了,舵机的性能也会相应下降。如果对成本有要求,应避开总线舵机。
2. 舵机的控制与使用
2.1 PWM舵机的控制
舵机在使用过程中,期望20ms为周期的PWM方波。其中,高电平的时长决定了输出轴的角度,并呈线性关系。一般中间位置为1.5ms,范围为[1ms, 2ms],即1ms为最左侧,2ms为最右侧。
使用PWM控制舵机的方式有以下三种:
- 通过软件I/O模拟出PWM的时序
- 通过硬件PCA (Programmable Counter Array) 模块输出PWM信号
- 通过专用的PWM信号发生芯片,如PCA9685
Arduino的Servo库同时使用了方式(1)和(2),在有PCA输出的引脚上实现了硬件PWM (Pin 2, 3, 5, 6, 7, 8, 44, 45 and 46),而在其他引脚上使用软件PWM.
2.2 总线舵机的控制
总线舵机的控制则相对简单,连接TXD/RXD后,只要安装手册中的通信协议下发对应指令即可。
3. 舵机问题的一般讨论
3.1. 舵机精度
影响舵机精度的元素很多:
- 对于PWM输入舵机,因为内部的电压比较电路采用模拟信号,所以精度会受输入信号的影响。PWM信号的精度就会比较关键,而舵机的占空比偏小,十分不友好。一般8位PWM达不到很好的定位效果,需要12位PWM才较为理想;
- 无论是模拟还是数字舵机,因为内部同样使用电位器进行位置反馈,所以电位器的精度就非常关键。选用较好的线性电位器会大大加大成本和体积,只在高端舵机中会使用。
另外很重要的一点就是齿轮组的品质,决定了反向间隙误差 (Backlash error) 和角度精度等。在这一点上,金属齿轮比塑料齿轮好很多。
3.2. 电源供电
舵机在工作时会产生瞬时大电流,一般峰值电流是维持电流的数倍到数十倍,所以一定要保证电源功率充足。否则会拉低整体电压导致控制部分死机或复位。另外一点要注意的地方就是,如果长时间遭遇堵转或超出额定负载,不仅会增加电源压力,还会导致电机烧毁及传动件损坏,一定要避免。
4. 总结
本文提供了舵机的分类、选择和基本的使用介绍。文章虽然不长,也没有精美的配图,但足以帮助入门者了解舵机的方方面面,希望对读者有帮助。
参考资料
- 东方梦羽, 知乎 - 为什么舵机做机器人感觉很容易坏?很好的又很贵,但还是不经用?
- Robotis - XL430-W250 Manual