学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#学生成功#金宝app

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

在这篇博文中,塞巴斯蒂安·卡斯特罗将讨论用MATLAB和Simulink进行机器人操作。金宝app这一部分将讨论运动学 ,以及下一个部分将讨论动力学

- - - - - - - - - - - -

机器人操作工速成班

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

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

机器人操纵器通常由几个组成关节.关节由转动(旋转)或棱镜(线性)自由度(景深)。因此,可以控制关节位置,将机器人末端执行器放置在三维空间中。

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

然而,更常见的机器人操纵问题恰恰相反。我们想要计算出末端执行器到达特定位置和方向所需的关节角度。这被称为逆运动学(IK)的问题更难解决。

解逆运动学

根据机器人的几何形状,IK既可以解析求解,也可以数值求解。

  • 分析解决方案金宝搏官方网站意味着你可以推导出,在封闭形式下,关节位置的表达式给定期望的末端执行器位置。这是有益的,因为你做所有的工作离线和解决IK将很快。与工程中的一切一样:如果您有系统的精确模型,您应该利用它!
  • 数字解决方案金宝搏官方网站通常比解析解更慢,更不可预测,但它们可以解决比解析解更难的问题(我们将在下面展开讨论)。金宝搏官方网站然而,这些解决方案引入了初始条金宝搏官方网站件、优化算法选择甚至随机机会的不确定性。所以,你可能得不到你想要的答案。

末端执行器的3D姿态可以由6个参数指定:3个用于位置,3个用于方向。从技术上讲,如果机械臂中有多达6个非冗余关节,假设所期望的位置是可达的,则可以推导出解析解。

机器人设计师很聪明地确保他们的机械手具有高自由度的可控性,同时仍然确保分析IK解决方案是可能的。金宝搏官方网站比如,我一直在吃Udacity机器人软件工程师纳米学位,其中一个项目涉及a的分析IK库卡KR2106自由度机械手。该机械手有一个球形手腕,可以解耦位置和方向解析IK问题。你可以在GitHub上找到我的文章

为什么要选择数值解呢?这里有一些想法。

  • 你的机械手有多余的自由度(通常是7或更多的情况)
  • 你不需要推导数学,也不需要计算资源来得到数值解
  • 你的目标位置是无效的,但你仍然想要尽可能接近它
  • 有多个,甚至无穷多个解析解金宝搏官方网站
  • 您希望引入多个复杂的约束

有多个解的情况,用分析性知识比较容易处理。金宝搏官方网站
(左)IK有两种解决方案——“过度”或“不足”。金宝搏官方网站
(右)IK有无限个解,因为基的任何旋转都有效。金宝搏官方网站

复杂的操作情况,可能是数值解的候选人。
(左)7-DOF机械手可以用多个有效解定位末端执行器。金宝搏官方网站
(右)机械手上两个坐标坐标系之间的位置约束示例。

总之,用解析法求解IK是快速、准确和可靠的。然而,当你面对更困难的问题时,数值解决方案往往更容易实现,甚至是必要的。金宝搏官方网站

在MATLAB和Simulink中表示机器人机械手金宝app

现在,希望你们对机械手运动学的重要性有了基本的了解,以及它们能解决什么样的现实问题。有两种内置的方法可以在MATLAB和Simulink中使用机器人操作器模型。金宝app

MATLAB

  • 怎样去:创建一个刚体树物体
  • 使用时间:求解正逆运动学和动力学,提取机械特性(雅可比矩阵,质量矩阵,重力力矩等)

金宝app

  • 怎样去:创建一个Simscape多体模型
  • 使用时间:系统级动态仿真,与执行器物理模型集成,接触力学等。

刚体树对象和Simscape多体模型都可以从头创建,或者导入URDF (Unified Robot Description Format)文件.此外,Simscape Multibody还可以从常用的CAD软件中导入3D模型。我的同事Christoph Hahn写了一篇博客在这。

从发布2018a开始,机器人系统工具箱包括一个机械手算法Simulink块库金宝app.这些块允许您对来自Simulink的刚体树对象执行运动学和动态分析,这使得上述两种表示方式一起用于系统级仿真和控制设计应用程序。金宝app您将在第2部分中了解更多有关这方面的内容。

是的,这些块生成C/ c++代码,因此您可以在MATLAB和Simulink之外部署独立的算法。金宝app

MATLAB和Simulink中的逆运动学金宝app

Robotics System Toolbox为机械手逆运动学提供了两个数值解:

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

下面是一些例子的MATLAB代码和一个动画的广义IK的模型考虑索耶它有一个7自由度的手臂。这里,我们在末端执行器位置上设置了一个约束,同时强制末端执行器指向靠近地面的一个独立目标点。

Sawyer = importrobot(' Sawyer . ')urdf', 'MeshPath',…(“sawyer.urdf fullfile (fileparts ( ')),'..',' 网格”、“sawyer_pv '));Gik =机器人。GeneralizedInverseKinematics(“RigidBodyTree”,索耶,…ConstraintInputs,{“位置”,“目标”});%目标位置约束targetPos = [0.5, 0.5, 0];handPosTgt = robotics.PositionTarget('right_hand','TargetPosition',targetPos);%目标瞄准约束targetPoint = [1,0, -0.5];handAimTgt = robotics.AimingConstraint('right_hand','TargetPoint', TargetPoint);% Solve广义IK [gikSoln,solnInfo] = gik(sawyer. homeconfiguration,handPosTgt,handAimTgt) show(sawyer,gikSoln);

你还能想到什么其他约束条件来让动作更流畅?

广义上的逆运动学

一旦您测试了IK解决方案,MATLAB和Simulink允许您探索构建完整的机器人操作系统的后续金宝app步骤,例如:

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

我们在视频“设计机器人操纵算法”中讨论了这一点,其中包括4自由度ROBOTIS open机械手平台.您可以从MATLAB中央文件交换

(视频)MATLAB和Simu金宝applink机器人竞技场:设计机器人操纵算法

结论

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

运动学本身可以用于设计运动规划算法,以及仅基于机器人几何进行分析——例如,工作空间分析或碰撞避免。

下一个部分,我们将更多地讨论机械手动力学,以及这如何促进使用MATLAB和Simulink的低级控制设计应用程序。金宝app

欢迎留言或发邮件给我们roboticsarena@mathworks.com.我希望你喜欢阅读!

——塞巴斯蒂安

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。