【机器人基础】阻抗/导纳控制深度解析

之前写过一篇阻抗控制的文章,【机器人基础】机器人阻抗控制概念写的比较浅也不是很专业,最近上了桂凯博士的动力学课程之后有了更深入的认识,认真整理总结了一下,这次详细地分析一下阻抗/导纳控制。

1、柔顺控制

柔顺控制概念对于理解阻抗/导纳控制非常重要,所以单独做一节来讨论。首先大家要明确一点,位置控制是有局限性的,在位置精度需求很高且环境刚度很大的情况下会出问题,为什么呢?因为位置一旦有偏差,环境的刚度很大,再加上机器人本身极大的刚度,硬碰硬,两者之间会产生很大的力,这不论对机器人还是环境都会带来很大的损伤。邵总写过机器人开门的文章,可以去看看,会有帮助的。阻抗控制的实现方法应该是多种多样的,请能否概述一下大概有几种方法
柔顺控制光看名字就能想象出来了,机械臂正在移动,如果突然来了一个外力,机器人将顺着这个外力运动,外力撤销之后,再回复到之前的状态。就像一个人突然被推了一下,人会产生一个惯性运动,这叫做柔顺
再往细点讲,为什么位置控制它不柔顺呢?看下面这张带干扰的位置控制框图,PID控制器的一个功能是消除扰动,外力加上来想要改变机器人原本运动的位置,可PID控制器获得反馈信号之后,输出的效果是让抵消外力的干扰,这两者之间是一个对抗的关系,这就不柔顺了!,在其他很多控制问题中是应该要尽可能快速消除扰动信号的, 但如果机器人的任务中需要做到柔顺,这不是一个好的结果。
在这里插入图片描述

2、阻抗/导纳控制的设计目的

阻抗/导纳控制在有些论文里面会混作一谈,都称为阻抗控制,因为阻抗控制和导纳控制有相同的地方,环境接触力(或者说外力)和位置偏差之间满足公式(2)的关系,这个公式反映了阻抗控制器(这里暂时把阻抗/导纳都称为阻抗控制器)的阻抗特性。控制器就是要根据1)对象模型和2)阻抗特性来设计,这也是阻抗/导纳控制设计的根本目的(设计控制器/控制率) M d , D d , K d M_d,D_d,K_d Md,Dd,Kd代表期望阻抗参数,分别是惯性特性、阻尼特性和刚度特性,通过调节这三个参数,从而改变阻抗的效果,或者可以理解成改变机器人末端的柔顺度。
M d e ¨ + D d e ˙ + K d e = F e x t ( 2 ) \begin{aligned} M_d \ddot e+D_d \dot e+K_de=F_{ext} (2) \end{aligned} Mde¨+Dde˙+Kde=Fext2
e = x − x 0 \begin{aligned} e = x-x_0 \end{aligned} e=xx0

举一个具体的案例,让下图的机器人去按压海绵,如果设置海绵表面的位置为 x 0 x_0 x0,当机械臂挤压海绵的时候,产生了接触力 F e x t F_{ext} Fext。如果我拉着机械臂往下摁,接触力会变大, 对于导纳控制的策略而言,误差 e e e会变大,期望的位置也会随之变大,位置控制环里面有了新的控制目标。
在这里插入图片描述
阻抗/导纳控制的核心思想可以用公式(2)来表达,外力和位置偏差是一个动态的关系,以此来达到柔顺的目的。

下面以一个实际的案例来分析,考虑一个单自由度系统,它的动力学模型可以表示为:
m x ¨ = F + F e x t ( 1 ) \begin{aligned} m \ddot x=F+F_{ext}(1) \end{aligned} mx¨=F+Fext1

F F F代表控制器计算出来的输出力, F e x t F_{ext} Fext是外力或者说是机器人与环境之间的接触力(external force)。先记一下,后面的仿真要拿这个系统来分析。

3、阻抗控制

为了使得位置偏差和外力之间呈柔顺的关系,结合公式(1)和公式(2),计算出阻抗控制率:
F = ( m M d − 1 ) F e x t + m x ¨ 0 − m M d ( D d e ˙ + K d e ) ( 3 ) \begin{aligned} F=(\frac{m}{M_d}-1)F_{ext}+m\ddot x_0-\frac{m}{M_d}(D_d\dot e+K_de) (3) \end{aligned} F=(Mdm1)Fext+mx¨0Mdm(Dde˙+Kde)(3)

阻抗控制根据期望位置 x 0 x_0 x0,实际位置x和外力 F e x t F_{ext} Fext算出输出力F,输出力F作用在对象模型上,可以看到阻抗控制的内部回路是一个力环,而接下来看到的导纳控制它的内部回路是一个位置环。

阻抗控制框图

导纳控制

导纳控制的位置控制器用一个PD控制器来实现
F = k p ( x d − x ) − k d x ˙ ( 4 ) \begin{aligned} F=k_p(x_d-x)-k_d\dot x (4) \end{aligned} F=kp(xdx)kdx˙4

结合公式(4)和公式(1),结合公式(2)和公式(4)并将 x x x替换成 x d x_d xd(假设位置控制内环实现无静差控制,那么 x = x d x=x_d x=xd),得到完整的动力学公式。
m x ¨ + k d x ˙ + k p ( x − x d ) = F e x t ( 5 ) \begin{aligned} m\ddot x+k_d\dot x+k_p(x-x_d)=F_{ext}(5) \end{aligned} mx¨+kdx˙+kp(xxd)=Fext5

M d ( x ¨ d − x ¨ 0 ) + D d ( x ˙ d − x ˙ 0 ) + K d ( x d − x 0 ) = F e x t ( 6 ) \begin{aligned} M_d(\ddot x_d-\ddot x_0)+D_d(\dot x_d-\dot x_0)+K_d(x_d-x_0)=F_{ext}(6) \end{aligned} Md(x¨dx¨0)+Dd(x˙dx˙0)+Kd(xdx0)=Fext6

从导纳控制框图可以看到导纳控制的期望位置不是固定的,而是根据公式(6)计算得到的。
导纳控制框图

程序仿真

以导纳控制为例,尝试在matlab里面实现,假设 x 0 x_0 x0为阶跃响应,其他相关参数如下:
在这里插入图片描述
考虑到模型的不确定性,阻抗特性中的 M d M_d Md使用 m ^ \hat m m^代替而不直接使用 m m m。另外考虑到动力学模型中摩擦力的影响,增加了两个参数 C v C_v Cv(粘性摩擦力系数)和 F c F_c Fc(库伦摩擦力系数),摩擦力模型为:
F f = − s i g n ( x ˙ ) ( c v ∣ x ˙ ∣ + F c ) F_f = -sign(\dot x)(c_v \left| \dot x \right| +F_c) Ff=sign(x˙)(cvx˙+Fc)
设外力 F e x t = − k e ( x − x 0 ) F_{ext}=-k_e(x-x_0) Fext=kexx0),取 k e = 3000 k_e=3000 ke=3000代表环境对象的刚度,此时模型的动力学方程为: m x ¨ = F + F e x t + F f m\ddot x=F+F_{ext}+F_f mx¨=F+Fext+Ff

simulink框架如下:
在这里插入图片描述
导纳控制器Admittance_ctrl的sfunction如下(只展示mdlDerivatives中的内容)

mhat = 0.8; % 单位:kg
% 环境刚度
ke = 300; % 单位:N/m
% 阻抗参数
Md = mhat; % 单位:kg
Kd = 100; % 单位:N/m
Dd = 2*0.7*sqrt(Kd*Md); % 单位:N*s/m
% 设定值
X0 = u(1); dX0 = u(2); ddX0 = u(3); 
X = u(4);
% 外力
Fext = -ke*(X-X0);
% Xd微分方程
Xd = x(1);
dXd = x(2);
ddXd = 1/Md*(Fext - Kd*(Xd-X0) - Dd*(dXd-dX0)) + ddX0;
sys(1) = dXd;
sys(2) = ddXd;

位置控制器Position_ctrl的sfunction如下(只展示mdlOutputs中的内容)

%PD控制系数
kp = 1e3; % 单位:N/m
kd = 2*0.7*sqrt(kp*m); % 单位:N*s/m
Xd = u(1); 
X = u(3);  dX = u(4);
% 输出力
F = kp*(Xd-X) - kd*dX;
sys = F;

模型Plant的sfunction如下(只展示mdlOutputs中的内容)

% 质量
m = 1.0; % 单位:kg
% 弹簧刚度
ke = 300; % 单位:N/m
% 粘性系数和库仑摩擦系数(coefficients of viscous and Coulomb friction)
cv = 1.0; % 单位:N*s/m
Fc = 3.0; % 单位:N
X0 = 1;
F = u; 
% 外力
Fext = -ke*(x(1)-X0);
% 摩擦力
Ff = -sign(x(2))*(cv*abs(x(2))+Fc);
% 系统动力学,考虑了外力和摩擦力,和工业机器人动力学模型逻辑一致
S = (F + Fext + Ff)/m;  
sys(1) = x(2);
sys(2) = S(1);

仿真结果展示如下:
在这里插入图片描述

参考文献

Unified Impedance and Admittance Control
论文百度云链接
链接:https://pan.baidu.com/s/1HBJtXriKg3BbQJulXhtz5w
提取码:yoh2

  • 82
    点赞
  • 554
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
### 回答1: 导纳控制是一种电力系统稳定控制的方法,它利用导纳(admittance)来描述电力系统的动态特性。在导纳控制中,通过改变电力系统的导纳(admittance)来控制电力系统的稳定性。Simulink是一款数学模型和仿真工具,可以用于仿真和分析各种系统的性能,包括电力系统。 在Simulink中,导纳控制可以通过建立电力系统的模型来实现。模型中包含系统的各种元件和连线,包括发电机、负载和电缆等。这些元件可以通过Mathworks提供的Simulink库进行建模。 使用导纳控制的过程中,我们需要确定一个目标导纳(target admittance),以及实时的系统导纳(system admittance)。目标导纳可以通过根据系统负荷的变化来调整,从而控制电力系统的稳定性。同时,为了保持系统的稳定性,我们还需要设计适当的反馈控制器来实现目标导纳的维持。 总之,Simulink提供了一种快速且强大的仿真工具,可以用于电力系统模型的开发和导纳控制的实现。我们可以通过使用Simulink库,建立电力系统模型,并使用导纳控制实现对电力系统稳定性的控制。 ### 回答2: 导纳控制是一种用于实现电力系统稳定性的控制方法。它是基于瞬时功率理论和电力系统稳定分析理论的电力系统控制方法。 Simulink是一款基于图形化编程的仿真工具,可以有效地模拟各种系统,而导纳控制可以通过Simulink来进行仿真。在Simulink中,可以将电力系统建模为一个模块化的系统,并与控制器相连。 在导纳控制中,控制器的作用是根据系统的输入和输出,计算出导纳控制信号来控制电力系统的稳定性。在Simulink中,可以使用不同的控制器来实现导纳控制,如PID控制器,模糊控制器等。 通过Simulink进行导纳控制仿真,可以有效地评估导纳控制系统的性能和稳定性。此外,Simulink还可以用于分析导纳控制系统的响应和优化控制器参数,从而提高系统的控制精度和稳定性。 总之,导纳控制Simulink是一种非常有效的仿真方法,可以帮助电力系统工程师评估导纳控制系统的性能和稳定性,并对控制器参数进行优化,提高系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值