对焊接、搬运、喷漆等工作,机器人的末端执行器在运动过程中不与外界物体相接触,机器人只需位置控制就够了,而对于切削、磨光、装配作业,仅有位置控制难以完成工作任务,还必须控制机器人与操作对象间的作用力以顺应接触约束。机器人采用力控制可以控制机器人在具有不确定性的约束环境下实现与该环境相顺应的运动,从而可以适应更复杂的操作任务。
对一些复杂的作业,如工作环境不确定或变化的装配和高精度的装配,对公差的要求甚至超过机器人本身所能达到的精度,这时如仍试图通过位置控制来提高精度不仅代价昂贵,而且可能是徒劳无益的。而采用了力控制后,可以大大提高机器人的有效作业精度。
现在的机器人绝大多数基于位置控制的,比如说仓库里的搬运机器人,从规定的位置出发,到达指定位置,装货,按设计的路线移动,卸货。基于位置控制的机器人能控制位置、速度、加速度(角度、角速度、角加速度),所以在工业现场常见的应用是搬运、焊接、喷漆。
但是只要求对位置控制是远远不够的,越来越多的场合要求机器人还要有效地控制力的输出,比如说打磨、抛光、装配这些工作。波士顿动力公司在力控上做得比较成功,它的机器人能跑能跳甚至能在雪地里行走。可以说未来控制领域,必须引入力控,纯位置控制是没有前途的。
先看前辈给的定义,“阻抗控制不直接控制机械臂末端与环境接触力,通过分析‘机械臂末端与环境之间的动态关系‘,将力控制和位置控制综合起来考虑,用相同的策略实现力控制和位置控制。”
之前在学阻抗控制的时候就想,既然要控制机械臂末端实现位置控制和力控制,为什么不直接用两个PID分别控制位置和力呢?一个原因是实时性没办法得到保证,不怎么知道什么时候对力控制什么时候对位置进行控制。另一个原因是机械臂是同一个而且是唯一的控制单元,是不可以把它割裂分开来看的。就好比机械臂的最终目标是做到和人的手一样,能同时感受力、温度、湿度、位置等等,不能把它拆分到每个手指,比如食指就是用来感受力输出力的,其他手指不参与。所以阻抗控制的目的是构建一个系统使得执行器(机械臂)能同时控制力/位置。
提出这个阻抗控制方法的Hogan本意就是想设计一种义肢帮助残疾人,他觉得当时的机械臂都太”硬”了,不够柔软,好的机械臂应该是那种想弹簧一样的结构,可以感受外界的力。阻抗控制就建立在这个阻尼-弹簧-质量模型的基础上。
阻抗控制的实现方式应该是多种多样的,请能否概述一下大概有几种方式以及主流的方法? - 邵天兰的回答 - 知乎
这篇回答举了一个机器人关门的例子,非常通俗地解释了这个模型每个部分的物理意义。我在这里简单的描述一下,如果是只能做位置控制的机械臂,现在给它一个关门的任务,如果位置控制有一定的偏差,那么这个门可能会被拽坏。所以在机械臂的末端加上一个弹簧,弹簧的性能非常有讲究,比如有些门比较重,有些门比较轻,要使机械臂都能完成所有门的关门动作,那么弹簧的“刚度”要正好合适,而且为了保持稳定,在关门的时候弹簧不能上下振动。而最有弹性而且不会震荡的系统就是阻尼-弹簧-质量系统。
阻尼-弹簧-质量系统可以代表系统的惯性(质量块)、阻尼(阻尼块)和刚度(弹簧)特性,阻尼-弹簧-质量模型的数学表达如下:
Md、Bd、Kd分别代表目标阻抗模型的惯性矩阵、阻尼矩阵和刚度矩阵。X代表位置向量,Xr代表期望位置,Fc代表机械臂末端与环境的接触力。
第一个公式只考虑了位置出现偏差的情况(弹簧系统),第二个公式考虑了位置和速度的偏差情况(弹簧-阻尼系统),第三个公式考虑了位置、速度、加速度偏差(相当于弹簧-阻尼-质量系统)。
这里的数学表达式和上面贴出来的知乎中的答案不一样,知乎里从胡可定理来解释模型,F前面没有符号。而上面那种数学表达,我的理解是,是针对机械臂末端力的守恒角度列出的方程。对于机器人末端,系统用运动补偿环境接触力,可以看成机械臂对外界环境的柔顺。
机械臂和环境相接触时,用阻抗来描述机械臂的特征,通过调节阻抗控制器的三个参数(惯性系数、阻尼系数、刚度系数)来调节机械臂末端和环境之间接触力/位置的关系。[2]
图中E表示机械臂末端实际轨迹与期望轨迹之差(位置控制部分),Z表示等效的阻抗模型(阻尼-弹簧-质量模型),F表示机械臂末端与环境的接触力。
上面提到的阻抗控制数学模型的三个公式没有考虑力的跟踪,下面引入参考力Fr,定义误差力Fe=Fr-Fc得到如下公式:
定义Xf=X-Xr,通过上述公式可以将机械臂末端与环境之间的接触力转化成位置信号,将这个位置的修正信号和期待的位置信号叠加,然后对位置信号用PID控制,就能实现对接触力/位置的同时控制。如果把PID位置控制放在内环,把利用阻抗模型对力转化为修正位置的过程放在外环,那这种结构就是基于位置的阻抗控制。下图是基于Delta机器人的阻抗控制分析图(来源于哈工大 丁润泽硕士论文)
机械臂和环境之间存在力交互,传感器采集到力信号后,利用阻抗模型将它转化为位置修正量,和期待的位置结合之后得到实际需要控制的位置信号,运动学反解就是将笛卡尔坐标系中的三维位置转化为具体每个关节电机的角度,再通过位置控制器(一般来说是PID)实现位置控制。
仿真时常见的调试手段有以下几种:
当系统的期待力/期待位置输入阶跃响应/斜坡响应/正弦波响应时,通过观察实际力/位置的跟踪情况,了解阻抗控制器的效果。
突然改变机械臂与环境之间的接触距离,可以通过观察位置的跟踪情况来判断阻抗控制器参数的好坏。
通过改变三个参数的大小,来模拟环境的变化,(比如改变系数Kd,模拟环境刚度的变化),再观察力/位置的跟踪情况。
这些测试让我想起了武侠小说里面两个学武的人在对掌的画面hhh
很多论文都提到,在阻抗控制模型中,Md、Bd、Kd都为对角矩阵,也就是说在空间中三维方向不存在耦合关系。这是为了简化问题还是本质上模型的一种设计呢?
至于加速度、速度、位置(Md、Bd、Kd)之间如果存在耦合是一种什么物理环境?我想象不出来