MATLAB - 机器人任务空间运动模型

系列文章目录


前言

任务空间运动模型描述了机械臂在闭环任务空间位置控制下的运动特性,用于任务空间运动模型对象和任务空间运动模型块。

机器人机械手是典型的位置控制设备。要进行任务空间控制,需要在 SE(3) 中指定一个参考末端执行器姿态,然后模型会返回关节配置向量 q 及其状态导数。您可以对机器人关节进行闭环控制,并使用运动模型模拟机器人在此控制下的行为。

要使这种方法最接近实际系统的运动,必须准确表示控制器和被控对象的动态。虽然任务空间控制有很多变体,但本模型使用的是相对简单的雅各布-转择方法,当机器人和控制器的动态参数经过精心选择以匹配所需的行为时,该方法最为精确。为此,您必须了解关键参数和运动模型行为:

  • 关键变量
  • 运动方程

一、背景

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

机器人位置控制分为两类:

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

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

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

1.2 在 MATLAB® 和 Simulink® 中使用

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

  • 在 Simulink 中,任务空间运动模型块接受参考输入和可选外力(如适用),并返回关节配置、速度和加速度。该程序块可处理积分,因此无需额外的积分。
  • 在 MATLAB 中,taskSpaceMotionModel 系统对象对闭环运动进行建模。导数方法返回关节配置、速度和加速度在每一时刻的导数,因此必须使用 ODE 求解器或等效的外部积分方法来模拟时间运动。

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

二、关键变量

模型状态由以下值组成

  • q - 机器人关节配置,作为关节位置矢量。旋转关节以 rad 为单位,棱柱关节以 m 为单位。
  • - 关节速度矢量,旋转关节以 rad⋅s-1 为单位,棱柱关节以 m⋅s-1 为单位。
  • - 关节加速度矢量,对于旋转关节,单位为 rad⋅s-2 ;对于棱柱关节,单位为 m⋅s-2

机器人的末端执行器姿态 T(q) 是一个 4 乘 4 的均质矩阵,相对于机器人底部的原点定义。位置单位为米。T 的两种形式用于计算控制误差:

  • - 参考末端执行器姿态,指定为期望的末端执行器姿态
  • - 运动实现的实际末端执行器姿态

末端执行器变换分解为 :

其中,R 是一个 3 乘 3 的旋转矩阵,X 是一个以米为单位的 3 乘 1 xyz 位置向量。

任务空间速度 v 和加速度 a 由两个 6-by-1 向量组成:

其中,ω 和 α 分别是 3-by-1 坐标系角速度和加速度向量。

三、运动方程

使用任务空间运动模型表示受控制法则影响的机器人,控制法则作用于任务空间误差。例如,当控制法则的输入指定了末端执行器运动时。虽然有很多方法可以实现这样的系统,但在本模型中,闭环响应是通过提供一个 proportional-derivative Jacobian-Transpose 的系统,在 "使用 KINOVA Gen3 机械手规划和执行任务空间和联合空间轨迹 "对象中近似实现的。无论您使用的系统如何工作,该模型都可用作闭环任务空间控制下系统的低保真近似值。

3.1 PD 控制

当运动模型使用比例-微分(PD)控制(由 taskSpaceMotionModel 对象的 MotionType 属性决定)时,模型将使用标准刚体动力学计算前向动力学,但受制于比例-派生控制法则,该法则作用于期望姿态与实际末端执行器姿态之间的误差。

  • 输入 - 该模型接受参考姿态 Tref 和参考末端执行器速度 vref
  • 输出 - 该模型以矢量形式返回关节配置、速度和加速度
  • 复杂度 - 模型的复杂度描述了所需的总体计算量。这是一个中等复杂度的运动模型。它使用完整的刚体动力学,但模型中使用的控制法则相对简单。
  • 何时应用 - 使用任务空间运动模型表示受控制法影响的机器人,控制法作用于任务空间误差。在实际应用中,机器人通常会受到更为复杂的任务空间控制法则的影响,但只要误差动态表现类似,仍可通过类似这种简化系统模拟近似行为。由于这种简化的控制动作不包含任何反馈线性化项,因此在跟踪缓慢变化的输入时最为精确。与反应速度更快的控制器相比,该模型就不那么合适了,尤其是当参考输入发生较大动态变化时。

在该系统中,关节位置、速度和加速度均采用标准刚体机器人动力学计算。更多信息,请参阅机器人动力学。广义力输入 Q 由任务空间误差的 PD 控制法提供,并使用雅各布-转置控制法缩放至关节空间:

其中

  • - 是用 rotm2eul () 转换为欧拉角的旋转误差。
  • - 是 xyz 坐标误差,计算公式为 .
  • G(q) - 是所有关节在指定重力下保持其位置的重力扭矩和力。更多信息,请参阅 gravityTorque 函数。
  • J(q) - 是给定关节配置的几何雅各布系数,更多信息,请参阅几何雅各布系数函数。

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

  • K P - 比例增益,指定为 6 乘 6 矩阵
  • K D - 微分增益,指定为 6 乘 6 矩阵
  • B - 联合阻尼矢量,指定为以 N⋅s⋅rad 为单位的阻尼常数的双元矢量 -1 和 N⋅s⋅m -1 用于棱柱关节

您可以将这些参数指定为 taskSpaceMotionModel 对象的属性。

该模型接受以下输入

  • T 参考 - 参考末端执行器姿势,指定为所需的末端执行器姿势
  • v 参考 - 参考末端执行器速度,指定为矢量 v=[ ω ˙ X ],角速度 ω 和平移速度
相关推荐
懒大王爱吃狼31 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
XiaoLeisj4 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
励志成为嵌入式工程师4 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉5 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer5 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
记录成长java7 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山7 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js