笛卡尔空间内的阻抗控制

目录

  • 1. 笛卡尔空间内的阻抗控制方程推导
  • 2. 笛卡尔空间内的阻抗控制的控制框图
  • 3. 一些变体
    • 变体 1.1
    • 变体 1.2
    • 变体 2
  • 4.笛卡尔空间内的阻抗控制方法总结
  • 参考资料

1. 笛卡尔空间内的阻抗控制方程推导

目标:让机器末端执行器在笛卡尔空间内的每个方向上都体现出由弹簧阻尼质量组成的二阶系统的动态特性。
M d x ~ ¨ + D d x ~ ˙ + K d x ~ = F e x t , x ~ = x d − x (1.1) \tag{1.1}M_d\ddot{\tilde{x}}+D_d\dot{\tilde{x}}+K_d\tilde{x}=F_{ext},\quad\tilde{x}=x_d-x Mdx~¨+Ddx~˙+Kdx~=Fext,x~=xdx(1.1)
  笛卡尔空间内的阻抗控制将机器人视为一个整体,关注机器人末端执行器的运动状态,末端的不同维度都体现出弹簧-质量-阻尼构成的二阶系统。相比于关节空间,笛卡尔空间下定义阻抗行为更加直观、实用;但对机器人的控制在关节空间内进行的,所以实现笛卡尔空间下的阻抗控制需要进行正逆运动学、动力学的解算。
  在控制系统中, M d M_{d} Md D d D_d Dd K d K_d Kd矩阵分别对应于质量矩阵、阻尼矩阵和弹簧矩阵,它们共同描述了系统的动力特性。这些矩阵可以根据设计需求自行设计和调整。矩阵的维度与机械系统的自由度密切相关。理论上,矩阵的维度不应超过系统的自由度。例如,如果一个机器人仅具有两个自由度,那么其阻抗行为最多只能在两个方向上进行定义,无论是在平面空间还是立体空间中。这意味着,阻抗控制的设计必须与系统的自由度相匹配。三个矩阵最大阶数为6,对应笛卡尔空间上的6个阻抗特性。
  同理,假定机器人的控制任务仍是跟随一条提前规划的轨迹即: x ¨ d , x ˙ d , x d \ddot{x}_d,\dot{x}_d,\boldsymbol{x}_d x¨d,x˙d,xd,则可定义如下的关节转矩控制输入:
τ = M ( q ) J − 1 ( q ) M d − 1 ( M d x ¨ d + K x ˉ ˙ + D x ~ − M d J ˙ ( q ˙ , q ) q ˙ ) + ( J T ( q ) − M ( q ) J − 1 ( q ) M d − 1 ) F e x t + g ( q ) + C ( q , q ˙ ) q ˙ (1.2) \begin{aligned}\tau=&\boldsymbol{M}\left(\boldsymbol{q}\right)\boldsymbol{J}^{-1}\left(\boldsymbol{q}\right)\boldsymbol{M}_d^{-1}\left(\boldsymbol{M}_d\ddot{\boldsymbol{x}}_d+\boldsymbol{K}\dot{{\bar{x}}}+\boldsymbol{D}\tilde{\boldsymbol{x}}-\boldsymbol{M}_d\dot{\boldsymbol{J}}\left(\dot{\boldsymbol{q}},\boldsymbol{q}\right)\boldsymbol{\dot{\boldsymbol{q}}}\right)\\&+\left(\boldsymbol{J}^T\left(\boldsymbol{q}\right)-\boldsymbol{M}(\boldsymbol{q})\boldsymbol{J}^{-1}\left(\boldsymbol{q}\right)\boldsymbol{M}_d^{-1}\right)\boldsymbol{F}_{ext}\\&+\boldsymbol{g}(\boldsymbol{q})+\boldsymbol{C}(\boldsymbol{q},\dot{\boldsymbol{q}})\dot{\boldsymbol{q}}\end{aligned}\tag{1.2} τ=M(q)J1(q)Md1(Mdx¨d+Kxˉ˙+Dx~MdJ˙(q˙,q)q˙)+(JT(q)M(q)J1(q)Md1)Fext+g(q)+C(q,q˙)q˙(1.2)
  与关节坐标下的关节转矩控制输入函数构成相似,第一项需要与雅可比矩阵的逆相乘,雅可比矩阵反应机器人的关节角速度和末端执行器在笛卡尔空间中的速度的映射关系,括号中减去的项与雅可比矩阵求导有关,在物理意义上,通过减去该项抵消掉由关节加速度而产生的惯性力的作用。
  第二项与末端所受外力有关,相比于关节空间中关节转矩控制输入的该项,同样需要带入雅可比矩阵的转置和逆,实现从笛卡尔空间到关节空间的映射。
速度和加速度求解:
x ˙ = J ( q ) q ˙ , x ¨ = J ( q ) q ¨ + J ˙ ( q ˙ , q ) q ˙ (1.3) \begin{aligned}&\dot{\boldsymbol{x}}=\boldsymbol{J}\left(\boldsymbol{q}\right)\boldsymbol{\dot{q}},\\&\ddot{\boldsymbol{x}}=\boldsymbol{J}\left(\boldsymbol{q}\right)\ddot{\boldsymbol{q}}+\dot{\boldsymbol{J}}\left(\dot{\boldsymbol{q}},\boldsymbol{q}\right)\dot{\boldsymbol{q}}\end{aligned}\tag{1.3} x˙=J(q)q˙,x¨=J(q)q¨+J˙(q˙,q)q˙(1.3)
  将关节转矩控制输入表达式代回机器人动力学方程,整理后可得到所期望的二阶系统动态方程。理想情况下,机器人末端执行器可在笛卡尔空间内体现出完全解耦的阻抗特性。
  实际操作中,理想的阻抗控制实现的难度较大,需要:

  • 1.在线求解雅可比矩阵的(伪)逆矩阵,及雅可比矩阵的导数矩阵
  • 2.精确测量机器人执行器末端受到的外力
  • 3.精确的机器人运动学以及动力学模型
  • 4.机器人关节位置及转速的测量
  • 5.机器人关节转矩控制

注意:实际操作时,尽量不要过度接近机器人奇异点
  从数学角度讲,机器人奇异点处的雅可比矩阵不可逆,靠近奇异点处的雅可比矩阵求逆误差较大,从物理角度讲,机器人奇异点处的关节自由度减少,靠近奇异点处的在某些方向上的运动受到较大限制。

2. 笛卡尔空间内的阻抗控制的控制框图

在这里插入图片描述
下面从控制角度分析笛卡尔空间内的阻抗控制框图结构:
  首先可以看到这个阻抗控制的输入信号,给定的控制设定值都是用于机器人的运动控制的运动相关的量,如速度、加速度和位移。在此背景下,阻抗行为可以等效地看作一种线性控制器,其中阻抗系数相当于控制器的增益。该控制器的作用在于尽可能减少设定值与机器人实际空间运动状态之间的误差。
  这个线性控制器将在笛卡尔空间中生成一个虚拟控制输入(通常表示为 𝑦)。接下来的任务是通过不同空间间的映射,将这个虚拟控制输入转换到关节空间坐标系中。此时,还需要结合机器人的动力学模型,计算出每个关节所需的转矩u。
  从反馈控制的角度出发,我们需要对机器人在笛卡尔空间中的运动状态进行反馈测量。实现这一反馈可以有多种方式。例如,若机器人在操作空间中配备了相应的传感器系统(如视觉系统),则可以直接测量机器人在空间中的运动状态。另一种常见的方式是通过测量机器人的关节运动,并利用机器人运动学方程计算出其末端执行器在笛卡尔空间中的运动状态。
  此外,如果期望实现更为完善的控制效果,还需要对机器人末端的外力进行反馈。基于实际情况,我们可以灵活调整笛卡尔空间中的阻抗控制形式,以满足具体的需求。

3. 一些变体

如果不能提供末端外力的实时反馈:

变体 1.1

直接删去与外力相关的部分
τ = M ( q ) J − 1 ( q ) M d − 1 ( M d x ¨ d + K x ~ ˙ + D x ~ − M d J ˙ ( q ˙ , q ) q ˙ ) + g ( q ) + C ( q , q ˙ ) q ˙ (1.4) \begin{aligned}&\boldsymbol{\tau}=\boldsymbol{M}(\boldsymbol{q})\boldsymbol{J}^{-1}\left(\boldsymbol{q}\right)\boldsymbol{M}_d^{-1}\left(\boldsymbol{M}_d\ddot{x}_d+\boldsymbol{K}\dot{\tilde{x}}+\boldsymbol{D}\tilde{x}-\boldsymbol{M}_d\dot{\boldsymbol{J}}\left(\dot{\boldsymbol{q}},\boldsymbol{q}\right)\dot{\boldsymbol{q}}\right)\\&+\boldsymbol{g}(\boldsymbol{q})+\boldsymbol{C}(\boldsymbol{q},\dot{\boldsymbol{q}})\dot{\boldsymbol{q}}\end{aligned}\tag{1.4} τ=M(q)J1(q)Md1(Mdx¨d+Kx~˙+Dx~MdJ˙(q˙,q)q˙)+g(q)+C(q,q˙)q˙(1.4)
代入机器人动力学方程,可得:
M d x ~ ¨ + D x ~ ˙ + K x ~ = M d J ( q ) M − 1 ( q ) J T ( q ) F e x t (1.5) M_d\ddot{\tilde{x}}+D\dot{\tilde{x}}+K\tilde{x}=M_d\boldsymbol{J}\left(\boldsymbol{q}\right)\boldsymbol{M}^{-1}(\boldsymbol{q})\boldsymbol{J}^T\left(\boldsymbol{q}\right)\boldsymbol{F}_{ext}\tag{1.5} Mdx~¨+Dx~˙+Kx~=MdJ(q)M1(q)JT(q)Fext(1.5)
结果:机器人仍能对外体现阻抗特性,但各方向之间存在耦合。

变体 1.2

设计 M d = J − T ( q ) M ( q ) J − 1 ( q ) M_d=\boldsymbol{J}^{-T}\left(\boldsymbol{q}\right)\boldsymbol{M}(\boldsymbol{q})\boldsymbol{J}^{-1}\left(\boldsymbol{q}\right) Md=JT(q)M(q)J1(q)
τ = M ( q ) J − 1 ( q ) M d − 1 ( M d x ¨ d + K x ~ ˙ + D x ~ − M d J ˙ ( q ˙ , q ) q ˙ ) + ( J T ( q ) − M ( q ) J − 1 ( q ) M d − 1 ) ⏟ = 0 F e x t + g ( q ) + C ( q , q ˙ ) q ˙ (1.6) \begin{aligned}\boldsymbol{\tau}=&\boldsymbol{M}(\boldsymbol{q})\boldsymbol{J}^{-1}\left(\boldsymbol{q}\right)\boldsymbol{M}_d^{-1}\left(\boldsymbol{M}_d\ddot{x}_d+\boldsymbol{K}\dot{\tilde{x}}+\boldsymbol{D}\tilde{x}-\boldsymbol{M}_d\dot{\boldsymbol{J}}\left(\dot{\boldsymbol{q}},\boldsymbol{q}\right)\dot{\boldsymbol{q}}\right)\\&+\underbrace{\left(\boldsymbol{J}^T\left(\boldsymbol{q}\right)-\boldsymbol{M}(\boldsymbol{q})\boldsymbol{J}^{-1}\left(\boldsymbol{q}\right)\boldsymbol{M}_d^{-1}\right)}_{=0}\boldsymbol{F}_{ext}\\&+\boldsymbol{g}(\boldsymbol{q})+\boldsymbol{C}(\boldsymbol{q},\dot{\boldsymbol{q}})\dot{\boldsymbol{q}}\end{aligned}\tag{1.6} τ=M(q)J1(q)Md1(Mdx¨d+Kx~˙+Dx~MdJ˙(q˙,q)q˙)+=0 (JT(q)M(q)J1(q)Md1)Fext+g(q)+C(q,q˙)q˙(1.6)
代入机器人动力学方程,可得
J − T ( q ) M ( q ) J − 1 ( q ) x ~ ~ ¨ + K D x ~ ˙ + K P x ~ = F e x t (1.7) \boldsymbol{J}^{-T}\left(\boldsymbol{q}\right)\boldsymbol{M}\left(\boldsymbol{q}\right)\boldsymbol{J}^{-1}\left(\boldsymbol{q}\right)\ddot{\tilde{\tilde{x}}}+\boldsymbol{K}_{D}\dot{\tilde{x}}+\boldsymbol{K}_{P}\tilde{\boldsymbol{x}}=\boldsymbol{F}_{ext}\tag{1.7} JT(q)M(q)J1(q)x~~¨+KDx~˙+KPx~=Fext(1.7)
结果:机器人仍能对外体现阻抗特性,但与质量相关的项存在耦合。

变体 2

PD+控制
τ = J T ( q ) ( K x ~ + D x ~ ˙ ) + g ( q ) + C ( q , q ˙ ) q ˙ (1.8) \tau=\boldsymbol{J}^T(\boldsymbol{q})\left(\boldsymbol{K}\tilde{\boldsymbol{x}}+\boldsymbol{D}\dot{\tilde{x}}\right)+\boldsymbol{g}(\boldsymbol{q})+\boldsymbol{C}(\boldsymbol{q},\dot{\boldsymbol{q}})\dot{\boldsymbol{q}}\tag{1.8} τ=JT(q)(Kx~+Dx~˙)+g(q)+C(q,q˙)q˙(1.8)
PD控制器+运动过程中产生的非线性力的补偿
雅可比矩阵的转置通常用于将力/力矩从关节空间映射到笛卡尔空间。
代入机器人动力学方程,可得:
− J − T ( q ) M ( q ) q ¨ + D d x ~ ˙ + K d x ~ = F e x t (1.9) -J^{-T}\left(q\right)M\left(q\right)\ddot{q}+D_d\dot{\tilde{x}}+K_d\tilde{x}=F_{ext}\tag{1.9} JT(q)M(q)q¨+Ddx~˙+Kdx~=Fext(1.9)
结果:机器人仍能对外体现阻抗特性,但与设定值误差较大。
引申问题:如何设计阻尼系数D,从而减小部分耦合作用:
  阻尼矩阵和弹性矩阵通常设计为对角矩阵,这是基于机器人在不同方向上的运动不存在耦合的假设。然而,既然我们已经知道这种耦合作用确实存在,那么通过设计阻尼矩阵或弹性矩阵的非对角元素,是否可以抵消部分由耦合作用引起的影响呢?
  这种方法是可行的。通过引入非对角元素,我们可以考虑不同运动方向之间的相互作用,从而补偿由耦合作用带来的影响。在实际应用中,非对角元素可以用于表达各个运动方向间的相互耦合关系。通过精确设计这些非对角元素,系统可以更好地处理复杂的动力学耦合问题,从而提高控制的稳定性与精确度。
推荐阅读:Ott,C.(2008).Cartesian impedance control of redundant and flexible-joint robots.Springer.。它是Ott,C写的一本关于完全关于这个笛卡尔空间的阻抗控制的一本学术专著,Ott,C是德国宇航局一个非常有名的机器人专家,研究方向主要就是阻抗控制。

4.笛卡尔空间内的阻抗控制方法总结

目的:控制机器人运动与外力之间的动态关系,使其等效为由弹簧-阻尼质量组成的二阶系统。
  阻抗控制它最根本的目的既不是去控制机器人的运动,也不是去控制机器人的外力。它所希望达到的是机器人的运动和外力之间的某种动态关系,而这种动态关系是可以等效的,由一个弹簧-阻尼-质量所组成的二阶系统来描述。
实现:机器人的运动控制(间接力控)
  从阻抗控制的实现角度来看,关注的仍然是机器人的运动控制。尽管需要处理的是机器人与外界接触的情况,即存在力的相互作用,但我们并没有指定任何关于力的设定值。因此,阻抗控制属于间接力控制的范畴。
需要
1.机器人动力学及运动学模型
2.关节角及角速度的反馈
3.关节转矩控制
4.外力(矩)的测量(非必需)
  实际操作中,可以根据需要对控制输入进行简化。一般来说,控制输入越简单,体现的阻抗特性误差越大(耦合作用)。

参考资料

笛卡尔空间内的阻抗控制

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

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

相关文章

Java-线程池技术

一、线程池简介 线程池是一种池化的思想,是将一些共同资源放到池中进行管理和使用,从而避免大量的创建销毁带来的资源浪费等问题,线程池主要优点体现在: 降低资源消耗:普通线程创建执行完任务之后即被销毁&#xff0…

【C++】类和对象(附题)

目录 一、类的定义 1.1.类定义格式 1.2.访问限定符 1.3.类域 二、实例化 2.1.实例化概念 2.2.对象大小 三、this指针 附加题:(增进对this指针的理解) 1.下面程序编译运行结果是() 2.下面程序编译运行结果是&…

linux下gpio模拟spi时序

目录 前言一、配置内容二、驱动代码实现三、总结 前言 本笔记总结linux下使用gpio模拟spi时序的方法,基于arm64架构的一个SOC,linux内核版本为linux5.10.xxx,以驱动三线spi(时钟线sclk,片选cs,sdata数据读和写使用同一…

antv g6问题处理汇总

关于自定义边时&#xff0c;箭头始终没出现的问题处理 问题&#xff1a; 问题对应的代码 解决方法&#xff1a;将箭头的偏移量调整y坐标 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8" /><title&…

使用vue+kkFileview组件实现各种类型文件预览

关于kkFileView 【参考】&#xff1a;https://kkfileview.keking.cn/zh-cn/docs/home.html 文档在线预览项目解决方案&#xff0c;项目使用流行的spring boot搭建&#xff0c;易上手和部署。万能的文件预览开源项目&#xff0c;基本支持主流文档格式预览 本项目介绍 项目使用…

无忧树闪耀2024中国防水展:智能新材料,引领新赛道!

2024年10月16日&#xff0c;上海无忧树新材料科技有限公司在上海国家会展中心5.2号馆5103展位&#xff0c;成功亮相2024中国国际屋面和建筑防水技术展览会。作为新材料科技领域的佼佼者&#xff0c;无忧树以创新的技术、卓越的产品和专业的服务&#xff0c;赢得了现场观众的广泛…

COVON全意卫生巾,轻薄透气,绵柔速干,马来西亚热销中

随着女性健康意识的提高&#xff0c;卫生巾作为女性日常生活中的必需品&#xff0c;其品质和舒适度越来越受到关注。今天&#xff0c;我们要为大家介绍一款来自马来西亚热销的卫生巾——COVON全意卫生巾&#xff0c;以其轻薄透气、绵柔速干的特点&#xff0c;赢得了广大女性的喜…

【有啥问啥】视频插帧算法技术原理详解

视频插帧算法技术原理详解 引言 视频插帧&#xff08;Video Interpolation&#xff09;技术&#xff0c;作为计算机视觉领域的一项重要应用&#xff0c;旨在通过算法手段在已有的视频帧之间插入额外的帧&#xff0c;从而提升视频的帧率&#xff0c;使其看起来更加流畅。这一技…

oracle19c的k8s部署

前提条件 1、首先要有一个oracle 账号 2、需要一台能连接网络并安装docker的机器用Oracle账号登录Home 点击database 跳转到下一个页面 记得一定sign in ,否则无法拉取镜像 docker pull container-registry.oracle.com/database/enterprise:latest 执行拉取后使用镜像进行部…

基于Ubuntu24.04,下载并编译Android12系统源码 (二)

1. 前言 上篇文章&#xff0c;我们基于Ubuntu24.04&#xff0c;已经成功下载下来了Android12的源码&#xff0c;这篇文章我们会接着上文&#xff0c;基于Ubuntu24.04来编译Android源码。 2. 编译源码 2.1 了解源码编译的名词 Makefile &#xff1a; Android平台的一个编译系…

Diffusion Probabilistic Models for 3D Point Cloud Generation——点云论文阅读(8)

此内容是论文总结&#xff0c;重点看思路&#xff01;&#xff01; 文章概述 该文献介绍了一种用于3D点云生成的概率模型。点云是表示3D物体和场景的常用方式&#xff0c;但由于其不规则的采样模式&#xff0c;与图像相比&#xff0c;点云生成更具挑战性。现有方法如GANs、流…

Flutter通过showDialog实现下拉筛选菜单效果

一、效果图 二、 实现方式 获取固定在顶部筛选头部Widget在屏幕上的位置和它的高度在弹窗中通过获取到的高度进行内容显示区域定位巧用AnimatedContainer组件实现下拉动画效果最后在底部加上黑色蒙层 unawaited(showDialog(context: context,useSafeArea: false,barrierColor…

Golang | Leetcode Golang题解之第503题下一个更大元素II

题目&#xff1a; 题解&#xff1a; func nextGreaterElements(nums []int) []int {n : len(nums)ans : make([]int, n)for i : range ans {ans[i] -1}stack : []int{}for i : 0; i < n*2-1; i {for len(stack) > 0 && nums[stack[len(stack)-1]] < nums[i%…

vue2-render:vue2项目使用render / 基础使用

一、本文内容 本文内容记录render常用的一些属性和方法的配置&#xff0c;以作参考 export default { data() {return { modelValue: ,key: 0,}; }, render(h) { return h(div, [ h(input, {class: input,attrs: { type: text }, key: this.key,props: { value: thi…

【MATLAB代码】EKF和CDKF的对比

目录 主要特点 应用场景 运行结果展示 本MATLAB程序实现了扩展卡尔曼滤波&#xff08;EKF&#xff09;与协方差差分卡尔曼滤波&#xff08;CDKF&#xff09;在三维状态估计中的效果对比&#xff0c;为需要高精度定位与动态系统分析的用户提供了一种实用工具。通过直观的结果…

CenterTrack算法详解

背景&#xff1a; 早期追踪器在缺乏强的低水平线索下&#xff0c;容易失败检测后跟踪的模型依赖于检测器&#xff0c;且需要一个单独的阶段匹配关联策略的时间长 简介&#xff1a; 基于点的跟踪思想&#xff0c;通过预测目标的中心点来进行跟踪&#xff0c;同时实现检测与跟…

【开源免费】基于SpringBoot+Vue.JS蜗牛兼职平台 (JAVA毕业设计)

本文项目编号 T 034 &#xff0c;文末自助获取源码 \color{red}{T034&#xff0c;文末自助获取源码} T034&#xff0c;文末自助获取源码 目录 一、系统介绍1.1 平台架构1.2 管理后台1.3 用户网页端1.4 技术特点 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景…

SSCI/SCI/EI/Scopus/期刊合集,周期短,快速发表,见刊快!

【期刊合集专场】本期为计算机、材料、工程技术、医学、社科经管、农林科学类领域的SCI&SSCI、Scopus、EI&#xff0c;涵盖&#xff1a;人工智能、纳米材料、工程材料、肿瘤学、管理学、农作物保护等征稿方向&#xff01; 期刊推荐一、Intelligence & Robotics 学科领域…

【C++篇】继承之巅:超越法则束缚,领略面向对象的至臻智慧

文章目录 C 继承详解&#xff1a;虚拟继承与进阶实战前言第一章&#xff1a;继承与友元、静态成员1.1 继承与友元1.1.1 友元函数的定义 1.2 继承与静态成员1.2.1 静态成员的继承与访问 第二章&#xff1a;复杂的菱形继承及虚拟继承2.1 菱形继承问题2.1.1 菱形继承的基本结构 2.…

「漏洞复现」东胜物流软件 GetProParentModuTreeList SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…