Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

Robowflex: Robot Motion Planning with MoveIt Made Easy

作者: Zachary Kingston, Lydia E. Kavraki · IROS 2022

许可协议

  • 开放获取
  • 论文: CC BY 4.0

以下内容均依据论文全文,按其 CC BY 4.0 许可协议使用;其中的图已注明作者。

一句话总结

Robowflex 直接在 C++ 程序内部加载 MoveIt 的机器人、场景和规划器,而不是通过 ROS 消息,使规划器开发、基准测试以及任务与运动规划都可以用脚本完成。

为何重要

由于 MoveIt 已支持许多机器人,团队可以用一个简短的程序为现有机器人编写规划实验脚本,并在需要时仍能连接到 ROS 系统。直接访问规划器内部,使研究人员无需重新编译 MoveIt 即可更换 OMPL 采样器或规划器,并能在不同场景下运行大量规划查询,用于任务与运动规划。NASA 曾用它为国际空间站上的 Robonaut 2 评估扶手抓取和运动规划。

问题

大多数 MoveIt 用户通过 MoveGroup 程序进行规划,该程序由 launch 文件和 ROS 参数配置,并通过 ROS 消息查询。这对于基本规划可行,但难以对规划器进行性能分析、更改其组件、提取内部信息,或在更大的算法中运行大量规划查询。要改变 MoveIt 的行为就得编写插件类,这对不熟悉其内部机制的人来说很困难。

提出的方法

Robowflex 是一个封装 MoveIt 核心库的 C++ 库,无需 launch 文件即可加载机器人(URDF、SRDF、关节限位、运动学),并将场景、运动请求和规划器作为单个程序中的对象暴露出来。它增加了 YAML、XACRO、ROS bag 和 ROS 参数的输入输出辅助工具、一个输出与 OMPL 兼容的基准测试工具,以及用于 OMPL 内部、DART、Tesseract 的 TrajOpt、实时 MoveGroup 和 Blender 渲染的模块。适配层使代码从 ROS Indigo 到 ROS Noetic 都能编译。

关键见解

  • 将 MoveIt 作为库进行封装,而不是通过 ROS 消息与 MoveGroup 通信,可以完全访问内部数据结构,同时让 ROS 集成成为可选项
  • 可以在一个程序中加载多个机器人、场景和规划器,任务与运动规划正需要这一点,以便在不同场景中尝试大量运动规划
  • 采用 OMPL 日志格式的基准测试输出可直接接入 Planner Arena 等现有工具,而以普通文件存储的场景和请求使数据集易于构建
  • MoveIt 自带的基准测试需要 ROS Warehouse,且不便支持带有多样障碍物的场景,而基于学习的规划器需要这类场景
  • 集成模块支持跨库比较,例如在一个简短脚本中,于同一场景下比较 MoveIt 的 RRTConnect 与 Tesseract 的 TrajOpt

主要结果

  • 在 Fetch 机器人上用约 40 行的脚本演示了基本运动规划,不使用任何 ROS 消息
  • 基准测试示例:在 Fetch 机器人上运行 RRT* 200 次,将最佳路径代价随时间的变化记录为进度属性
  • DART 模块被用于在复合空间中对两台 Fetch 机器人进行多机器人规划,并作为一个多机器人任务与运动规划框架的运动规划组件
  • NASA 用它评估逆运动学求解器、扶手抓取构型,以及 Robonaut 2 沿扶手攀爬时的规划难度
  • 截至撰写时,Robowflex 的基准测试或模块已被八篇论文([12]–[19])使用;代码从 ROS Indigo 到 ROS Noetic 都能编译

局限

  • 论文没有明确的局限性章节;这些用例只是演示,没有与 MoveGroup 在工作量或运行时间上的实测比较
  • 它构建在 MoveIt 和 ROS 之上,因此每台机器人仍需要各自的 MoveIt 配置文件(URDF、SRDF、关节限位、运动学)
  • 作者指出还存在其他简化的 MoveIt 接口(MoveIt CPP、moveit_boilerplate);它们与 Robowflex 的比较是定性的
  • Robonaut 2 用例被描述为在 RViz 中可视化的规划评估;未报告任何硬件执行结果

对领域的影响

入围 IROS 2022 工业机器人应用研究最佳论文奖决赛,被引用 31 次。Robowflex 已在 GitHub 上开源,并提供在线文档。

摘要

Robowflex 是一个面向工业和研究应用的机器人运动规划软件库,它利用了流行的 MoveIt 库和机器人操作系统(ROS)中间件。Robowflex 利用 MoveIt 进行运动规划的便利性,同时提供增强的 API,可在单个程序中构建和操控运动规划查询。Robowflex 的高层 API 简化了许多常见用例,同时仍可访问底层的 MoveIt 库。Robowflex 特别适用于 1) 开发新的运动规划器,2) 评估运动规划器,以及 3) 使用运动规划的复杂问题(例如任务与运动规划)。Robowflex 还提供可视化功能、与其他机器人库(例如 DART 和 Tesseract)的集成,并与许多其他机器人软件包互为补充。借助我们的库,用户无需精通 ROS 或 MoveIt,即可设置运动规划查询、从结果中提取信息,并直接与各种软件组件交互。我们给出了几个示例用例来展示其有效性。

链接

  • arXiv 2103.12826: https://arxiv.org/abs/2103.12826
  • DOI 10.1109/IROS47612.2022.9981698: https://doi.org/10.1109/IROS47612.2022.9981698
  • PDF: https://arxiv.org/pdf/2103.12826v1
  • 代码: https://github.com/KavrakiLab/robowflex
  • 项目主页: https://kavrakilab.github.io/robowflex/

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。