【添加核心机械臂动力学】Model and Control a Manipulator Arm with Robotics and Simscape

本文主要是介绍【添加核心机械臂动力学】Model and Control a Manipulator Arm with Robotics and Simscape,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机械臂动力学

为了设计控制器,机械臂动力学必须表示给定力矩输入的关节位置。这在机械臂动力学子系统中通过一个前向动力学块实现,该块将关节力矩转换为给定当前状态的关节加速度,然后通过两次积分得到完整的关节配置。积分器初始化为q0dq0,即初始关节位置和速度。

此外,夹爪控制子系统将关节控制力矩覆盖到夹爪执行器上,应用10牛顿的力来打开或关闭夹爪。
需要注意的是,第二个积分器是饱和的。

虽然设计良好的位置控制器下的机械臂通常不会达到关节极限,但由于夹爪动作的开环力的添加,需要关节极限以确保响应的现实性。对于更精确的模型,可以将关节饱和连接到速度以重置积分,但对于此模型,这一精度级别已足够。

夹爪传感器

该模型还添加了一个更详细的夹爪传感器,以检查夹爪是否确实打开或关闭。夹爪传感器从关节配置的最后两个值中提取数据(这些值对应于夹爪的位置),并在MATLAB函数块Gripper Logic中将其与closeGripper命令给出的预期夹爪位置进行比较。当夹爪关节的位置与closeGripper命令给定的期望状态相匹配时,Gripper Status返回1。当夹爪尚未达到这些状态时,Gripper Status返回0。这与早期简化模型中的夹爪模型行为相匹配。
在这里插入图片描述

用于控制机械臂夹爪(Gripper)的控制模块

该模块的主要功能是通过控制输入信号来修改施加在机械臂关节上的力矩,以实现夹爪的开合操作。
在这里插入图片描述
在这里插入图片描述

模块功能说明

  1. Controller Joint Torques and Forces (控制器关节力矩和力)

    • 输入端口 1:接收来自控制器的关节力矩和力,这些力矩和力是控制器根据机械臂的当前状态和期望状态计算出来的,主要用于驱动机械臂的每个关节。
    • 这些信号在后续的处理过程中可能会被修改,以便实现夹爪的开合操作。
  2. Demux 块 (tau_Demux)

    • 功能:Demux(Demultiplexer)块用于将输入的关节力矩信号解复用为多个独立的信号。在这个模型中,它将18个关节的力矩信号分解开,以便对每个关节的力矩单独处理。
    • 输出:分解后的信号将被送入各个加法器(Sum 块)进行进一步的处理。
  3. Sum 块 (加法器)

    • 功能:加法器用于将输入的关节力矩信号与可能的修正量进行相加或相减。在这个模型中,每个关节的力矩都经过一个加法器,其中部分关节力矩可能会根据夹爪的控制信号进行修改。
    • 夹爪控制信号(Gripper Close Command)用于确定是否需要对夹爪对应的关节力矩进行修正。
  4. Gripper Close Command (夹爪关闭命令)

    • 输入端口 2:接收一个控制信号,用于指示夹爪的状态。如果信号为1,表示需要关闭夹爪;如果信号为0,表示需要打开夹爪。
    • Double 块:将输入的控制信号转换为适当的数据类型,以便后续处理。
    • 乘法器 (Gain 块):将控制信号与固定值(如10)相乘,生成一个修正力矩,用于施加在夹爪的关节上。
    • 加法器:将修正后的力矩信号与原始力矩信号相加,以调整夹爪的动作。
  5. Modified Joint Torques and Forces (修改后的关节力矩和力)

    • 输出端口:将修改后的力矩信号输出,这些信号会用于实际驱动机械臂的各个关节,包括夹爪的动作。
    • 最终的力矩信号包括了控制器计算出的原始力矩,以及根据夹爪状态所做的修正

总结

这个模块的核心功能是通过接收控制器计算的关节力矩信号,并根据夹爪的控制命令对相关的关节力矩进行调整。具体来说,当夹爪需要关闭时,模块会在夹爪对应的关节力矩上叠加一个修正力矩,从而实现夹爪的动作。调整后的力矩信号最终输出,用于驱动机械臂完成包括夹爪操作在内的所有任务。

该模块名为 Manipulator Forward Dynamics,用于计算机械臂在给定关节力矩和状态下的关节加速度。这个模块在机器人动力学仿真中非常关键,因为它能够准确地模拟机械臂的运动。

Manipulator Forward Dynamics模块基于给定的关节力矩和机械臂的当前状态,计算出各个关节的加速度。

这个过程被称为前向动力学(Forward Dynamics),是机器人动力学的核心计算之一。

输入参数:

  • Config: 当前的关节位置配置。该输入是一个 Nx1 的向量,N 表示机械臂的非固定关节的数量。它包含了每个关节的当前位置(通常以弧度为单位)。
  • JointVel: 当前的关节速度。该输入也是一个 Nx1 的向量,表示每个关节的当前速度(通常以弧度/秒为单位)。
  • JointTorq: 施加在关节上的力矩。这个输入是一个 Nx1 的向量,包含了每个关节的当前力矩或力(根据关节类型不同)。
  • FExt: 外部作用力矩。这个输入是一个 6xM 的矩阵,M 是机械臂中刚体的数量。该矩阵用于表示外部作用在每个刚体上的力和力矩。

输出参数:

  • JointAccel: 输出的关节加速度。这是一个 Nx1 的向量,表示每个关节在给定力矩和状态下产生的加速度。

刚体树模型:

  • Rigid body tree: 该模块依赖于一个刚体树(rigidBodyTree)对象,这个对象描述了机械臂的结构,包括关节的连接方式、各个部件的质量、惯性等物理属性。该对象在 MATLAB 的工作区中定义并传递给模块。

模块在系统中的作用

  • 前向动力学计算:

    • 通过前向动力学计算,模块能够基于当前的关节位置和速度以及施加的力矩,求解出每个关节的加速度。这对于精确模拟机械臂在各种力和外力作用下的运动至关重要。
  • 仿真和控制:

    • 该模块输出的关节加速度可以用于进一步的仿真,或者用于更新机械臂在下一时刻的关节速度和位置。它是机械臂动态模型的核心部分,确保了仿真系统的精确性和物理一致性。

Gripper Sensor用于检测机械臂夹爪(Gripper)的状态,确定夹爪是否已经达到预期的开合位置。

1. Gripper Sensor 模块

  • 功能概述:

    • 该模块的主要功能是通过测量夹爪的实际位置,并将其与预期的目标位置进行比较,从而判断夹爪是否已经到达预期的状态。最终的输出是一个布尔值,表示夹爪是否到达目标位置。
  • 输入端口:

    1. U (18): 这个输入代表机械臂的关节位置,包含18个关节的位置信息。通过 Demux 分解后提取出夹爪相关的关节位置信息。
    2. 1/z: 表示一个状态保持器,用来存储上一个时间步的夹爪控制信号,通常用于检测状态变化。
  • 输出端口:

    • Gripper Status (夹爪状态): 表示夹爪是否已经达到目标位置。如果到达,输出 1,否则输出 0

2. Gripper Logic 模块

  • 功能概述:
    • Gripper Logic 模块接收夹爪的位置和控制信号,判断夹爪是否已到达目标状态(完全打开或关闭)。内部执行的逻辑由一个 MATLAB 函数实现。

3. MATLAB 函数 isGripperStateReached

  • 代码解释:

    function isReached = isGripperStateReached(gripperPos, closeGripper)isReached = false;% 定义关键值posTgtThreshold = 0.01; % 位置误差容许范围openValue = 0.025;      % 夹爪打开时的位置值closeValue = 0;         % 夹爪关闭时的位置值% 根据控制信号确定目标位置if closeGrippergripperTarget = closeValue;elsegripperTarget = openValue;end% 计算左臂和右臂夹爪的误差diffWptsLeft = abs(gripperPos(1:2) - [gripperTarget; gripperTarget]);diffWptsRight = abs(gripperPos(3:4) - [gripperTarget; gripperTarget]);% 判断左臂和右臂夹爪是否都已到达目标位置posErrorStatusLeft = all(diffWptsLeft < posTgtThreshold);posErrorStatusRight = all(diffWptsRight < posTgtThreshold);if posErrorStatusLeft && posErrorStatusRightisReached = true;endend
    
  • 函数功能:

    • isReached: 返回值 isReached 是一个布尔变量,用于指示夹爪是否已经到达目标状态。如果到达,返回 true,否则返回 false

    • posTgtThreshold: 定义了一个误差容忍范围,表示夹爪位置与目标位置之间的允许偏差。在这个范围内,位置被认为是达到了目标位置。

    • openValue 和 closeValue: 分别表示夹爪在完全打开和完全关闭时的目标位置值。

    • gripperTarget: 根据 closeGripper 的输入值(表示是否需要关闭夹爪),确定当前的目标位置是 openValue 还是 closeValue

    • posErrorStatus: 计算当前夹爪位置与目标位置之间的差异,并判断该差异是否在容忍范围内。如果是,则认为夹爪已经到达目标位置。

Selector模块用于从输入信号向量中选择特定元素或一组元素进行输出。

该模块在 Simulink 模型中非常有用,特别是在处理多维数组或信号向量时,可以提取所需的部分进行后续处理。
在这里插入图片描述

模块的主要功能:

  1. 选择输入向量的特定元素

    • Selector 模块允许用户从输入的向量信号中选择特定的元素。你可以指定索引位置来提取单个元素或者一组连续的元素。
  2. 输入维度和索引选择

    • 输入维度: 该参数表示输入信号的维度。在此例中,输入端口大小为18,意味着输入信号是一个长度为18的向量。
    • 索引模式: “从1开始” 表示索引是基于 MATLAB 语言的索引系统,从1开始计数。
    • 索引选择: 通过选择索引,可以指定要提取的元素范围。
  3. 输出

    • 模块根据设定的索引选择,输出指定的信号分量。

在当前模型中的作用:

在当前模型中,Selector 模块被用于从机械臂的所有关节角度(18个分量)中提取出与夹爪(Gripper)相关的关节角度信息。这些角度信息将被送入后续的处理模块,用于判断夹爪的开合状态。

总结:

Selector 模块使得用户能够方便地从信号向量中提取出所需的部分,在信号处理和控制系统设计中非常实用。通过这种方式,可以只对关心的部分信号进行处理,从而提高系统的计算效率和处理的针对性。在本例中,它用于提取与夹爪操作相关的关节角度信息,供后续逻辑模块进行分析和决策。

这篇关于【添加核心机械臂动力学】Model and Control a Manipulator Arm with Robotics and Simscape的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106156

相关文章

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

有关机械硬盘的基础知识

1,机械硬盘的品牌   目前市场中常见的笔记本电脑的机械硬盘品牌主要有希捷、西部数据、三星等。   2,机械硬盘的容量   硬盘容量,即硬盘所能存储的最大数据量。虽然笔记本电脑硬盘的容量会因单位密度的提升而增加,不过和台式电脑的大容量比起来,笔记本电脑硬盘的容量仍然落后许多。笔记本电脑的硬盘除了对磁盘有体积较小和数量较少的要求之外,对功耗、耐用程度、抗震性及成本等的考虑,也让笔记