基于位置的阻抗控制(一)

目的

本文主要介绍一个机器人的阻抗控制器的实现。阻抗控制作为一种与外部环境交互的控制算法,它主要借鉴了bond图的思想,然后假定系统处于平衡状态,从而对系统进行线性化操作,使线性叠加成为可能。

bond图

这个我主要看的是Das, Shuvra. Mechatronic modeling and simulation using bond graphs. New York: CRC Press, 2009.这本书的前几章,感觉只要熟悉了flow effort 的概念和不同的基本元件就够了。

过程

bond图主要描述功率在同一系统不同子环节中传递过程,在它的描述中,一个系统的功率可以由 floweffort的乘积得到。而在机械系统中 flow 为速度或角速度,effort 为力或力矩。然后存在几种元件去执行传递,比如弹簧(电容),它接收位移(速度的积分)传化为力,阻尼(电阻)纯消耗功率电,惯性(电感)接收动量(力的积分)转化为速度,然后注意他们连接点是同一个量(floweffort)就行。

模型

bond图可以得到,弹簧,阻尼和惯性都可以与力(effort)关系,然后通过线性叠加(这是阻抗控制的假定),我们可以得到一个二阶的mass-spring-damper系统来表示外力和。所以一个典型的机器人与环境交互的模型如下

我们假定\( f_{e} \) 为机器人末端给环境的力,图中的\( m_{e} \), \( k_{e} \) 和\( d_{e} \)分别表示为环境的惯性,刚性和阻尼系数,同理\( m_{m} \), \( k_{m} \)和\( d_{m} \)分别表示为机器人的惯性,刚性和阻尼系数。然后\( X \)与 \( y \)表示坐标系(做阻抗控制时,为了方便,最好有一个坐标系的轴垂直于接触面)。\( x_{s} \)为推杆末端的坐标,\( x_{sc} \)为机器人与环境刚接触时的推杆的坐标(此时为平衡状态),同理\( x_{e} \)为机器人与环境刚接触时机器人末端的坐标,\( x \)为机器人末端坐标。

几个公式

$$ f_{e} = m_{e}\ddot{x}+d_{e}\dot{x}+k_{e}(x-x_{e}) $$
\( f_{e} \) 为机器人末端给环境的力, 所以等式右边为环境的变形所叠加的力,其中 \( k_{e}(x-x_{e}) \)为它的静态部分,剩下的为动态部分(据说省略动态部分,并不会影响系统的稳定状态!?)
$$ f_{m} = -f_{e} =m_{m}\ddot{x}+d_{m}(\dot{x}-\dot{x_{s}})+k_{m}(x-x_{s}) $$
\( f_{m} \) 为环境给机器人末端的力, 所以等式右边为机器人末端的变形所叠加的力,