0


干货 | 阻抗与导纳控制:一种使机器人刚中带柔的控制方法

本期技术干货,我们邀请到了小米机器人实验室工程师任赜宇,和大家分享在机器人力控方法中最为经典的一类控制方法,即阻抗与导纳控制。

一、前言

在传统机器人尤其是工业机械臂的应用中,机器人通常都是运行在固定的位置轨迹下,再加上机器人的本体设计多由高强度的铝合金以及高减速比的谐波减速器构成,因此机器人多呈现“冷冰冰的钢铁机器”之感,机器伤人的意外事件也时有发生,如下视频所示。

为了避免上述的意外事件发生,工程师会在机器人的控制器中引入各类力控算法,让机器人运行在固定位置轨迹的同时,能动态地根据外部力调整自己的期望位置与速度,达到“刚中带柔”的运动状态,有效保护人类安全,防止意外发生。这篇文章将会着重介绍机器人力控方法中最为经典的一类控制方法,即阻抗与导纳控制

二、力控的分类

首先针对机器人的力交互控制,技术上可分为如图1所示的几类:

ed53ca913c07eab9353802ef00f5f3c4.png

图1 机械臂力交互控制的主流技术方案分类

图1中用红色标出的技术方案即为当前工程应用中采取的主流方案,即笛卡尔与轴空间中的阻抗与导纳控制,我们首先来简要阐述所列举的其他几类方案是什么以及其未被大范围采用的缺陷在哪里:

**** ******>>>> **********直接力控:

顾名思义就是针对外力进行直接控制,其核心是通过操作期望力与测量力之间差值的方式实现相应力控,这边其实也就引出了直接力控会遇到的两个主要棘手问题:

  • 期望力的值该怎么给?

在绝大多数的实际应用中,我们都是优先给予机器人位置轨迹的指令,而具体期望力的数值大小是极难直接精确给出的。

举个简单的例子,当人类用手去抓握一些柔软易形变的物体时,我们首先是用手大致包络住物体(位置轨迹),再去施力试探物体的软硬以调整出适合抓握物体的力度(改变位置与力的动态关系),而非在脑海中直接形成一个所施加力的数值大小,实际上人类在对外力的精确定量感知能力是极差的,这也解释了世界上为什么会存在各种秤;

  • 如何获得精确外力的测量?

首先绝大多数业界使用的工业机械臂是不具备高精度力矩传感器的,其次即使是加装力矩传感器的机械臂(如末端六维力的工业臂和关节力传感器的协作臂),如何稳定地获得精确度高、噪声低与通频带宽的外力信号,这对实际的力/力矩传感器提出了极高的要求(成本与可靠性),在实际的工业应用中很难得到大规模推广应用;

**** ******>>>> **********间接力控:

顾名思义就是不对外力进行直接控制,转而通过控制位置的方式来间接控制外力:

  • 间接力控-被动柔顺控制

是指在机械臂的末端加装相应的柔性弹簧装置,详情可参见图2左,在已知装置刚度 的情况下,通过控制相应位移 来控制末端的施加/接触力,即 ;

  • 间接力控-主动柔顺控制

是指人为地将机械臂末端的目标位置设计在相应目标物之后,机械臂为了到达不可到达的目标位置而不可避免地与目标物发生力交互,详情可参见图2右;

78fa493289146599ead87b7ffa0ea36e.png

图2 间接力控-被动(左)/主动(右)柔顺控制示意图

  • 局限性:

整体而言,间接力控中的被动与主动柔顺控制所面临的技术问题主要为方法笨拙、动态适应性能不足,即只能满足某种特定的简单应用场合:例如在被动柔顺控制中,相应的弹簧装置该如何设计来满足各个方向外力的测量,以及刚度 和 的值该如何设计来覆盖各种施力范围;在主动柔性控制中,如何动态地设置 值来精准控制施加外力、以及目标物的材质和位姿发生变化该如何处理等等,以上这些现实应用中经常出现的问题,限制了其大规模落地应用;

**** ******>>>> **********混合力位控制:

混合力位控制从技术理论上来说,是阻抗与导纳控制的基础,相应的阻抗/导纳控制都是在混合力位控制的基础上改进衍化而来,和阻抗与导纳控制相比,混合力位控制是针对末端笛卡尔空间且为法向控制力+切向控制位置的特殊子工况,故在这篇文章中不做详细介绍;

三、阻抗/导纳控制

1. 整体介绍

在上文介绍到了其他几种力控方法的不足之后,我们来介绍本文的重点——阻抗与导纳控制,首先有两个非常重要的概念:

  • 阻抗/导纳控制是用来控制机器人【位置】与【力】的【动态关系】,而非直接控制位置或者直接控制力;

Neville Hogan: "The primary difference between impedance control and the more conventional approaches is that the controller attempts to implement a dynamic relation between manipulator variables such as end-point position and force rather than just control these variables alone.”

  • 阻抗控制和导纳控制的主要区别为如下因果关系:阻抗控制是基于测量的位置(差值)来控制外力,而导纳控制则是基于测量的外力(差值)来控制位置;

Piet Lammertse: "The main difference between admittance control and impedance control is that the former controls motion after a force is measured, and the latter controls force after motion or deviation from a set point is measured."

宏观上来讲,阻抗与导纳控制是希望机器人呈现质量-阻尼-弹簧的二阶系统的动态特性,这边可以是各关节轴空间的,也可以是机器人末端笛卡尔空间的,而我们绝大多数应用场景关注的都是机器人末端位置与力的关系,因此笛卡尔空间的阻抗/导纳控制要比轴空间的使用更为普遍。

这里具象化来说,二阶系统的弹簧特性会直观地影响我们和机器人交互的轻柔性,例如弹簧刚度值越小,我们拖动机器人将会更加轻盈,而二阶系统的阻尼特性会直观地影响机器人各关节抗外界机械扰动的能力,例如阻尼值越大,我们在拖动机器人时出现震荡的几率越小但会相应增加拖动阻尼感等。

一个经典的体现阻抗/导纳控制特性的机械臂demo如下:

视频来源:Impedance Control for Soft Robots

**2.**** **基本模型

根据机器人的动力学方程:

其中 为关节角度, 为关节角速度, 为关节角加速度; 为机器人的转动惯量矩阵, 为科氏力矩阵, 为重力矩阵,这三个矩阵的值都与机器人实际的位置姿态与动力学参数有关连;而 则是机器人各关节模组输出的扭矩,可以看作是希望所控制的动力,而 则是机器人各关节受到的外力,可以看作是阻力;

从机器人工程应用的角度出发,我们在这里希望控制的是上文提到各关节中的输出扭矩 ,在阻抗控制的基础上,各个关节的输出特性将不再是光滑无摩擦的旋转副,而是需具备相应的阻抗特性,因此: 其中 为关节的目标角度位置, 为关节目标角加速度, 为角度位置差即 ; 为质量矩阵, 为阻尼矩阵, 为刚度矩阵,这三个矩阵均为A阶方阵(A为机械臂的自由度数目),且一般为对角与正定矩阵,由使用者所设计定义;等号右侧的第1项为eq1的机器人动力学方程,描述的为机器人在沿某条设计轨迹运动时所需要的关节输出扭矩;等号右侧第2项为使机器人呈现相应的阻抗特性而所需的关节输出扭矩;等号右侧第3项为特意设计的用来闭环补偿的力,将惯性阵变成期望的 ;

结合整理上述的eq1和eq2(建议大家手动整理一下eq1和eq2,自然会明白右侧第3项为何如此设计),我们可以得到以下公式:

因此eq3所描述的即为阻抗控制这个二阶系统的位置控制误差(等号左侧)与所受外力(等号右侧)的关系,这也从建模角度上定量分析了上文所提及的阻抗/导纳控制是用来控制机器人位置与力的动态关系,而非直接控制位置或者直接控制力

**3. **工程应用

从eq2来看,如果在实际工程应用中要实现相应的阻抗控制,机器人的硬件至少需要具备如下几点要求:

  • 关节输出扭矩 :机器人需开放底层力矩环控制,大部分工业机器人和一部分协作机器人出于用户安全的考虑,可能是不开放力矩环的,新兴的协作机器人厂家一般都有相应的支持;
  • 转动惯量矩阵 、科氏力矩阵 与重力矩阵 :需要精确的机器人动力学参数(诸如质心位置、连杆惯量、转子惯量与各类摩擦力等)与位姿信息等,一般可以通过相应的动力学参数辨识方法较好地标定出来;
  • 关节角度 **** 等:需要机器人各关节角度、角速度与角加速度的信息,这个对于大部分机器人硬件都能得到很好的支持;
  • 关节受力扭矩 :需要机器人搭载相应的力传感器,力传感器在这边也是一个复杂的概念,由于篇幅关系在本文中不做介绍;

而对于eq2所描述的为了实现阻抗控制而控制相应关节输出扭矩而言,在实际的工程应用中还有各类简化,最典型的简化就是在缺少力传感器的工况下(即 的值无法得到),我们一般会将eq2中的 简化默认为0 ,将该简化过的eq2代入动力学方程eq1可得:

从eq4来看,即使在缺失力传感器的情况下,等式的左右两边依然能体现阻抗特性,但由于 的存在会导致各个关节之间存在较大耦合,即我们在拖动机械臂某个轴时会导致其他轴的阻抗特性发生变化,这无疑是我们使用中不希望看到的。因此当我们在设计 时候,可以设计将 ,因此eq4将变化为:

此时eq5中的耦合项仅和关节角加速度有关,在绝大多数的实际应用中,阻抗控制一般都处于平稳的低速拖动状态,加速度的数值不大,因此可以有效地抑制耦合项的负面影响。从eq5来看,理论上来说即使不具备力传感器,阻抗控制依然可以从原理上实现,只不过会引入耦合的负面影响,且运动的动态性能越大,耦合的负面影响越大。

**4. **区别联系

对于阻抗与导纳控制的区别与联系,上文中已经概括性地提到相应的区别:阻抗控制是基于测量的位置来控制外力,而导纳控制则是基于测量的外力来控制位置,下面通过具体的控制方法来详细阐述具体的差别:

f568d92e009f77f47b5cc4256046be55.png

从图3的蓝图可以看到对于阻抗控制,外环控制器是输入位置输出力的阻抗控制器(位置控制器),所输出的力将通过逆动力学输出相应的位置信息给机器臂,同时该信息也反馈到阻抗控制器;而从图3的绿图可以看到对于导纳控制,外环控制器是输入力输出位置的导纳控制器(力控制器),所输出的位置信息需要再经过一层内环位姿控制器(位置控制器)来输出力信息,同样该力的信息要再经过逆动力学输出相应的位置信息给机器臂,同时该位置信息将反馈回到内环(和阻抗有区别)的位姿控制器;以上即为阻抗控制是基于测量位置来控制外力,而导纳控制则是基于测量外力来控制位置的从控制方法上的具体解释。

整体来说,阻抗与导纳控制从对被控对象的宏观控制效果而言,没有很明显的区别,都是动态地调整位置与外力之间的关系,使之呈现质量-阻尼-弹簧的二阶系统特性,甚至在很多学术文章的陈述中,会使用阻抗控制的概念来概括整个阻抗/导纳控制;从实际工程应用来看,阻抗控制的落地应用会更加丰富,一方面是因为其控制方法相较于导纳控制更加简洁,其次是因为机械臂需要与外界交互的环境往往呈现高阻抗特性(更适合使用阻抗控制),最重要的则是因为导纳控制需要明确的 即力传感器的信息反馈,对被控的对象提出了硬件配置的要求,而阻抗控制则在上文中已经做过相应的解释:在缺乏力传感器的情况下,在动态性能要求不高的场合,阻抗控制仍可实现。

四、结语

总结来说,阻抗与导纳控制是通过数学方法来动态地控制机器人输出位置与输出力的关系,使得机器人在正常运行的位置环中,能够根据外部力的大小与变化,动态自适应地去调整自己的位置轨迹,使得整体机器人能够呈现类似质量-阻尼-弹簧的物理柔性。

无论是从保护人类的碰撞检测功能,再到拖动示教中的低阻抗拖动功能,都是基于阻抗与导纳控制去使得机器人的运动“刚中带柔”,以达到仿生安全地与人类进行交互工作的目的。

54bf105fc864c24b017b013cfaee00ee.gif

5a4b6cd98ebc41a07844a3fd314e4d30.png


本文转载自: https://blog.csdn.net/pengzhouzhou/article/details/127780725
版权归原作者 小米技术 所有, 如有侵权,请联系我们删除。

“干货 | 阻抗与导纳控制:一种使机器人刚中带柔的控制方法”的评论:

还没有评论