< >
Home » ROS2与MoveIt2教程 » ROS2与MoveIt2入门教程-URDF与SRDF

ROS2与MoveIt2入门教程-URDF与SRDF

说明:

  • 介绍MoveIt2如何使用URDF(统一机器人描述格式)启动

URDF

MoveIt2使用URDF(统一机器人描述格式)启动,URDF是ROS和ROS2中描述机器人的原生格式。在本教程中,您将会发现URDF的资源、重要提示以及MoveIt2特定要求列表。

  • URDF相关资源

    • URDF ROS Wiki页面—URDF ROS Wiki页面是有关URDF大多数信息的来源。

    • URDF教程—是使用URDF的系列教程。

    • SOLIDWORKS URDF插件—一个可以让用户直接从SOLIDWORKS模型生成URDF的插件。

  • 重要提示
    本小节包含一组确保您生成的URDF可以在MoveIt2中使用的重要提示。开始在您的机器人中使用MoveIt2之前,请确保您阅读了所有这些提示。

    • 关节名称中的特殊字符

    关节名称不应包含以下任何特殊字符:-、[、]、(、)。
    我们希望能够在将来尽快去除这些对关节名称的限制。

    • 安全限制

    除了机器人的关节限制之外,一些URDF还设置了安全限制。下面是为熊猫机器人头部平移关节指定的安全控制器示例:

<safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-2.857" soft_upper_limit="2.857"/>

“soft_lower_limit”字段和“soft_upper_limit”字段会指定该关节的关节位置限制。MoveIt2会将这些限制与URDF中为该关节指定的硬限制进行比较,并会选择更保守的限制。
*注:
如果safe_controller中的“soft_lower_limit”和“soft_upper_limit”设置为0.0,则该关节将会无法移动。MoveIt2依赖于用户来指定正确的机器人模型!

  • 碰撞检测
    MoveIt2使用URDF中指定的网格进行碰撞检测。URDF允许用户指定两组网格分别用于可视化和碰撞检测。一般来说,可视化网格可以是详细而漂亮的,但碰撞网格应该不会太详细。网格中的三角形数量会影响对机器人链接进行碰撞检测所需的时间。整个机器人的三角形数量应该在几千个数量级。

    • 测试URDF

      非常重要的一点就是要测试您的URDF并确保一切正常。ROS的URDF软件包会提供一个check_urdf工具。要使用check_urdf工具验证您的URDF,请按照此处的说明进行操作。

  • URDF示例

    有很多URDF可用于使用ROS的机器人。

    URDF示例—是来自ROS社区的一个URDF示例列表。

SRDF

SRDF(语义机器人描述格式)是对URDF的补充,并会指定关节组、默认机器人配置、附加碰撞检测信息以及完整说明机器人位姿可能所需的附加坐标变换。推荐使用MoveIt设置助手来生成SRDF。

  • 虚拟关节
    URDF仅包含机器人物理关节的有关信息。通常,需要定义额外的关节来说明机器人上根链接相对于世界坐标系的位姿。在这种情况下,会使用虚拟关节来说明这个连接。例如,像PR2这种在平面内移动的移动机器人就是使用平面虚拟关节进行说明的,该虚拟关节会将世界坐标系连接到机器人坐标系上。固定机器人(如工业机械臂)应使用固定关节连接到世界坐标系。

  • 被动关节

    被动关节是机器人上非驱动的关节,例如差分驱动机器人上的被动脚轮。这些被动关节会在SRDF中单独说明,以确保运动规划或控制管道中的不同组件知道无法直接控制这些关节。如果您的机器人具有非驱动脚轮,则应将其指定为被动脚轮。

  • 规划组

    “组”(有时称为“关节组JointGroup”或“规划组”)是MoveIt2中的一个核心概念。MoveIt2始终是作用于某个特定组的。MoveIt2将会只考虑移动其正在规划的组中的关节——而让其他关节保持静止。 机器人中所有关节都可以移动的运动规划可以通过创建一个包含所有关节的组来实现。一个组只是某些关节和链接的集合。可以通过以下几种不同方式之一来指定每个组:

    • 关节集合
      可以将组指定为一个关节集合。每个关节的所有子链接都会自动包含在该组中。

    • 链接集合
      也可以将组指定为一个链接集合。链接的所有父级关节也会包含在该组中。

    • 串行链(Serial Chain)
      使用基础链接和末端链接来指定一个串行链。链中的末端链接是链中最后一个关节的子级链接。链中的基础链接是链中第一个关节的父级链接。

    • 子组集合
      组也可以是一个子组的集合。例如,可以将left_arm和right_arm定义为两个组,然后定义一个名为both_arms的新组,该组中包含前两个组。

  • 末端执行器(End-Effectors)

    机器人中的某些组可以被指定为末端执行器。末端执行器通常会通过一个固定关节连接到另一哥组(如机械臂)。请注意,在指定作为末端执行器的组时,非常重要的一点就是确保该末端执行器与其连接的父级组之间没有公共链接。

  • 自碰撞

    默认自碰撞矩阵生成器(设置助手的组成部分)会在机器人上搜索可以安全地禁用碰撞检测的链接对,从而减少运动规划处理时间。当这些链接对总是处于碰撞中、从不发生碰撞、在机器人默认位置发生碰撞、或者这些链接在运动学链上彼此相邻时,这些链接对将会禁用碰撞检测。采样密度会指定要进行自碰撞检测的随机机器人位置数量。较高的采样密度需要更多的计算时间,而较低的采样密度则更有可能会禁用不应禁用的链接对。默认值为10,000次碰撞检测。碰撞检测是并行完成的,以减少处理时间。

  • 机器人位姿

    SRDF还可以存储机器人的固定配置。在这种情况下,SRDF的一个典型示例就是为机械臂定义HOME位置。该配置用字符串id进行存储,可用于以后恢复该配置。

  • SRDF文档

    有关SRDF语法的信息,请参阅ROS SRDF Wiki页面上的更多详细信息。

英语原文地址:https://moveit2_tutorials.picknik.ai/doc/urdf_srdf/urdf_srdf_tutorial.html

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: none