主管QQ:站内信联系

关于机械臂的阻抗导纳控制、混合力位控制与力传感器2023-10-25 20:59

  这篇文章会从实际的工程应用角度给大家概括性地介绍在机械臂上常见使用到的力交互控制方法,即阻抗/导纳控制、混合力位控制与力传感器,希望能给大家一个清晰而整体的认识,这边要特地感谢@王腾飞对本文的修改提升,也欢迎各位同学讨论指正,和大家一起学习进步。

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

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

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

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

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

  :是指在机械臂的末端加装相应的柔性(弹簧)装置,详情可参见图2左,在已知装置刚度

  :是指人为地将机械臂末端的目标位置设计在相应目标物之后,机械臂为了到达不可到达的目标位置而不可避免地与目标物发生力交互,详情可参见图2右;(这边需要特别注意的是:对于active compliance control这个名词概念 ,相关混淆较多,很多文献会将下文提到的阻抗控制或者各类涉及力控的奇技淫巧统称为active compliance control,本文即指上文提及的特定方法)

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

  在上文介绍到了其他几种力控方法的不足之后,我们来介绍本文的重点——阻抗与导纳控制。阻抗与导纳控制在知乎上已经有很多非常细致的回答,我这边主要做下全面性的梳理与总结,首先有两个非常重要的概念:

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

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

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

  从机器人工程应用的角度出发,我们在这里希望控制的是上文提到各关节中的输出扭矩\tau,在阻抗控制的基础上,各个关节的输出特性将不再是光滑无摩擦的旋转副,而是需具备相应的阻抗特性,因此:

  其中q_{d}为关节的目标角度位置,\ddot{q_{d}}为关节目标角加速度,\tilde{q}为角度位置差(q_{d}-q);M_{d}为质量矩阵,D_{d}为阻尼矩阵,K_{d}为刚度矩阵,这三个矩阵均为A阶方阵(A为机械臂的自由度数目),且一般为对角与正定矩阵,由使用者所设计定义;等号右侧的第1项为eq1的机器人动力学方程,描述的为机器人在沿某条设计轨迹运动时所需要的关节输出扭矩;等号右侧第2项为使机器人呈现相应的阻抗特性而所需的关节输出扭矩;等号右侧第3项为特意设计的用来闭环补偿的力,将惯性阵变成期望的M_{d};

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

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

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

  : 机器人需开放底层力矩环控制,大部分工业机器人和一部分协作机器人出于用户安全的考虑,可能是不开放力矩环的,新兴的协作机器人厂家一般都有相应的支持;

  :需要精确的机器人动力学参数(诸如质心位置、连杆惯量、转子惯量与各类摩擦力等)与位姿信息等,一般可以通过相应的动力学参数辨识方法较好地标定出来;

  等:需要机器人各关节角度、角速度与角加速度的信息,这个对于大部分机器人硬件都能得到很好的支持;

  :需要机器人搭载相应的力传感器,力传感器在这边也是一个笼统和复杂的概念,会在下文中做具体介绍;

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

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

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

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

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

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

  混合力位控制从技术理论上来说,是阻抗/导纳控制的基础,相应的阻抗/导纳控制都是在混合力位控制的基础上改进衍化而来,不过由于混合力位控制在机器人实际工程中的广泛应用(尤其在工业机器人抛光与打磨的场景),所以也特地拿出来做个简要的介绍。

  概括性地来说,混合力位控制是将末端执行器的位置与力拆分到两个独立的解耦子空间来作处理,在实际应用中一般会将这两个独立子空间设定为与物体接触的切向面作为位置空间,法向面作为力空间(符合实际工业应用中抛光与打磨的场景需求)。这边值得一提的是,混合力位控制一般需要求在机械臂末端执行器上安装多维力/力矩传感器,相应的细节会在下一个章节中具体介绍。

  具体来说,混合力位控制的基本思想是将需要力反馈的任务约束与控制器的设计联系起来,机械臂各关节的运动都会对最终末端执行器的各方向的位姿/力造成影响,这边各关节的位置可以写成:

  其中q_{i}为第i个关节的角度,\Omega()指逆运动学函数,X_{j}指机械臂末端执行器的第j个位姿;同理对于各个关节的力信息,每个关节的出力都会对最终末端的出力造成影响,我们需要控制的各个关节的输出扭矩可以写成:

  其中\tau_{i}为第i个关节所需要控制输出的力矩,\Delta f_{j}为末端执行器在第j个自由度方向的外力差(期望力-测量力),\Delta x_{j}为末端执行器在第j个方向的位置差(期望位置-测量位置),\Gamma_{ij}和\Psi_{ij}是相应的力与位置补偿函数,s_{j}为相应约束矩阵S的第j项;这边的约束矩阵S(Compliance Selection Matrix)是一个二进制的N元组(N为机械臂的关节自由度数目),描述的为机械臂末端执行器在空间内是受到外力控制约束(s_{j}=1)还是受到位置控制约束(s_{j}=0);

  比如在最常见的末端打磨抛光的应用场景中,即假设我们只需要考虑约束z轴方向的力(打磨平面法向力),其他方向我们仅约束位置轨迹,那么对于末端笛卡尔空间的约束矩阵S即为:

  其实对于混合力位控制之前所提的将位置和力拆分到两个独立的解耦子空间来处理的含义,从上文所定义的约束矩阵S即可所见一二,约束矩阵中的所赋值的每项均为完全解耦的空间(包括translation的x,y,z与orientation的\alpha,\beta,\gamma),且所附的值为独立的1(力约束)或0(位置约束)。下图4是混合力位控制的一个基本控制方法:

  混合力位控制存在的缺点也很明显:如果我们希望在机器人运动的方向上同时也控制相应的力,混合力位控制从其原理特性上就无法支持,基于此就衍生出了上文提到的阻抗/导纳控制。下面是一个使用Kuka iiwa做混合力位控制的非典型demo(非传统的工业打磨应用),可以很容易观察到在向下的桌面法向做力控制,在桌面的切向做位置控制。

  针对上文提到的机械臂力交互控制的各类方法,我们可以看到力传感器一直都在扮演一个重要的角色:比如说直接力控和混合力位控制从原理上就强依赖于力传感器,而间接力控(阻抗/导纳)要做到较好的力控效果也需要力传感器的反馈信息,从数学模型的意义而言,力传感器的引入是为了使间接力控(indirect force control)呈现线性与解耦合的特征。在这一部分将给大家简单梳理一下当前机械臂所使用的各类力传感器的种类与相对应的性能利弊:

  首先在力传感器的分类中,第一个大维度是力传感器集成在机械臂的位置分类:即机器臂的末端、基座还是关节内,最为常见的是集成在机器臂的末端和关节内,即末端力传感器和关节力传感器,其相应的性能对比可参见下表格:

  实际上从上表中我们可以看到,末端力传感器对处理笛卡尔空间的力有着很大的性能优势,因此大部分机器臂在做一些涉及末端精确打磨、抛光或者去毛刺的工艺时,都会采用加装末端力传感器的方式,不过末端力传感器的价格比较昂贵,如tier1级别的ATI,基本单价都要做到30-60k,国产的末端力传感器一般价格有竞争力的可以做到10k级别,另外一点的重要缺陷在于末端力传感器缺乏对机械臂轴空间内力的感知能力。

  而关节力传感器的主要优势在于处理轴空间力的能力与较低的价格,其从传感器本身的设计难度要远低于末端6维力传感器,因此即使一套整机单维力传感器(6/7件)的价格也一般也会低于相同级别的6维力传感器(1件),但其主要的性能缺陷在于精确处理笛卡尔空间力的能力,尤其在涉及高频动态与大负载的工况。

  故从力传感器的角度而言,对于加装末端6维力传感器的工业机器人和集成关节力传感器的协作机器人,去陈述协作机器人的力控特性要优于工业机器人的简单论断是不严谨的,更多的是要看具体的力控场景,实际上在现阶段的绝大多数落地应用中,笛卡尔空间的力控场景是远多于轴空间内的力控场景的。

  针对末端的6维力传感器,一般均采用基于应变片原理&SMT工艺的力矩传感器,最具有代表性的即为上文提到的ATI。而针对关节上的力矩测量方案,目前主流方法主要为以下三类:电流环、应变片式力矩传感器及电磁式力矩传感器;

  图5. 常见的三类关节力矩测量方法:电流环、应变式力矩传感器与电磁式力矩传感器

  基于电机中的电流值,通过电流-扭矩系数、减速比与摩擦补偿系数等计算关节扭矩

  基于材料受力后的微小形变,通过悬臂梁上应变片阻值的改变,带来电压信号的改变,再通过电压-扭矩系数等计算关节扭矩

  基于材料受力后的微小扭转形变,通过磁编码器或霍尔等原理测量该扭转值,再通过材料的抗扭截面系数计算关节扭矩

  1. 力测量精度低,串联复杂减速箱传动环节,静摩擦力建模难度高,在高减速比关节中测量微小扭矩不灵敏;

  上表即概括了3类关节内力矩测量方案的原理及利弊,从作者的认知角度而言,现阶段还并不具有压倒性优势的解决方案存在,更多的是针对不同应用场景的因地制宜。

  如果仅从eq2到eq3的公式推导角度而言,是完全可以拿走H(q)的,这边保留H(q)主要是为了将实际角加速度处理成期望角加速度,实际角加速度在用户交互拖动中有可能会很大,而期望角加速度一般会下发的比较平滑,有H(q)的存在会使电机出力\tau不容易受实际角加速度变化影响,使得电机出力更加平滑,提高整体系统的稳定性。