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

1、柔顺控制

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

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

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

举一个具体的案例,让下图的机器人去按压海绵,如果设置海绵表面的位置为x0x_0x0​,当机械臂挤压海绵的时候,产生了接触力FextF_{ext}Fext​。如果我拉着机械臂往下摁,接触力会变大, 对于导纳控制的策略而言,误差eee会变大,期望的位置也会随之变大,位置控制环里面有了新的控制目标。

阻抗/导纳控制的核心思想可以用公式(2)来表达,外力和位置偏差是一个动态的关系,以此来达到柔顺的目的。

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

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

3、阻抗控制

为了使得位置偏差和外力之间呈柔顺的关系,结合公式(1)和公式(2),计算出阻抗控制率:
F=(mMd−1)Fext+mx¨0−mMd(Dde˙+Kde)(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=(Md​m​−1)Fext​+mx¨0​−Md​m​(Dd​e˙+Kd​e)(3)​

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

导纳控制

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

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

Md(x¨d−x¨0)+Dd(x˙d−x˙0)+Kd(xd−x0)=Fext(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¨d​−x¨0​)+Dd​(x˙d​−x˙0​)+Kd​(xd​−x0​)=Fext​(6)​

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

程序仿真

以导纳控制为例,尝试在matlab里面实现,假设x0x_0x0​为阶跃响应,其他相关参数如下:

考虑到模型的不确定性,阻抗特性中的MdM_dMd​使用m^\hat mm^代替而不直接使用mmm。另外考虑到动力学模型中摩擦力的影响,增加了两个参数CvC_vCv​(粘性摩擦力系数)和FcF_cFc​(库伦摩擦力系数),摩擦力模型为:
Ff=−sign(x˙)(cv∣x˙∣+Fc)F_f = -sign(\dot x)(c_v \left| \dot x \right| +F_c)Ff​=−sign(x˙)(cv​∣x˙∣+Fc​)
设外力Fext=−ke(x−x0)F_{ext}=-k_e(x-x_0)Fext​=−ke​(x−x0​),取ke=3000k_e=3000ke​=3000代表环境对象的刚度,此时模型的动力学方程为:mx¨=F+Fext+Ffm\ddot x=F+F_{ext}+F_fmx¨=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

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

  1. 【机器人基础】机器人阻抗控制概念

    更新:(这篇文章个人不是太满意,当时写的时候才刚刚开始学习机器人理论),新写了一篇阻抗导纳控制,讲得会更深入更透彻一些,也举了一个具体的案例分析,建议结合那篇文章一起看. https://blog.c ...

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

    " 本期技术干货,我们邀请到了小米机器人实验室工程师任赜宇,和大家分享在机器人力控方法中最为经典的一类控制方法,即阻抗与导纳控制. " 一.前言 在传统机器人尤其是工业机械臂的应用 ...

  3. 彻底搞懂阻抗控制、导纳控制、力位混合控制

    彻底搞懂阻抗控制.导纳控制.力位混合控制 本人在学习的机械臂力控时,始终觉得这三个概念太过抽象,不能很好理解,读了很多博客和文献,仍然感觉没有参透,今天在读李正义博士的毕业论文<机器人与环境间力 ...

  4. 机器人控制:阻抗控制、导纳控制的理解

    由于现实中存在误差,包括系统性的或人为的,所以精准控制很难实现. PID最实用,但问题也多具体就不展开了. 想象机器人控制单元为一个弹簧系统,那么 阻抗控制可以理解为知道目标位置和测量位置之间的误差, ...

  5. 直播预告 | 硅步机器人携手Shadow Robot原厂技术大咖 深度解析遥操作系统

    ​ 硅步机器人将携手Shadow Robot专家,于2022年1月20日16:30-17:30给您带来Shadow灵巧手以及Shadow Robot遥操作系统的深度解析,带您一同探索遥操作系统的&qu ...

  6. [深蓝学院]c++基础与深度解析

    c++基础与深度解析 第二章 对象与基本类型 从初始值/赋值语句说起.类型讲起

  7. 部分仍在编辑文章 - Python基础专题 - 深度解析python中的赋值与拷贝

    深度解析python中的赋值与拷贝 jcLee95 的 CSDN 博客:https://blog.csdn.net/qq_28550263?spm=1011.2124.3001.5343 邮箱 :29 ...

  8. 机械臂力控----积分自适应导纳控制

    机械臂力控----积分自适应导纳控制 原理讲解 源代码 该控制算法为我在传统导纳和自适应导纳的基础上改进的算法,其优点是解决了传统导纳稳态误差问题,克服了自适应导纳离散非线性的题,同时该算法通过参数的 ...

  9. 【AIGC】Visual ChatGPT 视觉模型深度解析

    欢迎关注[youcans的AGI学习笔记]原创作品 [AIGC]Visual ChatGPT 视觉模型深度解析 1. [Visual- ChatGPT]火热来袭 2. [Visual-GPT]操作实例 ...

最新文章

  1. 阿里二面:Redis 中的 AOF 文件太大了怎么办?
  2. riverplot绘制桑基图
  3. button和sumbit提交表单的区别
  4. ASP.NET Core管道深度剖析[共4篇]
  5. Java GregorianCalendar setTimeZone()方法与示例
  6. [转]Hspice 语法手册
  7. 201671010133 2016-2017-2 《java程序设计》 初学java!
  8. React 组件开发 传参(详解)。
  9. C程序-将华氏温度转换为摄氏和开氏
  10. php开源微博框架,记事狗微博开源代码学习笔记:微博话题列表
  11. android 闪屏图片,Android的闪屏图像尺寸,以适应所有设备Android的闪屏图像尺寸,以适应所有设备(Andro...
  12. 如何把照片压缩到20k一下_如何将一寸照片压缩到20k以内?
  13. 笔记本电脑数据怎么恢复?笔记本电脑数据恢复用什么工具?
  14. 833计算机专业基础是哪本书,想问一下计算机考研统考中,有计算机专业基础综合408和833,有什么区别呢?比如今年西电就是833。哪里可...
  15. 已经围上为何不算目_有答案的小学语文教师教材过关考试模拟试卷1
  16. 连接查询--嵌套查询
  17. 【C语言】C语言库函数
  18. EXCEL处理------合并多个excel内多个sheet
  19. xbox虚拟服务器,《微软模拟飞行》体积减半,主机版也快到来了
  20. 位列第五大生产要素,大数据该如何突破隐私安全魔咒?

热门文章

  1. python编程midi键盘按键错乱_键盘按键错乱有以下几种相应的解决办法
  2. 寒江独钓 第二章(3)Hook分发函数和回调函数
  3. mysql -hlocalhost -uroot -p_MySQL数据库的操作(01)--- MySQL的安装以及与idea的连接
  4. 《Better Performance at Lower Occupancy》解读
  5. elasticsearch从入门到入门系列(四)---搜索高级使用
  6. 中止执行后超过2年_执行中止。债权人是否两年内都要申请执行一次。如果中止执行两年内不申请执行,是否都再也执行不了...
  7. 中止执行后超过2年_执行期限过了两年怎么处理
  8. UV系和相机坐标系相互转换
  9. 2018美团点评编程题第一题
  10. linux4k分辨率,ubuntu18.04设置支持4k分辨率