文章内容转载自知乎【邵天兰的回答】

===================================
0. 前言
===================================
我尽可能把事情说的通俗一些,所以内容并不会非常严谨。而且这个领域的术语很乱,Impedance control, stiffness control, admittance control, compliance control等等词汇在不同作者手中都有好多不同的意思。所以我只能保证用词尽可能自洽,阅读时请勿硬套名词。

讨论实现方法以前一定要先搞清楚动机和目的。因为实践中经常要做出各种妥协和Hack,如果目的不明确,很容易干出削足适履、南辕北辙的事情来。下面我先讨论动机,然后抽象出一个控制目标,最后再说实现方式。
===================================
1. 完美定位是不够的
===================================
机器人最传统、最常用的控制方式就是位置控制了。这里无需讨论任何实现细节,只需设想一个完美的位置控制机器人:它能够以0误差来到达指定的位置,或以0误差跟随指定的轨迹。
这样的机器人看起来叼炸天,然而考虑一个简单的任务——开门

假设这个门是一个理想门:门板围着固定轴转动,门板末端的轨迹是一个完美的圆弧。门板重量为0,摩擦力为0,弹性为0。机器人紧紧地抓住门板的末端。


很明显,由于门板没有重量也没有摩擦,机器人甚至无需对门施加任何力,只要沿着图中的圆弧运动,就可以把门打开。当一个完美的机器人,遇到一个完美的门,so simple! what could possibly go wrong?


然而,实践中机器人和门的相对位置几乎不可能极为精确的确定,如下图所示。机器人的实际路线与理想的圆弧会有微小的误差。


但是门的末端不可能偏离圆弧运动,而机器人末端又紧紧的抓住了门。。。于是,要么门被拽掉,要么机器臂被扯断。不给力啊老师!

===================================
2.柔性是环境互动的好朋友
===================================
前述完美机器人解决不了的事情,一根破弹簧就能搞定。。。如下图,让机器人通过一个弹簧和门相连。可以想象,机器人开门时,误差只会导致弹簧伸长,不会把门扯掉了。当然还需要一点摩擦力来避免弹簧无限振荡。)


再举一例,让前述完美定位机器人用无限硬的刀在无限硬的桌子上切薄纸也很难:因为一点点误差就会导致要么切不到纸,要么把刀弄折,要么把桌子切坏。但是用厚海绵擦桌子就很容易:误差只会导致海绵变形一点而已。从这些例子中可以看出,当机器人和外物有直接接触时,一定的柔性是你的好朋友。It’s all about interaction.

*注意下面的方法不是显式力控制(Explicit Force Control). 显式力控制是另外好大一滩事,另说吧。
===================================
3.系统控制目标
===================================

但是机器人不能总是有弹簧相助,而且弹簧的刚度(stiffness)不能按需调节,也很难做到各向异性(在不同方向上有不同的刚度)。所以希望能用控制算法让机器臂表现出想要的柔性。也就是下图中虚线框中的系统,实际上是由控制算法实现的。


最简单的有弹性、而且不会永久震荡的系统就是Mass-Spring-Damper了。所以不妨把目标定为:让机器人表现出和下面这样二阶系统相同的性质。


===================================
4.实现目标的不同路线
===================================
用公式描述一下这个系统的表现:

注意,这个公式有两种解读方式


其实这就是胡克定律F = kx的两种解读:既可以说弹簧是因为形变而产生力,也可以说弹簧是因为产生力(注意这里不是外力,是弹簧自己产生的力)而形变。后一种解读可能直观上感觉有点奇怪,但数学上两种说法没有对错之分。毕竟胡克定律只是确定了F和x间的线性关系,并没有因果上的意义。

两种解读方式,分别对应两种实现方法:
1. 测量当前位置和目标位置的差,调整末端产生的力(一般通过调整各关节力矩实现)。这种通常称为impedance control或stiffness control.
2. 测量末端受到的力,调整末端的速度。这种常称为admittance control.

(下面一段烧脑预警)
在第一种方法中,可以认为机器人本身是一个Admittance(输入是力矩,输出是运动),而控制器是一个Impedance(输入是位置,输出是力矩)。在第二种方法中,机器人本身是Impedance (输入是速度,输出是对外的力),而控制器是Admittance(输入是外力,输出是运动)。其实这是必然的,因为admittance和impedance需要相间出现。

两种方法各有利弊。
第一种方法与环境接触时稳定性好,但是无接触时对位置实际上是开环的,因此对于建模的要求比较高。如果建模误差大,则位置的精度会受影响。
第二种方法无接触时位置精度比较高,但是当机器人本身刚性很大又与刚性环境接触时,系统容易不稳定。


===================================
5.其他选择
===================================
此外,上面提到的Mass–Spring-Damper系统中有M, b, k三个参数。一般而言,k对任务的影响很大,因此绝大多数柔顺控制的算法都可以调节k,而且一般可为不同的方向设定不同的k值。而M则不同:对于轻型机器臂来说,M在奇异点以外的地方一般不会太大,而且对大部分任务来说也并不本质。因此大部分实现中M是不能调节的(without inertia shaping)。

上面提到的都是在笛卡尔空间中的柔顺控制,当然柔顺控制也可以定义在关节空间。

一些机器人每个关节上都装备有力矩传感器(如iiwa),或使用电流来估计电机上带的力矩。在这些情况下,可以直接实现关节空间的柔顺控制。而且外力可以直接作用在机器臂上,而不仅仅限制在末端上。这在拖动示教时很方便,特别是对于7轴冗余机器人(否则肘部不容易控制)。

因为上述方法不属于Explicit Force Control,所以并不能直接调整对外界环境施加的力。例如在前述刀切纸的例子里,如果用Impedance control而且希望精确控制刀对纸面施加的力,那么需要在impedance control外面再套一层环,通过调节平衡点(可以理解为弹簧的0力点)的位置来控制力的大小。
===================================
6. 总结
===================================
总之,柔顺控制根据测量量、反馈量、可调节参数、定义空间等等不同,有很多很多的实现方式。具体选用哪个要根据需求和硬件调节决定。但万变不离其宗,柔顺控制就是让机器人能够跟环境和人更平顺的交互。

Ott, Christian, Ranjan Mukherjee, and Yoshihiko Nakamura. “Unified impedance and admittance control.” Robotics and Automation (ICRA), 2010 IEEE International Conference on. IEEE, 2010.

阻抗控制和导纳控制浅析相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 导纳控制 admittance control

    简单记录一下导纳控制. 对于一个质量块 m m m,其位移记为 x x x,我们期望它按照预期保持在 x 0 x_0 x0​.质量块受到环境的外力,记为 F e x t F_{ext} Fext​.施 ...

  7. 容器开启数据服务之旅系列(四):Kubernetes QoS 助力在线运用与大数据离线运用的带宽控制和磁盘控制...

    容器开启数据服务之旅系列(四) Kubernetes QoS 助力在线运用与大数据离线运用的带宽控制和磁盘控制 概述 本文是2018年大数据峰会上的一些分享,关于在线业务,离线业务在ACK(阿里云容器 ...

  8. 【控制】滑动模型控制(Sliding Mode Control)

    文章目录 原理 优缺点 实例分析 Ref. 滑模控制(sliding mode control, SMC)也叫变结构控制,本质上是一类特殊的非线性控制,且非线性表现为控制的不连续性.这种控制策略与其他 ...

  9. 双向控制引脚的控制代码

    双向控制引脚的控制代码 从这个表中可以发现,当高阻态Z和0或者1值同时出现时,总能保持0或者1的原状态不变.设计双向引脚的逻辑时可以利用这个特性,引脚在做输入时,让输出值取Z状态,那么读取的输入值完全 ...

最新文章

  1. 你真的了解For循环吗?一道For循环Java面试题引发的思考
  2. 从@property说起(四)深入成员变量
  3. Appium环境搭建简介
  4. Linux RAID1和RAID5的区别
  5. 数据库性能(一):数据库索引原理解析
  6. 通用无线设备对码软件_电动车上的无线电池管理系统wBMS
  7. 策略模式、简单工厂结合
  8. Eclipse Java注释模板设置详解
  9. 【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)
  10. esxi root 密码规则_陌陌风控系统静态规则引擎aswan
  11. spring boot打包问题,访问问题
  12. mysql80连接不上本地服务器_小白教程:ubuntu服务器安装jupyter notebook, 并能够实现本地远程连接
  13. jeecg_framework_v2.1.0(20130123).rar 版本发布
  14. SpringBoot第八篇:整合MyBatis-Generator
  15. 分享:苹果APP更新上架被拒的另一种理由(Safety - Objectionable Content)
  16. Data Lake Analytics的Geospatial分析函数 1
  17. 使用Maven构建Eova项目
  18. 自然语言处理之机器翻译
  19. Unity 3D学习(基础篇)——C#基础入门
  20. 基于Socket编程的网络聊天室

热门文章

  1. linux模拟手柄输入,linux下如何模拟按键输入和模拟鼠标
  2. C#双行计算器和单行计算器
  3. 内容付费行业将如何发展
  4. springboot easypoi 报错The bean 'beanNameViewResolver', defined in class path resource [cn/afterturn/e
  5. u盘锁计算机,U盘开启电脑“密码锁”逆天功能
  6. Android 自定义指示器NBIndicatorView
  7. ebay uk app Android,eBay客户端
  8. 百度与重庆市人力资源和社会保障局达成战略合作,共建AI人才产业基地
  9. 医疗时鲜资讯:医疗领域入口的划分
  10. 首个国产脑外科手术机器人获批准产,王田苗教授指导打造