MATLAB - 机器人关节空间运动模型

news2024/12/25 9:16:06

系列文章目录


前言

关节空间运动模型描述了在闭环关节空间位置控制下机械手的运动,在关节空间运动模型(jointSpaceMotionModel)对象和关节空间运动模型块中使用。

机器人机械手是典型的位置控制设备。要进行关节空间控制,需要指定关节角度或位置向量 q,以跟踪参考配置 q 参考 . 为此,您可以对机器人关节进行闭环控制,并使用运动模型模拟机器人在此控制下的行为。

要使这种方法最接近实际系统的运动,就必须准确表示控制器和被控对象的动态。本主题将介绍在闭环联合空间位置控制下的机器人行为建模方法:

  • 作为受计算扭矩控制的系统
  • 作为受 PD 控制的系统
  • 作为具有独立关节运动的系统


一、背景介绍

1.1 关节空间运动模型与任务空间运动模型

一般来说,机器人位置控制分为两类:

  • 关节空间运动控制 - 在这种情况下,机器人的位置输入被指定为一个关节角度或位置向量,即机器人的关节配置 q。 ref 这也被称为配置空间控制。
  • 任务空间运动控制 - 将位置指定为控制器的末端执行器姿势。然后,控制器驱动机器人的关节配置值将末端执行器移动到指定位置。这有时被称为操作空间控制。

下图显示了这两种运动控制中不同类型的输入/输出。

本专题页专门讨论关节空间运动控制,如 jointSpaceMotionModel 对象和关节空间运动模型块中所使用。有关任务空间运动模型,请参阅任务空间运动模型对象。如需更详细了解任务空间和联合空间控制之间的区别,请参阅使用 KINOVA Gen3 机械手计划和执行任务空间和联合空间轨迹的示例。

1.2 在 MATLAB® 和 Simulink® 中使用

关节空间运动模型可以在 MATLAB 或 Simulink 中表示。

在 Simulink 中,关节空间运动模型块接受参考输入和可选外力(如适用),并返回关节配置、速度和加速度。该程序块可处理积分,因此无需额外的积分。

在 MATLAB 中,jointSpaceJointModel 系统对象对闭环运动进行建模。导数方法返回关节配置、速度和加速度在每一时刻的导数,因此必须使用 ODE 求解器或等效的外部积分方法来模拟时间运动。

有关更具体的概述,请参阅相关文档页面。

二、状态

关节空间运动模型的状态由这些值组成:

q - 机器人关节配置,作为关节位置矢量。旋转关节以 rad 为单位,棱柱关节以 m 为单位。

\dot{q} - 关节速度矢量,旋转关节以 r a d\cdot s^{-1} 为单位,棱柱关节以 m\cdot s^{-1} 为单位。

\ddot{q} - 关节加速度矢量,对于旋转关节,单位为 r a d\cdot s^{-2} ;对于棱柱关节,单位为 m\cdot s^{-2}

三、闭环关节空间运动类型的运动方程

当需要闭环控制下系统的低保真模型,且输入指定为关节配置、速度和加速度时,可使用关节空间运动模型。运动模型包括三种整体行为建模方式:

  • 计算转矩控制下的系统 - 刚体动力学建模采用标准刚体机器人动力学,但对全身动力学进行补偿并分配误差动力学。
  • PD 控制下的系统 - 刚体动力学建模采用标准刚体机器人动力学,并通过比例-派生 (PD) 控制和重力补偿提供关节扭矩输入。该模型所代表的控制器没有对刚体运动的整体效应进行严格补偿。
  • 作为具有独立关节运动的系统 - 每个关节都被独立建模为配置不变的闭环二阶系统。该模型的保真度较低,忽略了机器人的动态特性,并假定为闭环响应。在没有外力作用的情况下,该模型可视为闭环运动的最佳表现形式,因为其动力学特性已被简化并直接规定。

要设置这些不同的运动类型,请使用 jointSpaceMotionModel 对象的 MotionType 属性。这些运动类型并不是详尽无遗的,但它们确实提供了一组在近似系统闭环行为时可以使用的选项。有关何时使用哪种模型的详细信息和建议,请参阅以下章节。

在接下来的章节中,将按照复杂程度递减的顺序介绍每种模型的运动方程。这里的复杂度是指特定运动模型的计算量。高复杂度变量通过直接模拟环路内的控制器和动力学来模拟受相当先进的控制器影响的动力学,而低复杂度模型则使用简化的动力学来表示整体误差行为。

3.1 符号和术语

闭环系统的许多运动方程都源自标准刚体机器人动力学,后者定义了机器人的开环运动。此外,方程中还经常会使用一个斜杠来表示误差动态,例如 \tilde{q}=q-q_{r e f}.

3.2 计算扭矩控制

当运动模型被定义为受计算扭矩控制的机器人时,运动模型使用标准刚体机器人动力学,但广义力输入由控制法则提供,该法则对刚体动力学进行补偿,并分配二阶误差动力学响应。

输入 - 该模型接受 q r e f,\dot{q}r e f,\ddot{q}r e f 作为所需的参考关节配置、速度和加速度矢量。用户还可以选择提供一个外力和扭矩矩阵 Fext,以牛顿和牛顿-米为单位,使用 externalForce 函数生成。

输出 - 模型以向量形式输出关节配置、速度和加速度 q,{\dot{q}},{\ddot{q}}。在 MATLAB 版本的模型中,只返回加速度,用户必须选择积分器或 ODE 解算器来返回其他状态。

复杂性--这是一个高复杂性模型。运动模型使用带有可选外力的全刚体动力学,控制器作为闭环系统的一部分进行建模,控制器包含动态补偿项。

何时应用 - 当模拟的闭环系统具有可近似误差的动力学特性时,或当使用的控制器将机器人视为多体系统,且可能存在外力时,可使用该功能。

由此产生的闭环系统旨在实现第 i 个关节的以下第二误差行为:

\ddot{\tilde{q}}_{i}=-\omega_{n}^{2}{\tilde{q}_{i}}-2\zeta\omega_{n}\dot{\tilde{q}}_{i}

{\tilde{q}}_{i}=q_{i}-q_{i.{ref}}

这些参数描述了为每个关节定义的理想响应:

\omega _n - 自然频率,单位为赫兹{Hz}\left(s^{-1}\right)

ζ - 阻尼比,无单位

 

 如图所示,整个系统由标准刚体机器人动力学和控制法则组成,控制法则通过广义力输入 Q 强化闭合误差动力学:

 {\dfrac{d}{d t}}\begin{bmatrix} q\\ \dot{q} \end{bmatrix}=f_{d y n}(q,{\dot{q}},Q,F _{e x t})

Q=g C T {C}(\tilde{q},\dot{\tilde{q}},\ddot{​{q}}_{ref},\omega _n,\zeta)=M(q)a _q+C(q,\dot{q})\dot{q}+G(q) 

a_{q}=\ddot{q}_{r e f}-\left[\omega_{n}^{2}\right]_{d i a g}\tilde{q}-\left[2\zeta\omega_{n}\right]_{d i a g}\dot{\tilde{q}}

{\tilde{q}}=q-q r e f

其中

M(q) - 是基于当前机器人配置的联合空间质量矩阵 使用 massMatrix 对象函数计算该矩阵。

C({\boldsymbol{q}},{\dot{\boldsymbol{q}}}) - 科里奥利项。它与关节速度一起构成速度乘积 C(q,\dot{q})\dot{q},可使用速度乘积对象函数计算。

G(q) - 在指定重力条件下,由于作用在机器人上的重力重量和力量,所有关节为保持其位置所需的力矩和力量。使用重力力矩对象函数计算重力力矩。

\left[\omega_{n}^{2}\right]_{d i a g} - 关节空间运动模型(jointSpaceMotionModel)对象的自然频率(NaturalFrequency)属性中的自然频率 N 乘 N 对角矩阵,单位为 Hz(s^{-1})。

\left[2\zeta\omega_{n}^{2}\right]_{d i a g} - 自然频率 n 的平方乘积与 jointSpaceMotionModel 对象的 DampingRatio 属性中指定的阻尼比 ζ 的 N-by-N 对角矩阵。

ωn 和 ζ 的值可以直接设置,也可以使用 updateErrorDynamicsFromStep 方法提供,该方法根据所需的单位步响应(使用瞬态行为特征定义)计算 ωn 和 ζ 的值。

由于对动态进行了补偿,因此在没有外力输入的情况下,假设反馈项连续积分且无时间延迟,就能实现误差动态。因此,在没有外力的情况下,独立关节运动类型为相同运动提供了一种更简单的建模方式。

有关机器人动力学的更多信息,请参阅机器人动力学。

3.3 比例-微分 (PD) 控制

当机器人被定义为受 PD 控制的系统时,机器人将根据标准刚体机器人动力学建立行为模型,但其广义力输入 Q 由控制法则给出,该法则根据关节误差和重力补偿应用 PD 控制。

输入 - 该模型接受 $q _{r e f},{\dot{q}}_{r e f}$ 作为所需的参考关节配置和速度(以向量形式指定)。用户还可以选择提供外力和扭矩 Fext,以牛顿和牛顿-米为单位,使用 externalForce 函数生成。

输出--模型输出 q,{\dot{q}},{\ddot{q}} 为关节配置、速度和加速度。在 MATLAB 版本的模型中,只返回加速度,用户必须选择积分器或 ODE 求解器来返回其他状态。

复杂性 - 中等复杂性。运动模型使用带有可选外力的全刚体动力学,控制器作为闭环系统的一部分建模,但控制器相对简单。

何时应用 - 当模拟的闭环系统使用将关节视为独立系统的控制器时,或使用 PD 型控制器且可能存在外力时,请使用该控制器。

与计算扭矩控制一样,该系统行为采用标准刚体机器人动力学,但使用 PD 控制法定义广义力输入 Q:

\begin{aligned}&\frac d{dt}\begin{bmatrix}q\\\dot{q}\end{bmatrix}=f_{dyn}(q,\dot{q},\tau,F{ext})\\\\&Q=g_{PD}(\widetilde{q},\dot{\widetilde{q}},K_P,K_D)=-K_P(\widetilde{q})-K_D(\dot{\widetilde{q}})+G(q)\\\\&\widetilde{q}=q-qref\end{aligned}

其中

G(q) - 是所有关节在刚体树的重力属性中指定的重力下保持位置所需的重力扭矩和力。使用 gravityTorque 对象函数计算重力扭矩。

控制输入依赖于这些用户定义的参数:

K_P - 比例增益,指定为 N 乘 N 矩阵,其中 N 为机械手可移动关节的数量

K_D - 微分增益,指定为 N 乘 N 矩阵

3.4 独立关节运动

在对该系统进行独立关节运动建模时,不是将闭环系统建模为标准刚体机器人动力学加控制输入,而是将每个关节建模为二阶系统,该系统已具有所需的误差行为:

  • 输入 - 该模型接受 qref , \dot{q}ref 作为所需的参考关节配置和速度(以矢量形式给出)。没有外力输入。
  • 输出 - 模型输出 q,\dot{q},\ddot{q} 作为关节配置、速度和加速度。在该模型的 MATLAB 版本中,只返回加速度,用户必须选择积分器或 ODE 求解器来返回其他状态。
  • 复杂性 - 复杂性较低。运动模型只是规定了位置控制器可以实现的误差行为。
  • 何时应用 - 当系统具有可近似的误差动态,且不需要外力输入时使用。

该系统为第 i 个关节建立了以下闭环二阶行为模型:

\dfrac{d}{dt}\begin{bmatrix}\widetilde{q}\\ \dot{\widetilde{q}}\end{bmatrix}=f_{err}(\widetilde{q},\dot{\widetilde{q}},\zeta,\omega_{n})=\begin{bmatrix}\dot{\widetilde{q}}\\-\omega_{n}^{2}\widetilde{q}i-2\zeta\omega_{n}\widetilde{q}i\end{bmatrix}

\begin{matrix}\widetilde{q}_{i}=q_{i}-q_{i.ref}\\\end{matrix}

\omega _n - 自然频率,单位为赫兹{Hz}\left(s^{-1}\right)

ζ - 阻尼比,无单位

 

因此,整个系统的模型为

\dfrac d{dt}\begin{bmatrix}q\\\dot{q}\end{bmatrix}=flJM(qref,\dot{q}ref,\zeta,\omega n)=\begin{bmatrix}0&I\\\begin{bmatrix}-\omega_n^2\end{bmatrix}_{diag}&[-2\zeta\omega_n]_{diag}\end{bmatrix}\begin{bmatrix}q\\\dot{q}\end{bmatrix}+\begin{bmatrix}0 & I \\ [\omega_{n}^2]_{diag} & [2\zeta\omega_{n}]_{diag}\end{bmatrix}\begin{bmatrix}qref\\\dot{q}ref\end{bmatrix} 

该模型依赖于这些用户定义的参数:

[\omega_n^2]_{diag} - JointSpaceMotionModel 对象的 NaturalFrequency 属性中自然频率的 N-by-N 对角矩阵,单位为 Hz (s-1)。

\left[2\zeta\omega_n^2\right]_{diag} - 自然频率平方和 ωn 与 jointSpaceMotionModel 对象的 DampingRatio 属性中指定的阻尼比 ζ 的乘积的 N-by-N 对角矩阵。

ωn 和 ζ 的值可以直接设置,也可以使用 updateErrorDynamicsFromStep 方法提供,该方法根据所需的单位步响应(使用瞬态行为特征定义)计算 ωn 和 ζ 的值。

独立关节运动模型代表了理想化行为下的闭环系统。在没有外力的情况下,假设反馈没有延迟(如连续积分),使用计算扭矩控制的运动模型会产生等效输出。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 图解教程 第5版 —— 第24章 预处理指令

文章目录 24.1 什么是预处理指令24.2 基本规则24.3 符号指令(#define、#undef )24.4 条件编译(#if、#else、#elif、#endif)24.5 条件编译结构24.6 诊断指令(#warning、#error)24.7 行号指令(#li…

order by之后的injection(sqllabs第四十六关)

order by相关注入知识 这一关的sql语句是利用的order by 根据输入的id不同数据排序不一样可以确定就是order by order by后面无法使用ubion注入(靠找不到) 可以利用后面的参数进行攻击 1)数字 没作用考虑布尔类型 rand和select ***都可以 …

瑞幸黑金鹿王者霸屏尊享权益的技术实现方式探讨

上周六,公司加班举办技术专场招聘活动,在忙碌的下午茶歇时间,我尊敬的伟大的韩百万老师提议带着我去瑞幸装了个 BI,扫码领取咖啡的那一个瞬间,瑞幸店内的电视大屏上赫然显示了:韩百万。回来的路上我虚心请教…

gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM

目录 一、Downloading ARM Binaries 二、Building gem5 to run ARM Binaries 三、Modifying simple.py to run ARM Binaries 四、Running gem5 五、ARM Full System Simulation An aside on FS simulations 这个是gem5-learning中Getting Started的最后一篇文章&#xff…

OpenCV-24双边滤波

一、概念 双边滤波对于图像的边缘信息能够更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。 空间距离:指的是当前点与中心点的欧式距离。空间域的高斯函数及其数学形式为: 其中(xi,yi&…

【Linux】Linux 系统编程——cd 命令

文章目录 1.命令概述2.命令格式3.常用选项4.相关描述5.参考示例 1.命令概述 “cd 命令,即 ‘change directory’ 的缩写,主要用于 Unix、Linux 和 macOS 等操作系统中,用于改变当前工作目录。该命令支持绝对路径和相对路径两种形式。若未指定…

关于运维·关于数据库面试题

目录 一、数据库类型 二、数据库引擎 三、mysql数据库类型 四、mysql的约束添加 五、主从复制原理 六、主从方式有几种 七、mysql主从数据不一致的原因 八、mysql的优化 九、什么是事务的特征 十、数据库读写分离的好处 十一、怎样优化sql语句 十二、mysql的同步方…

强化学习应用(七):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个价值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

[Linux 进程(三)] 进程优先级,进程间切换,main函数参数,环境变量

文章目录 1、进程优先级1.1 Linux下查看进程优先级1.2 Linux 进程优先级的修改PRI and NItop命令配合操作更改优先级 1.3 竞争 独立 并行 并发 2、进程间切换3、Linux2.6内核进程调度队列3.1 活跃进程3.2 过期进程 4 main函数参数 — 命令行参数4.1 利用main函数的参数实现一个…

Makefile编译原理 make和makefile

一.什么是makefile 如图所示,一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中, Makefile 文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译&#xff…

Android-基础

Activity生命周期 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。 2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当…

shell 脚本之一键部署安装 Nginx

定义一个变量来存放 nginx 版本号 version1.15.4nginx 下载地址:http://nginx.org/download/ 下列函数功能则是判断当前步骤是否执行成功,并将结果输出出来 function show_result(){if [ "$1" -eq 0 ]thenecho -e "\e[32m$2 is Succes…

YOLOv5独家原创改进:多层次特征融合(SDI)结合PConv、DualConv、GSConv,实现二次创新 | UNet v2最新论文

💡💡💡本文独家改进:多层次特征融合(SDI)高效结合DualConv、PConv、GSConv等实现二次创新 1)替代原始的Concat; 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),适合paper !!! 💡�…

“黑科技”四川首秀!“全光塑”个性化近视矫正技术在成都发布

眼睛被称为“心灵的窗口”,是我们最重要的器官之一。而近视却让我们心灵的窗口蒙上一层灰尘,为了摘掉眼镜,重获清晰视力,近视手术可谓是不二之选。数十年来,近视手术飞速发展,如今世界上前沿的近视矫正技术…

大众汽车将集成ChatGPT人工智能技术;OpenAI对新闻组织诉讼的回应

🦉 AI新闻 🚀 大众汽车将集成ChatGPT人工智能技术,提升车载语音助手功能 摘要:大众汽车宣布其现有的IDA语音助手将引入ChatGPT人工智能技术,并用于多款新车型。通过添加ChatGPT,大众汽车将支持以更直观、…

Javaweb之SpringBootWeb案例新增部门的详细解析

2.3 删除部门 查询部门的功能我们搞定了,下面我们开始完成删除部门的功能开发。 2.3.1 需求 点击部门列表后面操作栏的 "删除" 按钮,就可以删除该部门信息。 此时,前端只需要给服务端传递一个ID参数就可以了。 我们从接口文档中也…

多维时序 | Matlab实现GRO-CNN-BiLSTM-Attention淘金算法优化卷积神经网络-双向长短期记忆网络结合注意力机制多变量时间序列预测

多维时序 | Matlab实现GRO-CNN-BiLSTM-Attention淘金算法优化卷积神经网络-双向长短期记忆网络结合注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现GRO-CNN-BiLSTM-Attention淘金算法优化卷积神经网络-双向长短期记忆网络结合注意力机制多变量时间序列预测效果一览基…

Java--RSA非对称加密的实现(使用java.security.KeyPair)

文章目录 前言实现步骤测试结果 前言 非对称加密是指使用不同的两个密钥进行加密和解密的一种加密算法,调用方用使用服务方提供的公钥进行加密,服务方使用自己的私钥进行解密。RSA算法是目前使用最广泛的公钥密码算法。Java提供了KeyPairGenerator类要生…

MySQL面试题 | 05.精选MySQL面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

小程序中滚动字幕

需求&#xff1a;在录像时需要在屏幕上提示字幕&#xff0c;整体匀速向上滚动 html部分&#xff1a; <view class"subtitles_main"><view style"font-size:34rpx;color: #fff;line-height: 60rpx;" animation"{{animation}}">人生的…