阻抗控制(一)
迪丽瓦拉
2025-05-31 10:54:19
0

#阻抗控制 #导纳控制
详细可参考书本:《现代机器人学:机构规划与控制》第11.7节。

阻抗的定义

在刚性环境中理想的[[力、运动-力混合控制|运动-力混合控制]],需要极端的机器人阻抗(impedance),阻抗将端点的运动变化作为干扰力的函数来进行表征

理想的运动控制对应于高阻抗(由于力扰动而引起的运动变化很小),而理想的力控制对应于低阻抗(由于运动干扰而引起的力的变化很小)。例如用作触觉模拟器的机器人:
mx¨+bx˙+kx=fm\ddot{x}+b\dot{x}+kx=fmx¨+bx˙+kx=f
![[Attachments/Pasted image 20230311102328.png]]

图1 弹簧阻尼系统表示机器人

如果{m,b,k}\{m,b,k\}{m,b,k}中的一个或多个参数(一般指bbb或kkk)很大,则机器人呈现高阻抗;同样地,如果这些参数都很小,称机器人呈现低阻抗。
更正式的,对上式进行拉氏变换得到,
(ms2+bs+k)X(s)=F(s)(ms^2+bs+k)X(s)=F(s) (ms2+bs+k)X(s)=F(s)
阻抗由位置扰动到力的传递函数Z(s)=F(s)/X(s)Z(s)=F(s)/X(s)Z(s)=F(s)/X(s)表示。因此,阻抗取决于频率,并且其低频响应由弹簧支配,而高频响应由质量支配。而导纳Y(s)Y(s)Y(s)是阻抗的倒数:Y(s)=Z−1(s)=X(s)/F(s)Y(s)=Z^{-1}(s)=X(s)/F(s)Y(s)=Z−1(s)=X(s)/F(s)。

  • 好的运动控制器→高阻抗(低阻纳)→ΔX=YΔF\Delta X=Y\Delta FΔX=YΔF→力扰动ΔF\Delta FΔF仅能产生很小的位置扰动ΔX\Delta XΔX;
  • 好的力控制器→低阻抗(高导纳)→ΔF=ZΔX\Delta F=Z\Delta XΔF=ZΔX→运动扰动ΔX\Delta XΔX仅能产生很小的力扰动ΔF\Delta FΔF。

阻抗/导纳控制目标

阻抗控制是为了实现如下的任务空间行为:
Mx¨+Bx˙+Kx=fext(11.64)M\ddot{x}+B\dot{x}+Kx=f_{ext} \tag{11.64} Mx¨+Bx˙+Kx=fext​(11.64)
式中,x∈Rnx\in \mathbb{R}^nx∈Rn是在最小坐标集中的任务空间位形,如x∈R3x\in \mathbb{R}^3x∈R3;MMM,BBB,KKK,是由机器人模拟的正定虚拟质量、阻尼和刚度矩阵,并且fextf_{ext}fext​是施加到机器人的力,该力可能由用户施加。MMM,BBB与KKK的值可能会根据虚拟环境中的位置而改变,以便表示不同的物体,但我们所关注的是恒定量值情况。
上述行为可以使用运动旋量和力旋量来进行替代实现:
Fext→fext\mathcal{F}_{ext}\rightarrow f_{ext}Fext​→fext​,V→x˙\mathcal{V}\rightarrow \dot{x}V→x˙,V˙→x¨\dot{\mathcal{V}}\rightarrow \ddot{x}V˙→x¨,Sθ→x\mathcal{S}\theta\rightarrow xSθ→x。

阻抗/导纳控制型机器人
阻抗控制型机器人(impedance controlled):机器人感知端点运动x(t)x(t)x(t)并控制关节力矩和力来生成−fext-f_{ext}−fext​,其为显示给用户的力,即实现了从运动到力的传递函数Z(S)Z(\mathcal{S})Z(S);
导纳控制型机器人(admittance controlled):机器人使用安装在腕部的力-力矩传感器来感知fextf_{ext}fext​,并控制其运动以作出响应,即实现了从力到运动的传递函数Y(S)Y(\mathcal{S})Y(S).

阻抗控制算法

在阻抗控制算法中,编码器、转速计、甚至可能包括加速度计,被用于估计关节和
端点的位置、速度、甚至加速度。通常阻抗控制下的机器人并不在腕部配备力-力矩
传感器,而是依靠它们精确控制关节扭矩的能力来呈现适当的末端执行器力−fext-f_{ext}−fext​,如为了实现式(11.64)的任务空间行为,根据[[力、运动-力混合控制#力控制]]可知,机器人对外部环境的施加力−fext-f_{ext}−fext​可以表示为−(Mx¨+Bx˙+Kx)-(M\ddot{x}+B\dot{x}+Kx)−(Mx¨+Bx˙+Kx),此时机器人的任务空间动力学方程可以写为:
F=Λ~(θ)x¨+η~(θ,x˙)⏟用于动力学补偿−(Mx¨+Bx˙+Kx)⏟用于产生对环境的作用力\mathcal{F} =\underset{\text{用于动力学补偿}}{\underbrace{\tilde{\Lambda}\left( \theta \right) \ddot{x}+\tilde{\eta}\left( \theta ,\dot{x} \right) }}\underset{\text{用于产生对环境的作用力}}{\underbrace{-\left( M\ddot{x}+B\dot{x}+Kx \right) }} F=用于动力学补偿Λ~(θ)x¨+η~​(θ,x˙)​​用于产生对环境的作用力−(Mx¨+Bx˙+Kx)​​
该式即可以看作基于前馈控制的阻抗控制律。

导纳控制算法

在导纳控制算法中,由腕部测力传感器来测量用户施加的力fextf_{ext}fext​,同时机器人以满足式(11.64)的末端执行器加速度进行响应。一种简单的计算末端执行器的期望加速度x¨d\ddot{x}_dx¨d​的方法可采用:
Mx¨d+Bx˙+Kx=fextM\ddot{x}_d+B\dot{x}+Kx=f_{ext}Mx¨d​+Bx˙+Kx=fext​
式中,(x,x˙)(x,\dot{x})(x,x˙)是当前状态,根据上式可得x¨d=M−1(fext−Bx˙−Kx)\ddot{x}_d=M^{-1}(f_{ext}-B\dot{x}-Kx)x¨d​=M−1(fext​−Bx˙−Kx).
根据正向运动学x=f(θ)x=f(\theta)x=f(θ),[[开链机器人的静力学#1. 雅可比矩阵|雅可比矩阵]]为∂f(q)∂q\frac{\partial \boldsymbol{f}\left( \boldsymbol{q} \right)}{\partial \boldsymbol{q}}∂q∂f(q)​,因此有
x˙=J(θ)θ˙x¨=J(θ)θ¨+J˙(θ)θ˙\begin{aligned} \dot{x}&=J\left( \theta \right) \dot{\theta}\\ \ddot{x}&=J\left( \theta \right) \ddot{\theta}+\dot{J}\left( \theta \right) \dot{\theta}\\ \end{aligned} x˙x¨​=J(θ)θ˙=J(θ)θ¨+J˙(θ)θ˙​
所需的关节加速度θ¨d\ddot{\theta}_dθ¨d​可通过下式计算:
x¨=J(θ)θ¨+J˙(θ)θ˙⇒θ¨d=J†(θ)(x¨−J˙(θ)θ˙)\ddot{x}=J\left( \theta \right) \ddot{\theta}+\dot{J}\left( \theta \right) \dot{\theta}\Rightarrow \ddot{\theta}_d=J^{\dagger}\left( \theta \right) \left( \ddot{x}-\dot{J}\left( \theta \right) \dot{\theta} \right) x¨=J(θ)θ¨+J˙(θ)θ˙⇒θ¨d​=J†(θ)(x¨−J˙(θ)θ˙)
再进一步使用逆动力学计算关节力和力矩指令τ\tauτ。

阻抗控制器测量末端执行器的运动,并产生终点力以模拟质量-弹簧-阻尼系统。导纳控制器测量末端执行器的力,并产生终点运动。

相关内容