来源 | 睿慕课
作者 | 桂凯
▌背景介绍
机器人在完成一些与环境存在力作用的任务时,比如打磨、装配,单纯的位置控制会由于位置误差而引起过大的作用力,从而会伤害零件或机器人。机器人在这类运动受限环境中运动时,往往需要配合力控制来使用。
位置控制下,机器人会严格按照预先设定的位置轨迹进行运动。若机器人运动过程中遭遇到了障碍物的阻拦,从而导致机器人的位置追踪误差变大,此时机器人会努力地“出力”去追踪预设轨迹,最终导致了机器人与障碍物将巨大的内力。而在力控制下,以控制机器人与障碍物间的作用力为目标。当机器人遭遇障碍物时,会智能地调整预设位置轨迹,从而消除内力。
机器人力控制的作用越来越大,以广泛地应用在康复训练、人机协作、和柔顺生产领域。从个人的学习历程来看,机器人力控制的发展历史中存在着两条交叉的主线:一条是力控制策略,一条是力反馈途径。 本文分别以这两条线来引着大家回顾下力控制的发展脉络。
▌力控制策略
既然需要控制接触力,最简单地,可以仿照位置控制的PID控制器,设计一个力控制的PID控制器。这里面可细分为P、I、PI、PD等控制器。这类控制器也可称为显式力控制(explicit force control),它以直接实现对目标力指令的跟踪为目标。
然而单纯的这种控制器在实际中效果很一般,往往要往其中加入滤波环节及一些前馈环节;在与刚性较大的环境作用时,稳定性很低。
在打磨装配等应用中,并不是所有方向都需要控制接触力。比如下图的打磨应用,需要控制的是Z方向的压力为恒定,而对于X,Y方向以位置控制为主。
这就引入了力位混合控制 (hybrid force/position control) 策略。该策略就是要区分在那些方向要进行力控制,哪些方向要进行位置控制。它通过设计一个S空间,将任务空间一分为二,分别运用不同的控制策略。
接下来最重要的力控制策略登场了:阻抗/导纳控制,也称为间接力控制或隐性力控制(implicit force control)。它以控制两者交互间的阻抗为目标,具体的原理是:
阻抗控制具体实现有两种方式:
1)阻抗(impedance)控制
这种方式是基于位置控制的外环与力控制的内环,应该是你现在接触的那种。
这种方式需要对系统的动力学进行建模。
2)导纳(admittance)控制
这种方式是基于位置控制的内环与力控制的外环,见下图:
它的基本思想是:检测系统与外界的接触力F,通过一个二阶导纳模型(Md,Bd,Kd>0),生成一个附加的位置,此附加外置再去修改预先设定的位置轨迹,最终送去位置控制内环,完成最终的位置控制。
这种方式也可以使得系统表现出的阻抗是Md*s^2+Bd*s+Kd,且这种方式不需要动力学建模。这种方式特别适合于位置控制效果好的伺服系统。所以你可是试试这种方式,达到的效果是一样的。
阻抗与导纳相互对偶,但在实际运用中确有本质的区别。阻抗控制计算的结果是关节指令力矩,它需要机器人关节输出的力矩(注意关节力矩是减速器输出端的力矩,而不是电机的输出力矩)是可控制的,这对与大多数机器人来说是很难做到的:电机的输出力矩可以精确控制,然而经过减速器后的损失,由于关节缺乏力矩传感器而无法精确获取;像iiwa这种具备关节力矩传感器的才有能力去使用阻抗控制。注意到,以上介绍的几种力控制方法都是计算得到指令关节力矩值,同样适用的场景是类似iiwa或一些无减速器的直驱(Direct Drive)机器人,比如大家在看论文的时候,其实验平台是在CMU Direct Drive Arm或MIT Serial Link Direct Drive Arm上。
而导纳控制计算的结果是关节指令位置,这对于机器人来说是很容易实现的。所以目前力控制中的应用是以导纳控制为主的。
值得注意的是,阻抗/导纳控制通过合适的参数选择,也可以达到控制接触力的效果。
▌力反馈途径
接下来力控制的另一条主线就是从力检测设备来展开的。对于机器人力控制,除了控制策略,另一个重要的一环是如何检测机器人与环境间的交互力信息。对于位置控制来说,最常用的就是在电机尾部加编码器;而力控制的发展历史中,检测方式也经历了一些变更。
1)关节电流反馈
如前所述,这种方式仅适用于直驱情况或减速比很小的情况。在这些情况下,关节摩擦力很小,可以保证辨识和标定的精度,进而保证获取交互力信息的精度。大家在早期的论文中会看到两种机器人:CMU Direct Drive Arm, MIT Serial Link Direct Drive Arm。目前这类研究极少,主要还是摩擦力模型的复杂性无法解决。
2)末端/腕部多轴力矩传感器
这种方式很早就开始使用,现在依然广泛应用在机器人打磨、装配等领域。这种检测方式很直接,即传感器直接检测到与外界环境的作用力信息。
表面上看这种检测方式很完美,然而它在原理上就存在着重大缺陷: noncolocated modes。这个词表达的意思是检测元件的检测量与实施元件不在一起,即力检测是在末端实现的,然而实际实施元件(即电机)却远离末端,这两者之间隔了机器人的机械本体。这种noncolocated modes会限制机器人力控的动态性能,并且机械本体惯性大,带宽低。所以基于末端检测力方式的力控制的响应慢,带宽低,现在一些机器人的打磨中不是光靠末端力矩传感器就能完美实现的,其原因也大概在此。
这种力控方式在刚性较大的环境下稳定性也较低,上图是在与铝件表面接触与皮肤表面接触下的阶跃响应。另外末端式的只能检测很小一部分区域(力矩传感器安装处之后)的交互力信息,也需要进行标定。
末端式配合导纳控制,在机器人装配、多机器人协作等领域还在有很多应用。
3)底座多轴力矩传感器
就是把放在末端的力矩传感器移到机器人的底座,这样就可以检测全臂的交互力信息。这种方式在学术研究上一闪而过,它无法避免noncolocated modes的问题,且标定和辨识的过程更复杂。
4)关节扭矩传感器
在机器人的各个关节上安装单轴扭矩传感器。这种方式可以避开noncolocated modes,因为传感器跟电机很近,避免了机器人机械本体动态特性的干扰。这种力控的方式的带宽要更高,动态响应更快。但它检测到的力矩信息包含有更多的重力矩、惯性力矩等信息,需要通过系统辨识和标定的方法从中提取出交互力信息。关节式的另一个优点是可以检测全臂的交互力信息,且它可以控制关节力矩输出,与以上几种方式有着本质的不用。此外,关节力矩反馈对位置控制也有着很大的帮助。单纯关节式扭矩传感器相关的研究在上个世纪八九十年代很多,有兴趣地可以搜索关键词:joint torque control, joint torque feedback。
这种方式的力控制动态特性更好,理论研究也较成熟,然而实际中各大家族传统工业机器人中很少有用这种方式进行力控的,大家主要还是采取末端式的,原因可能是在机械结构复杂度等方面。
5)谐波减速器式
关节力矩传感器本质上就是一个扭簧,通过检测扭簧的变形,进而获取力矩。而谐波减速器本质上就是一个弹性体,所以原理上,我们也可以通过谐波两侧的角度差,再乘上谐波的刚度,其效果与关节扭矩传感器相当。这类研究也是极少的,主要是谐波变形的特性非常复杂,且存在着固定频率的转矩波动。对这类研究有兴趣的可以参考如下文章:
Hongwei Zhang.Torque Estimation for Robotic Joint With Harmonic Drive Transmission Based on Position Measurements .
6)串联弹性驱动式
以上这些方式,都是以控制力为目标来实现机器人力控制。我们知道,力矩检测的原理是存在着机械变形,那我们是否可以通过控制机械变形来控制力矩呢?答案是肯定的,这种思路就将机器人力控制问题转换为扭角的位置控制问题。这类机器人关节可称为SEA(serial elastic actuator, 串联弹性驱动),它包括两个编码器和一个关节力矩传感器,结构上是最复杂的,代表性产品就是iiwa。SEA在1995年提出,相关研究是目前机器人力控制最热的方向,应用领域包括机械臂、康复机器人、足式机器人等。
7)肌电信号式
这类方式的力控制主要应用在康复机器人,尤其是康复外骨骼中。肌电信号产生于肌肉自主收缩过程,从中可以提取出用户自主力矩信息,这部分也就是用户与外骨骼间的交互力信息。
肌电信号延时更小,信噪比高,但肌电信号-力矩模型复杂,非线性与时变性强,限制了这种方式的力控性能。
—— 完 ——