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

本人在学习的机械臂力控时,始终觉得这三个概念太过抽象,不能很好理解,读了很多博客和文献,仍然感觉没有参透,今天在读李正义博士的毕业论文《机器人与环境间力/位置控制技术研究与应用》时豁然开朗,感觉逐渐理解了一切,因此写下这篇博客,帮助和我一样的萌新们。

我们为什么需要柔顺控制?

普通的位置控制,是控制机器人末端到指定的地点,这种控制是说一不二的,让机械臂向前运动1cm,就是运动1cm,没有商量的余地。这种控制在涉及到接触作业时就会产生麻烦,因为现实环境是充满各种误差的,位置上很小的误差,经过大刚度的放大会产生很大的接触力。例如,一个作业需要机器人向前1cm接触到前方固定的玻璃板,我们假设机械臂的刚度无限大。然而,因为各种误差,钢板与机器人的实际距离其实是0.9cm,可机器人还是会到1cm的位置,这时你最好希望这块玻璃不太贵,因为它以及在劫难逃了。

被动柔顺控制

有同学会说,那好办啊,我在机械臂末端加一个六自由度的弹簧不久解决了?让机械臂末端具有有限的刚度,位置误差就只会产生比较小的力,不久迎刃而解了吗?
这种方法就叫被动柔顺控制。通过弹簧,阻尼等机构,让机器人拥有顺从自然环境的能力。但这样做有一个巨大的问题,就是精度低。机械臂拥有复杂的结构,有非线性的摩擦力、传动间隙等等,导致期望刚度无法精确获得。这样,就无法精确地由位置信息得到接触力信息或由力信息得到位置信息了。

阻抗控制

于是,一个天才的想法诞生了,那就是主动柔顺控制。主动柔顺控制又分为阻抗控制、导纳控制和混合力位控制

阻抗控制,严谨地说,就是把控制器等效为阻抗系统,输入位置输出力,机器人等效为导纳系统,输入力输出位置。所以,阻抗控制需要我们能够获取位置信息,并且能控制机器人的关节力矩。
依然用我们刚才那个碰玻璃的例子,采用阻抗控制的话,我们并不指定机器人末端的位置,而是让机器人末端产生一个力 F r F_{r} Fr​,这个力 F r F_{r} Fr​是这么算的:
F r = K d ( X r − X ) + B d ( X ˙ r − X ˙ ) + M d ( X ¨ r − X ¨ ) F_{r}=K_{d}\left(X_{r}-X\right)+B_{d}\left(\dot{X}_{r}-\dot{X}\right)+M_{d}(\ddot{X}_{r}-\ddot{X}) Fr​=Kd​(Xr​−X)+Bd​(X˙r​−X˙)+Md​(X¨r​−X¨)
其中, X {X} X, X ˙ \dot{X} X˙, X ¨ \ddot{X} X¨表示编码器得到的关节位置计算出的末端执行器实际位置; X r {X_{r}} Xr​, X r ˙ \dot{X_{r}} Xr​˙​, X r ¨ \ddot{X_{r}} Xr​¨​表示参考位置(1m,0m/s,0m/s2); K d , B d , M d K_{d}, B_{d}, M_{d} Kd​,Bd​,Md​是用户自己设定的阻抗参数。要注意,这三个参数并不代表机器人模型的刚度阻尼质量,而是用户自己设定的力和位置之间的关系。
这么做的意义在哪里呢?假设,想运动1cm的机械臂撞到了0.9cm处的玻璃,此时玻璃会对机器人产生一个末端接触力 F e F_{e} Fe​,这个力抵消会 F r F_{r} Fr​的作用,让机械臂逐渐不再往前运动。平衡状态下, F r F_{r} Fr​= F e F_{e} Fe​,机器人也会停在0.9cm多一点点的位置。其 X {X} X与 X r {X_{r}} Xr​始终有一段距离,用来产生力 F r F_{r} Fr​。
问题解决了!我们的玻璃保住了,我们也能通过下式
M d ( X ¨ − X ¨ d ) + B d ( X ˙ − X ˙ d ) + K d ( X − X d ) = − F e M_{d}\left(\ddot{X}-\ddot{X}_{d}\right)+B_{d}\left(\dot{X}-\dot{X}_{d}\right)+K_{d}\left(X-X_{d}\right)=-F_{e} Md​(X¨−X¨d​)+Bd​(X˙−X˙d​)+Kd​(X−Xd​)=−Fe​
精确地知道机器人的位置和末端受力。而阻抗控制的用户们要做的,就是仔细选择 K d , B d , M d K_{d}, B_{d}, M_{d} Kd​,Bd​,Md​的值,使其呈现想要的特性。
当然 ,阻抗控制不止这一种用法。更多时候,我们想让机械臂与墙维持一个恒定的力 F d F_{d} Fd​,即跟踪期望力 F d F_{d} Fd​,这时,用 E = F e − F d E=F_{e}-F_{d} E=Fe​−Fd​来代替 F e F_{e} Fe​,就可以实现力的跟踪。
这里的推导省略了关节空间和笛卡尔空间的转换。借用论文里的图来呈现整个过程:

导纳控制

导纳控制是阻抗控制的反过程,把控制器等效为导纳系统,输入力输出位置,机器人等效为阻抗系统,输入位置输出力。但它们的目的都是一样的,即不希望把玻璃撞破。导纳控制需要我们能获取力信息(因此常需要在末端加力传感器),且能控制机器人的关节位置(这个基本都可以)。
导纳控制的公式与阻抗控制相同,不过未知量不同,如下:
F e = K d ( X r − X ) + B d ( X ˙ r − X ˙ ) + M d ( X ¨ r − X ¨ ) F_{e}=K_{d}\left(X_{r}-X\right)+B_{d}\left(\dot{X}_{r}-\dot{X}\right)+M_{d}(\ddot{X}_{r}-\ddot{X}) Fe​=Kd​(Xr​−X)+Bd​(X˙r​−X˙)+Md​(X¨r​−X¨)
在导纳控制中,已知量为接触力 F e F_{e} Fe​,未知量为 X X X。注意这里的 X X X既是真实位置 X X X,又是发送给机器人的期望位置 X d X_{d} Xd​,也就是说在导纳控制里我们假设位置控制是没有误差的,指哪打哪。通过上述公式计算出 X X X之后发送给机器人,就实现了柔顺控制。
依然以机器人撞玻璃为例,初始时 F e F_{e} Fe​为0,故给机器人发送的 X X X等于 X r X_{r} Xr​也就是1cm。运动过程中,机械臂碰到玻璃, F e F_{e} Fe​增大, X X X随之减小,直到最后停在玻璃前一点点的位置。控制图如下:

注1:图中的Ke是位置控制环需要的,和导纳控制无关。
注2:本节出现了三个位置变量, X d X_{d} Xd​, X r X_{r} Xr​, X X X,第一个是期望位置,即发送给机械臂的控制命令,也就是想让机器人运动到哪。第二个是参考位置,也就是一切完美零误差时的位置,本例指1cm。第三个是实际位置,真实位置。

力位混合控制

其实,上两种控制已经能比较好的完成普通柔顺控制了。但是在很多情况下,我们需要同时对力和位置有高精度的控制,例如机械臂沿着某个面进行抛光作业,这时,既需要在垂直面方向上进行力控制,又需要在切面方向进行位置控制。这就需要用到力位混合控制。
需要注意,虽然阻抗控制和导纳控制一个是控制关节力矩,一个是控制关节位置,本质上都属于力控制,因为它们的最终效果是通过调节 K d , B d , M d K_{d}, B_{d}, M_{d} Kd​,Bd​,Md​让机械臂和接触面维持一个合适的力。
力位控制比较简单,将需要力控和需要位控的方向解耦,分别给予控制就好啦。在下图中,S为对角阵,元素为0和1,力控的方向,S相应位置为1,位置控制的方向,相应位置为0, S ˉ \bar{S} Sˉ取反,如下图示意:

彻底搞懂阻抗控制、导纳控制、力位混合控制相关推荐

  1. 计算机控制的工作原理图,PLC工作原理动图,一图搞懂一个原理

    原标题:PLC工作原理动图,一图搞懂一个原理 PLC顺序控制 PLC正反转控制 按钮开关 冲孔加工 断电延时型时间继电器 多点控制 滚轮式行程开关 红绿灯 机械手 交流接触器 热继电器 三相闸刀 时间 ...

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

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

  3. 搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  4. 得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  5. linux守护进程写法_搞懂进程组、会话、控制终端关系,才能明白守护进程如何创建...

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  6. potplayer 多个进程_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?...

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  7. SolidWorks+thonny esp32 电磁控制,程序算法搞起来了,我的结构-仿真-电磁-控制-算法的学习之路

    来个自我介绍,本科是微电子制造专业,隶属于机电工程学院,所以机械,电子,控制,流体,材料,结构这些基础都有,而且水平不低.工作了13年,主要干机械,代码写得少,吃了软件亏.干过飞行器,无人机,机器人, ...

  8. 集成式电子液压制动系统液压力变结构控制

    转自:http://www.360doc.com/content/17/0530/15/28704984_658459526.shtml 集成式电子液压制动系统液压力变结构控制* 余卓平,韩 伟,熊 ...

  9. 一文搞懂全排列、组合、子集问题

    微信搜一搜:[bigsai] 获取更多肝货知识 春风十里,感谢有你 前言 Hello,大家好,我是bigsai,long time no see!在刷题和面试过程中,我们经常遇到一些排列组合类的问题, ...

最新文章

  1. eclipse插件之easyshell
  2. 数据库高可用性——SQL Server 2005数据库复制简单图解
  3. Android ImageLoader(Android-Universal-Image-Loader)【1】概述及使用简单介绍
  4. Android NDK开发——Android studio使用JNI调用OpenCV处理图像
  5. 兼容IE各版本的纯CSS二级下拉菜单
  6. PHP工程师面临的成长瓶颈
  7. 打造增长核武器:承载与创造科技公司70%价值的「网络效应」
  8. python列表删除重复项_五分钟学会三种Excel重复项删除方法,工作效率大杀器!...
  9. 第一章:AJAX与jQuery
  10. 使用Xmanger登陆aix系统桌面时报桌面服务DT未启动问题
  11. mysql group by 用法解析(详细)
  12. 中继器的使用方法(终)
  13. Sphinx 全文搜索引擎 介绍指南
  14. ArchSummit 北京 2016之lookalike主题
  15. CNN神经网络猫狗分类经典案例,深度学习过程中间层激活特征图可视化
  16. 微博模拟登陆之验证码的解决方法
  17. 在Excel中插入行并复制单元格格式
  18. 变量名与变量地址的关系:
  19. 李建忠设计模式之”数据结构“模式
  20. 项目管理之我见:甲方乙方

热门文章

  1. Vivado:Generate Bitstream比特流写入失败的解决方法
  2. Android无法通过浏览器观看HLS直播的问题
  3. 使用阿里云的图片识别成表格ocr(将图片表格转换成excel)
  4. else用法的一个小细节
  5. 19年全国电赛 H题电磁炮硬件电路+可控硅
  6. 利用python爬取甲骨文图片及其对应的汉字含义,共1062个甲骨文,百度云下载
  7. 解读物联网八大环节供应链(附13大电子行业产业链全景图)
  8. GIVE 添加 bigWig 文件
  9. Spring Boot项目介绍(值得学习,超详细)
  10. JAVA学习:基础入门(下)