MATLAB机器人与Simulink的网上研讨会(自己学习用)

机器人操纵, 1 部分: 运动学

Posted by Christoph Hahn, April 11, 2018

在这篇博文中,塞巴斯蒂安. 卡斯特罗将用 MATLAB 和仿真来讨论机器人操作。这部分将讨论运动学, 接下来的部分将讨论动力学.

– –

机器人机械臂速成课程

让我们从运动学和动力学的快速比较开始。

  • 运动学是对运动的分析而不考虑力。在这里, 我们只需要几何性质, 如长度和自由度的机械手机构。
  • 动力学是对由力引起的运动的分析。除了几何, 我们现在需要的参数, 如质量和惯性计算物体的加速度。

机器人机械手通常由几个关节组成。关节由旋转或 棱镜(线性) 自由度 (自由度) 组成 。因此, 可以控制关节位置, 将机器人的末端效应器放置在3D 空间中。

如果你知道机器人的几何形状和所有的关节位置, 你就可以计算出机器人上任何点的位置和方向。这称为正向运动学 (FK).

然而, 更频繁的机器人操纵问题恰恰相反。我们要计算所需的关节角度, 以便最终效应器达到一个特定的位置和方向。这被称为逆运动学 (IK), 更难解决。

解逆运动学

根据您的机器人几何, IK 可以解析或数值计算。

  • 解析解意味着, 你可以以闭合形式推导出所需的末端效应器位置的关节位置的表达式。这是有益的, 因为你做所有的工作离线和解决 IK 将是快速的。与工程中的一切一样: 如果你有一个精确的系统模型, 你应该利用它!
  • 数值解通常比解析解更慢、更不容易预测, 但它们可以解决比解析解更难的问题 (我们在下面展开)。但是, 这些解决方案引入了初始条件、优化算法选择、甚至随机机会等形式的不确定性。所以, 你可能无法得到你想要的答案。

您的终端执行器的3D 姿势可以指定6参数: 3 的位置和3的方向。从技术上讲, 如果你的机械手中有多达6非冗余关节, 你可以推导出一个解析解, 假设所需的位置是可到达的。

机器人设计者很聪明地确保他们的机械手具有高度的可控性自由度, 同时仍然确保分析 IK 解决方案是可能的。例如, 我一直在接受Udacity 机器人软件工程师 Nanodegree, 其中一个项目涉及库卡 KR210 6 自由度机械手的分析 IK。该机械手有一个球形手腕, 分离的位置和方向分析 IK 问题。你可以在 GitHub 上找到我的份书面记录.

那么, 为什么你会选择一个数值解决方案呢?下面是一些想法。

  • 你的机械手有多余的自由度 (总是7或更多的情况下)
  • 你不想推导出数学, 并有一个数值解的计算资源
  • 您的目标位置无效, 但仍希望尽可能接近它。
  • 有多个, 甚至是无限的解析解
  • 要引入多个复杂的约束

有多个解决方案的情况下, 这是相对容易处理的分析 IK。
左IK 正好有两个解决方案-"超过" 或 "下"。
权利IK 具有无限的解决方案, 因为基的任何旋转都是有效的。

复杂的操作案例, 可能是数值解决方案的候选对象。
(左) 7 自由度机械手可以将末端效应器定位为多个有效解。
权利机械手上两个坐标系之间的位置约束示例。

综上所述, 解析 IK 是快速、准确、可靠的。然而, 当你走向更困难的问题时, 数值解决方案往往更容易实现, 甚至是必要的。

机器人在 MATLAB 和仿真中的代表

现在, 你希望有一个基本的想法, 为什么机械手运动学是重要的, 什么样的现实世界的问题, 他们可以解决。在 MATLAB 和仿真中, 有两种内置的方法可以与机器人机械手模型一起使用。

Matlab

  • 如何:创建刚性体树对象
  • 何时使用:求解正、逆运动学和动力学, 提取机械性能 (雅可比, 质量矩阵, 重力扭矩等)

 

Simulink

  • 如何:创建Simscape多体模型
  • 何时使用:系统级动态仿真, 与执行器物理模型的集成, 接触力学等。

 

刚性体树对象和 Simscape 多体模型都可以从头开始创建, 或者从统一的机器人描述格式 (URDF) 文件中导入。此外, Simscape 多体还可以从通用 CAD 软件中导入3D 模型。我的同事克里斯托弗. 汉娜在这上面写了一篇博文

从2018a 版开始, 机器人系统工具箱包括一个机械手算法的仿真块库。这些块允许您对刚体树对象进行运动学和动态分析, 从而使上述两种表示在系统级仿真和控制设计应用中共同工作。在2部分中, 您将进一步了解这一点。

是的, 这些块生成 c/c++ 代码, 这样您就可以在 MATLAB 和仿真之外部署独立的算法。

逆运动学在 MATLAB 和仿真中的运用

机器人系统工具箱为机械手的逆运动学提供两个数值求解器:

  • 逆运动学:强制执行联合限制, 并允许为每个位置和方向目标提供相对权重。
  • 广义逆运动学:允许您添加多个和更复杂的约束, 如坐标帧之间的相对位置、针对某些对象或时变的联合限制。

下面是一些例子 MATLAB 代码和一个广义 IK 的动画模型的反思索耶, 它有一个7自由度的手臂。在这里, 我们设置了一个约束的最终效应器的位置, 同时强制执行, 最终效应指向一个单独的目标点附近的地面。

sawyer = importrobot('sawyer.urdf', 'MeshPath', ...
    fullfile(fileparts(which('sawyer.urdf')),'..','meshes','sawyer_pv'));
gik = robotics.GeneralizedInverseKinematics('RigidBodyTree',sawyer, ...
    'ConstraintInputs',{'position','aiming'});

% Target Position constraint
targetPos = [0.5, 0.5, 0];
handPosTgt = robotics.PositionTarget('right_hand','TargetPosition',targetPos);

% Target Aiming constraint
targetPoint = [1, 0, -0.5];
handAimTgt = robotics.AimingConstraint('right_hand','TargetPoint',targetPoint);

% Solve Generalized IK
[gikSoln,solnInfo] = gik(sawyer.homeConfiguration,handPosTgt,handAimTgt)
show(sawyer,gikSoln);

大图中的逆运动学

测试了 IK 解决方案后, MATLAB 和仿真软件允许您探索构建完整的机器人操作系统的下一步步骤, 例如:

  • 集成 IK 与机器人动力学仿真
  • 添加其他算法, 如监视逻辑、感知和路径规划
  • 从算法中自动生成独立的 c/c++ 代码, 并部署到硬件或中间件 (如 ROS) 中。

我们在视频 "设计机器人机械手算法" 中进行了讨论, 其特点是4自由度ROBOTIS OpenManipulator 平台。您可以从MATLAB 中央文件交换下载示例文件.

结论

你们中的许多人可能正在为已经有内置联合扭矩控制器的现有机器人开发算法。从这个角度, 你可以假设机器人关节将充分跟踪你提供的任何有效的设定。

运动学单独可以是有用的设计运动规划算法, 以及执行分析完全基于机器人几何-例如, 工作空间分析或避碰。

接下来的部分中, 我们将更多地讨论机械手动力学, 以及如何使用 MATLAB 和仿真技术来简化低级控制设计应用程序。

Robot Manipulation, Part 1: Kinematics

https://blogs.mathworks.com/racing-lounge/2018/04/11/robot-manipulation-part-1-kinematics/?dir=autoplay

机器人操纵,第 2 部分: 动力学与控制

Posted by Christoph Hahn, April 25, 2018

在这篇博文中,塞巴斯蒂安. 卡斯特罗将用 MATLAB 和仿真来讨论机器人操作。上一部分讨论了运动学(如果你没有阅读它, 我们建议你这样做), 而这一部分讨论动力学.

介绍

为了激发低电平机械手控制的重要性, 我想介绍几个工程原型。

  • 机器人程序员通常从具有可控关节或末端效应器位置的机器人开始。如果你是一个机器人程序员, 你可能正在实施运动规划算法和集成的机械手与其他软件组件, 如感知和决策。
  • 机器人设计者有一个目标, 使机器人程序员。如果你是机器人设计师, 你需要提供一个能够安全可靠地接受关节或末端效应器命令的机械手。您可能会应用此帖子中讨论的一些控制设计技术, 并在嵌入式系统上实现这些控制器。

当然, 在现实生活中没有什么是非常严格的分离。可能是机器人制造商将提供自己的控制器, 但也可以决定暴露控制参数, 选项, 甚至可能是一个直接接口的执行器扭矩。

从运动学到动力学

为了重述前面的部分, 运动学将机器人机械手的关节位置映射为感兴趣的坐标系的位置和方向-通常是端部效应器。另一方面, 动力学将所需的关节力和扭矩映射到它们的位置、速度和加速度。

要从运动学转向动力学, 我们需要更多关于机械手力学的信息。具体地说, 我们需要以下惯性特性:

  • 质量:牛顿第二定律涉及质量与力和线性加速度。
  • 惯性: 这是一个3×3矩阵, 通常称为惯性张量, 相关的扭矩和角加速度。由于该矩阵是斜对称的, 所以可以用6参数定义它:
    • 3对角元素或惯性矩, 它与轴上的扭矩有关, 与同一轴的加速度有关。
    • 3对角的元素或惯性的产品, 它与关于轴的扭矩有关另外两个轴的加速度。
  • 质量中心:如果质心不是位于我们定义的人体坐标系中, 我们需要应用平行轴定理将重心旋转转换为我们感兴趣的坐标框架的旋转。

通常, 您将导入机器人。RigidBodyTree从现有的机械手描述-例如, URDF 文件。在这种情况下, 惯性属性将自动放置在每个机器人。包含树的刚体。

控制关节力和扭矩

机器人机械手控制器可以包含以下组件。

  • 反馈:使用所需和测量的运动计算联合输入。这通常涉及一个控制定律, 最大限度地减少误差之间的期望和测量的运动。
  • 前馈:使用所需的运动只计算联合输入。这往往-但不一定-涉及一个模型的机械手力学计算开放回路输入。

 

在我们的视频 "控制机械手关节", 我们探索两个不同的联合控制器的例子, 以4自由度ROBOTIS OpenManipulator 平台为特色。您也可以从MATLAB 中央文件交换下载示例文件.

控制器示例 1: 逆运动学 + 联合空间控制器

首先,逆运动学 (IK)用于将参考端效应器位置转换为一组参考关节角。然后, 控制器完全在配置空间中 (即在联合位置上) 操作。

  • 前馈期限使用逆动力学对我们的机械手模型。这计算所需的关节力/扭矩, 使机械手遵循所需的运动, 并补偿重力。
  • 反馈术语使用 PID 控制。每个接头 (4 个外卷接头 + 手爪) 都有独立的控制器, 最大限度地减少所需和测量的运动之间的误差。

为了平滑运动, 我们通常需要一个闭合形式的轨迹, 如曲线方程。这是因为逆动力学需要位置、速度和加速度来计算所需的关节力/扭矩。因此, 有一个可微的参考轨迹, 使这容易得多。

理论上, 逆动力学应该足以控制机器人手臂。然而, 有关节力学 (刚度, 阻尼, 摩擦等), 测扰动, 传感器/执行器噪音, 甚至数字误差, 这可能会很容易影响到完全开环控制器的鲁棒性。因此, 总是推荐一个额外的反馈补偿器。

虽然前馈和反馈控制部分相对容易实现, 计算成本低廉, 但该控制器结构依赖于求解 IK。正如我们在前面部分讨论的,机器人系统工具箱的实现使用一个数值解决方案, 因此可以需要大量的计算。您可以通过提供良好的初始猜测 (通常是以前的度量) 来解决此问题, 限制最大迭代次数, 或者切换到分析 IK 解决方案。

控制器示例 2: 任务空间控制器

第二个控制器执行任务空间中的控制, 即, 在末端效应器位置和方向上。此外, 它还避免了使用几何雅可比对逆运动学的需要。

几何雅可比是机器人配置q (关节角度/位置) 的功能, 这就是为什么它经常被称为J (q)。雅可比是一个映射从联合速度到世界速度的坐标框架的利益。然而, 有了一点数学, 你可以发现它也映射联合部队/扭矩的世界力量/扭矩。我发现这个博客帖子是一个有用的参考。

  • 这个控制器的前馈项只做一件事: 补偿重力。
  • 反馈术语对终端执行器的 XYZ 位置进行 PID 控制 (我们忽略方向, 但你真的不应该!) 计算最终效应器坐标系下所需的力。然后, 雅可比将控制输出转换为关节扭矩和力。

下面是这个示例控制器的仿真模型的截图。与上面的示意图不同, 该模型包含其他现实的工件, 如滤镜、速率限制器、饱和度和具有基本逻辑的解耦爪控制器。您可以从MATLAB 中央文件交换下载此模型.

 

控制设计技术综述

一旦你有了你的机械手模型, 在 MATLAB 和仿真中有很多工具可以帮助你设计联合控制器。这些包括

ROBOTIS OpenManipulator 模型 "肩" 关节上的 PID 调谐器输出

传统的控制设计依赖于线性化, 或者找到一个关于特定操作点的非线性模型的线性近似--例如, 机械手的 "家" 或平衡位置。当机器人状态偏离该区域时, 设计大约线性区域的控制器会变得不那么有效, 并且可能不稳定。

非线性控制技术可以通过考虑系统的测量状态 (在我们的情况下, 联合或末端效应器位置) 来解决这个问题。前馈技术, 如逆动力学, 或计算几何雅可比的苍蝇, 可以确保控制器在模型中的非线性。另一个流行的技术是增益调度, 这既可以用于传统的控制器MPC 控制器.

另一种选择是采用无模型技术, 例如:

  • 优化:通过仿真优化, 可以优化控制参数。虽然优化不保证稳定性, 但它允许您自动调整宽度的参数, 如增益, 控制努力/速率限制, 阈值等, 这可能导致良好的结果-特别是在高度非线性系统。
  • 机器学习:强化学习, 或自动学习的尝试和错误, 是一个常用的技术, 用于机器人操作。例如,本文视频显示了深层强化学习, 也就是说, 使用强化学习技术的深层神经网络的学习参数。

Robot Manipulation, Part 2: Dynamics and Control

https://blogs.mathworks.com/racing-lounge/2018/04/25/robot-manipulation-part-2-dynamics-and-control/?dir=autoplay

结论

现在你已经看到了机器人机械手设计的运动学和动力学的概述。我希望这是一个有用的介绍, 在这个领域的语言, 一些常用的技术在实践中, 和领域, MATLAB 和仿真可以帮助你设计和控制机器人。

我们希望, 当您探索不同的体系结构、集成监控逻辑、执行权衡研究等时, 仿真可以帮助您设计阶段。另外, 请记住, 仿真允许您从控制算法自动生成独立的 c/c++ 代码, 因此可以将它们部署到硬件或中间件 (如ROS ) 中。.

如果你想看到更多的关于机器人操作的材料, 或机器人的其他主题, 请随时给我们留下评论或电子邮件在[email protected] roboticsarena@mathworks. com

参看网址:

https://blogs.mathworks.com/racing-lounge/2017/11/08/matlab-simulink-ros/

 https://blogs.mathworks.com/racing-lounge/category/robotics/?s_tid=Blog_racing-lounge_Category

 https://blogs.mathworks.com/racing-lounge/2018/04/25/robot-manipulation-part-2-dynamics-and-control/?dir=autoplay#

猜你喜欢

转载自blog.csdn.net/weixin_39090239/article/details/81867999
今日推荐