1.背景介绍

机械臂在与外界环境或用户发生物理力交互时,需要表现出较好的柔顺性,以防止产生过大的碰撞力伤害用户、工件甚至机械臂本身。这就需要机械臂需要有良好的力控制功能。本文总结下目前机械臂在不加外界力传感器下所实现的一种类似力控制的功能——软浮动(soft move, soft servo)。

2.软浮动介绍

将机械臂应用于机床的上下料中,当机械臂把工件运动到机床的卡盘位置并停止,卡盘开始夹紧零件。随后机械臂应该呈现出一定的柔软特性,会跟随者卡盘卡紧的方向运动,以防止在此交接过程中出现机床卡盘与机械臂之间两边掐架而两败俱伤的局面。这种柔软特性就是机械臂的软浮动功能。

实现软浮动功能我们当然可以通过在末端加力传感器的方式来实现。然而在类似机床上下料的应用场合中,力控制的精度并不需要那么高。软浮动的功能类似于基于电流环的拖动示教,我们可以把机械臂设为电流模式,发送力矩补偿指令,使机械臂表现出柔顺特性。

动图封面

3.软浮动实现方式

接下来介绍ABB和Kuka实现软浮动的方式。注意我们只是通过他们各自的说明书逆向探索他们的实现方式。

Kuka:限定机械臂各关节的输出力矩。在软浮动模式下,可将机械臂各轴的力矩限制在一定范围之内,使得电机可以克服重力矩+摩擦力而不会掉落,但由于力矩限制又会被外界环境拖动。

Kuka的软浮动是在关节空间实现的,各关节可独立地设定为软浮动模式。这种模式在位置模式先也能实现,但需要修改驱动器输出力矩的范围限制。有些CANOPEN协议的驱动器不开放这部分的PDO。

ABB:笛卡尔空间的软浮动。区别于Kuka的方案,ABB是直接在笛卡尔空间设定哪个方向机械臂可以软浮动。比如可设置Z方向很软,而其他方向很硬,那机械臂在Z方向即可被拖动。

这种软浮动实现的原理与阻抗/导纳控制原理类似,通过电流环与动力学模型估计出作用在机械臂末端的外力,再运用导纳控制的原理,使机械臂呈现出特定方向的柔软特性。ABB手册里的这张图也体现了这点推测。

在以前的文章中我们也提到过在较大型机械臂通过电流环获取外力信息的精度很有限。ABB的这种软浮动需要的外力也是比较大的。此外,在笛卡尔空间的控制还需要避免和解决奇异点带来的困扰。

动图封面

4.总结

关节空间的软浮动调参更容易,而笛卡尔空间的软浮动好像看不出有什么必要的应用场景。