自适应阻抗案例分析(上)

案例分析一

Duchaine,V.,Gosselin,C.(2009).Safe,stable and intuitive control for physical human-robot interaction.In IEEE international conference on robotics and automation,2009.ICRA'09(pp.3383-3388).IEEE.

主要贡献

  • 1.利用外力反馈调整阻尼系数,同时对人的意图实现预判
  • 2.稳定性分析
  • 3.估算人的阻抗系数

核心思想

        当接触力在当前速度的方向上急剧增大时→人期望在该方向加速→机器人应减小该方向上的阻抗系数以顺应人的意图,减小接触力,反之亦然。 

具体分析

机器人阻抗模型:

f=M\ddot{x}+C_{vi}\dot{x}\quad C_{vi}=C-\boldsymbol{S}\quad s_{ij}=\alpha\delta_{ij}\mathrm{sgn}(\dot{x}_i)\dot{f}_i\left ( 1.1 \right )

        构建机器人阻抗模型时,省略了和弹簧相关的项,即Kx。一般情况下,我们认为和弹簧相关的项用来维持机器人在空间当中的某个位置,像类似于拖动施教、康复训练和远程操作之类的协作任务当中,我们往往不要求机器人一定要维持在某个事先定义好的位置。在这种情况下,可以考虑简化机器人的阻抗模型,也就是说删去和弹簧相关的这一项。

        这里的阻尼系数矩阵Cvi是基准值减去另外一个S矩阵,S矩阵中的元素和机器人运动速度的方向和力变化的方向是相关的。举例来说,当机器人运动方向为正,力的方向为正,表明人希望在这个方向进行加速,对应的s_{ij}增加,这个方向的阻尼系数减小。\delta_{ij}克罗内克函数,当i=j时,\delta_{ij}=1,否则\delta_{ij}=0\mathrm{sgn}(\dot{x}_i)\dot{x}_i的符号函数。

人的阻抗模型:

f=Kx+b\left ( 1.2 \right )

文章中将人近似的看为了弹簧系统,即人产生的力和当前位置是线性关系。

        蓝色椭圆曲线为人体实际刚度矩阵,将实际刚度矩阵进行奇异值分解并绘制椭圆曲线。

        人的阻抗模型通过经典的参数辨识的方法在线去估算,也就是我们数值的线性回归。

参数辨识(线性回归):

\min\left(\boldsymbol{K}\boldsymbol{X}+\boldsymbol{B}-\boldsymbol{F}\right)^T\left(\boldsymbol{K}\boldsymbol{X}+\boldsymbol{B}-\boldsymbol{F}\right)\left ( 1.3 \right )

        通过机器人阻抗模型计算出来的力的大小和力它实际的测量值之间的误差,估算刚度矩阵的K值,上图红色椭圆曲线展示了通过参数辨识的方法,基于平面(二维工作空间)的真实实验得出的较差估计的情况。

稳定性分析:提出“最小阻尼系数“的概念

1.系统方程

        机器人的阻抗模型是线性的,人的阻抗模型也是线性的。两个模型通过接触力耦合,整个系统方程是一个二阶的线性方程

f=M\ddot{x}+C_{vi}\dot{x}=Kx+b\left ( 1.4 \right )

2.状态空间方程

        将二阶线性方程改写为状态空间方程

\dot{X}=AX\left ( 1.5 \right )

\boldsymbol{A}=\frac1{\boldsymbol{M}T}\begin{pmatrix}0&\boldsymbol{M}T&0\\0&0&\boldsymbol{M}T\\-\boldsymbol{K}&-\boldsymbol{C}&-(\boldsymbol{M}+\boldsymbol{C}T)\end{pmatrix}\left ( 1.6 \right )

        得到3×3的系统矩阵A,这里多出来的矩阵阶数,是因为在进行力的测量时,通常需要通过力传感器或转矩传感器来实现。然而,这些传感器的测量结果往往会受到高频噪声的干扰。为了减小甚至消除这些干扰对测量结果的影响,对原始的力测量信号进行滤波处理是必要的。最简单的滤波方法是使用一阶低通滤波器。

        在进行系统稳定性分析时,这个实际存在的低通滤波器的动态特性也需要被考虑进去。因此,系统模型中会多出一个参数 T,它代表一阶低通滤波器的时间常数。这个参数的引入是为了更准确地描述整个系统的动态行为,确保稳定性分析的准确性和可靠性。

3. 由系统矩阵特征值的实部小于0,可推导出矩阵C的最小值

        这里的其他参数均与机器人和人的阻抗模型有关,若熟悉线性控制理论,则可知当系统矩阵 A的所有特征根的实部均小于零时,系统即为稳定系统。根据这一条件,若我们使系统矩阵的行列式等于零,则可以得到系统的边界稳定条件。

        其中,M矩阵是预先定义的矩阵,而 K则与人类的阻抗模型相关。最终变化的参数为阻抗模型中的阻尼系数 C。基于上述边界条件,即当 A矩阵的行列式等于零时,我们能够得到 C的最小值。

        因此,在在线调整阻尼系数时,必须确保 C大于由线性控制理论推导出的最小值,以在理论上保证整个机器人的控制系统保持稳定。

案例分析二

F.Ficuciello,L.Villani and B.Siciliano,"Variable Impedance Control of Redundant Manipulators for Intuitive Human-Robot Physical Interaction,"in IEEE Transactions on Robotics,vol.31,no.4,pp.850-863,Aug.2015

主要贡献

1.利用操作空间内的速度反馈调整阻尼系数,提高人在拖动示教时的舒适性。
2.利用机器人的冗余自由度(Redundancy Resolution)在不影响主要任务执行的情况下,机器人能够自主优化姿态,远离奇异点。(Singularity)
3.稳定性分析:提出“稳定区域”(Stability Region)的概念,用实验的方法确定其范围。——当确定了一部分阻抗系数时,其他阻抗系数所允许变化的最大范围,文章作者用实验方法确定了稳定区域的大致范围。

具体分析

阻尼系数变化准则:

\boldsymbol{D}\left(\dot{\boldsymbol{x}}\right)=\min\left(\boldsymbol{a}\text{exp}\left(-b\|\dot{\boldsymbol{x}}\right\|\right),\boldsymbol{D}_{max})\left ( 2.1 \right )

  • \boldsymbol{D}\left(\dot{\boldsymbol{x}}\right):表示阻尼系数,它是一个向量,其中的每个元素对应于系统中一个特定状态变量的阻尼系数。

  • \dot{\boldsymbol{x}}:表示系统状态变量的导数,也就是系统的速度向量。

  • a 和 b:是模型参数,决定了阻尼系数随速度变化的非线性特性。

  • \left\|\dot{\boldsymbol{x}}\right\|:表示速度向量的范数,即速度的大小。

  • \exp(-\|\dot{\boldsymbol{x}}\|):是一个随着速度增加而减小的指数衰减函数。

  • D_{max}:是阻尼系数可能的最大值,表示阻尼系数不会超过这个值。

        整个公式的意思是:阻尼系数D(\dot{\boldsymbol{x}})随速度的增加而呈指数型减小,但有一个上限,即Dmax。和案例一中的思想类似,当机器人末端速度增大时,希望机器人的阻尼减小。

        采用文章中提出的方法,并得到了相应的结果。实验中,我们设定了两种不同的阻尼系数:一种是较低的阻尼系数,用绿色叉表示;另一种是较高的阻尼系数,用方框表示。我们使用两个标准来评估协作性能:一是完成任务所需的总时间;二是累积控制误差。

        实验结果表明,采用自适应阻抗控制方法在执行时间和完成精度两方面均表现最佳。如果阻尼系数设置过低,虽然可以缩短执行时间,但会导致较大的控制误差。相反,如果增大阻尼系数,虽然可以在一定程度上减少误差,但会增加完成任务所需的时间。因此,从实验结果来看,自适应阻抗控制在完成任务的效率和精度上都达到了最优效果。

        此外,在执行任务过程中,我们还可以观察人在操作中所需施加的力。观察结果表明,当使用高阻尼系数时,操作者需要施加较大的力来驱动机器人的运动。而低阻尼系数虽然减少了操作者所需施加的力,但如前图所示,这会导致较大的轨迹跟踪误差。因此,在这种情况下,自适应阻抗控制能够在减少操作者所需外力的同时,保证机器人在运动过程中的轨迹跟踪精度。这种控制策略实现了在降低操作者劳动强度和提高机器人运动精度之间的良好平衡。

利用冗余自由度的二次优化:

关节转矩输入函数

\tau_c=\tau_{imp}+\left(\boldsymbol{I}-\boldsymbol{J}^T\boldsymbol{J}^{\dagger T}\right)(\boldsymbol{u}-k_D\dot{\boldsymbol{q}})\left ( 2.2 \right )

        \tau_{imp}维持我们所设定的机器人阻抗特性所需要的转矩(首要任务),u是任意的输入力矩。

        通过乘以零空间矩阵(I-J^TJ^{\dagger T}) ,我们可以将控制力矩中的分量分解为两部分:一部分位于雅可比矩阵的列空间(直接影响末端执行器速度),另一部分位于雅可比矩阵的零空间(不影响末端执行器速度)。这样可以在不影响末端执行器任务性能的情况下,对关节进行额外的控制,例如实现柔顺控制或避免关节的奇异配置。

两种零空间中设计控制输入u方法:

1.考虑机器人的可操作性(Manipulability)

m\left(\boldsymbol{q}\right)=\sqrt{\det\left(\boldsymbol{J}\boldsymbol{J}^T\right)}\quad\boldsymbol{u}=k_m\left(\frac{\partial m\left(\boldsymbol{q}\right)}{\partial\boldsymbol{q}}\right)\left ( 2.3 \right )

     m\left(\boldsymbol{q}\right)反映了机器人和奇异点之间的距离,值越大越反映离奇异点举例越远。因此我们可以在机器人的可操作性梯度方向上定义控制输入。使其沿着增加机器人可操作性的梯度方向进行调整,从而在理论上实现可操作性的最大值。

2.考虑阻抗控制的误差

\omega\left(\boldsymbol{q}\right)=\frac{1}{2}\boldsymbol{E}^{T}\left(\boldsymbol{q}\right)\boldsymbol{W}\boldsymbol{E}\left(\boldsymbol{q}\right)\quad\boldsymbol{u}=-k_{\omega}\left(\frac{\partial\omega\left(\boldsymbol{q}\right)}{\partial\boldsymbol{q}}\right)\left ( 2.4 \right )

        如前所述,机器人在执行任务过程中,由于各关节间不可避免的耦合作用,实际展现的阻抗特性与预设的阻抗特性之间存在一定的偏差。这种偏差即由误差矩阵 e所表示,其中W为各关节的权重。在此基础上,我们可以定义一个新的量,称之为 \omega,用以量化这一误差的大小。控制输入u为沿着误差梯度减小的方向,最后可以达到理论上的误差小值。

基于实验方法的稳定性分析:
目的:给定阻抗模型中某一个参数,确定其他参数允许变动的范围
方法:利用阻抗控制,让机器人停留在某个姿态。改变阻抗参数,同时晃动机器人末端,直到出现大幅度振动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903731.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(三)行为模式:11、模板模式(Template Pattern)(C++示例)

目录 1、模板模式含义 2、模板模式的UML图学习 3、模板模式的应用场景 4、模板模式的优缺点 5、C实现的实例 1、模板模式含义 模板模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,将某些步骤…

Unity3D学习FPS游戏(3)玩家第一人称视角转动和移动

前言:上一篇实现了角色简单的移动控制,但是实际游戏中玩家的视角是可以转动的,并根据转动后视角调整移动正前方。本篇实现玩家第一人称视角转动和移动,觉得有帮助的话可以点赞收藏支持一下! 玩家第一人称视角 修复小问…

arco-design 自定义table和for循环自定义form-item并添加自定义校验

代码 <template><div class"list-container"><Breadcrumb:items"[menu.generateRecords, menu.generateRecordsDetail]":needBack"true"/><a-card class"general-card"><PageQueryref"pageQuery&quo…

DriftingBlues: 1渗透测试

靶机&#xff1a;DriftingBlues: 1 DriftingBlues: 1 ~ VulnHubhttps://www.vulnhub.com/entry/driftingblues-1,625/ 攻击机&#xff1a;kail linux 2024 1,将两台虚拟机网络连接都改为NAT模式&#xff0c;并查看靶机的MAC地址 2&#xff0c;攻击机上做主机扫描发现靶机 靶机I…

一个简单的图像分类项目(四)编写脚本:图像加载器

创建训练和测试的数据集&#xff0c;并创建加载器。lib.load_imags.py: import glob from torch.utils.data import DataLoader, Dataset from torchvision import transformsfrom script.setting import *# 图片处理函数 def img_loader(path):try:img Image.open(path)img …

NLTK无法下载?

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 nltk无法下载怎么办&#xff1f;什么是NLTK&#xff1f;为什么要用NLTK&#xff1f;如何下载&#xff1f; nltk无法下载怎么办&#xff1f; 什么是NLTK&#xff1f; NLTK是学习自然…

厨艺爱好者的在线互动平台:Spring Boot实现

摘 要 使用旧方法对厨艺交流信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在厨艺交流信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的厨艺交流平台功能…

解决SpringBoot项目启动错误:找不到或无法加载主类

如何解决SpringBoot项目的“找不到或无法加载主类”启动错误 在开发SpringBoot应用时&#xff0c;经常可能会遇到一个启动错误&#xff1a;“错误&#xff1a;找不到或无法加载主类 com.example.controller.demo.DemoApplication”。本文将介绍三种解决这一问题的方法。 方法…

Tessy学习笔记-CTE如何生成测试用例

1&#xff1a;前提工作 在开始设置测试用例之前&#xff0c;我们还需要将树图补充完整&#xff0c;如下图 补充步骤&#xff0c; 1&#xff1a;在palette中&#xff0c;选择两个class拖动到return图标下&#xff0c;然后回到palette中选择DefineParent将class与Return图标连接…

在Java中,需要每120分钟刷新一次的`assetoken`,并且你想使用Redis作为缓存来存储和管理这个令牌

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

《Python游戏编程入门》注-第4章1

《Python游戏编程入门》的第4章是“用户输入&#xff1a;Bomb Cathcer游戏”&#xff0c;通过轮询键盘和鼠标设备状态实现Bomb Cathcer游戏。 1 Bomb Cathcer游戏介绍 “4.1 认识Bomb Cathcer游戏”内容介绍了Bomb Cathcer游戏的玩法&#xff0c;即通过鼠标来控制红色“挡板”…

【HarmonyOS】判断应用是否已安装

【HarmonyOS】判断应用是否已安装 前言 在鸿蒙中判断应用是否已安全&#xff0c;只是通过包名是无法判断应用安装与否。在鸿蒙里新增了一种判断应用安装的工具方法&#xff0c;即&#xff1a;canOpenLink。 使用该工具函数的前提是&#xff0c;本应用配置了查询标签querySch…

【Java基础】2、Java基础语法

f2/fnf2&#xff1a;选中点中的文件名 ​​​​​​​ 1.注释 为什么要有注释&#xff1f; 给别人和以后的自己可以看懂的解释 注释含义 注释是在程序指定位置的说明性信息&#xff1b;简单理解&#xff0c;就是对代码的一种解释 注释分类 单行注释 //注释信息 多行注释…

【Linux系统编程】线程深入运用

目录 一&#xff0c;C线程与系统线程 二&#xff0c;分离线程 三&#xff0c;线程结构 四&#xff0c;__thread关键字 五&#xff0c;Linux线程互斥 1&#xff0c;线程互斥相关的背景概念 2&#xff0c;互斥锁 3&#xff0c;死锁 4&#xff0c;互斥锁的弊端 六&#…

【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024)

在线投稿&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 2024年计算机视觉与艺术国际学术会议&#xff08;CVA 2024&#xff09;作为2024年人工智能、数字媒体技术与交互设计国际学术会议&#xff08;ICADI 2024)的分会。此次大会旨在汇聚全球在计算机视觉与艺术…

红队工具---Behinder学习

1.什么是Behinder&#xff1f; Behinder 是一款用于网络渗透测试的安全工具&#xff0c;主要用于对 Web 应用进行攻击和漏洞利用。它提供了强大的功能&#xff0c;是一款红队的大杀器&#xff0c;几乎是现代web安全必须学习的一款webshell管理工具。 主要用途 渗透测试&#…

怿星科技薛春宇丨智能汽车软件研发工具链国产化的挑战和探索

2024年7月25日&#xff0c;由上海良益企业管理咨询有限公司主办的“2024域控制器技术论坛“在上海成功举办&#xff0c;十位嘉宾做了精彩分享。“整零有道”将陆续刊出部分演讲的文字实录&#xff0c;以飨读者。 本期刊出怿星科技副总经理薛春宇的演讲实录&#xff1a;智能汽车…

python这10个接口自动化的装饰器

在Python接口自动化测试中&#xff0c;装饰器可以用于增强测试函数的功能或改变其行为。以下是一些可能使用的装饰器示例&#xff1a; 设置和清理环境 setup&#xff1a;用于在测试开始前初始化环境或配置。 class CustomTestRunner: def __init__(self): self.setup_done …

【Spring】Cookie与Session

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 一、Cookie是什么&#xff1f; Cookie的存在主要是为了解决HTTP协议的无状态性问题&#xff0c;即协议本身无法记住用户之前的操作。 "⽆状态" 的含义指的是: 默认情况…

摄像头点击器常见问题——摄像头视窗打开慢

【嵌入式开发】可编程4k蓝牙摄像头点击器_能编程的摄像头-CSDN博客 拥有上述文章产品的朋友出现标题所述问题&#xff0c;可继续往下阅读 出现以上问题&#xff0c;摄像头画面打开较慢&#xff0c;可以按以下操作进行设置 在环境变量里设置一下这个参数&#xff0c;值设置为1&…