Skip to content

MoveIt RViz 快速入门

MoveIt RViz 插件

本教程将教你如何使用 RViz 和 MoveIt 显示插件在 MoveIt 中进行运动规划。RViz 是 ROS 中的主要可视化工具,也是调试机器人非常有用的工具。MoveIt 显示插件允许你设置虚拟环境(规划场景)、交互式地为机器人设置起始状态和目标状态、测试各种运动规划器并可视化输出。让我们开始吧!

如果你还没有完成入门指南或我们的 Docker 指南中的步骤,请务必先完成。

如果你按照 Docker 指南操作,请继续按照创建 Colcon 工作区并下载教程来设置教程。

  • 启动演示:
ros2 launch moveit2_tutorials demo.launch.py
  • 如果你是第一次操作,RViz 中会显示一个空的世界,需要手动添加运动规划插件:

    • RViz 中将显示一个空的世界:
    空白的 RViz 界面
    • 在 RViz 的 “Displays” 选项卡中,点击 “Add”:
    点击 Add 按钮
    • 从 moveit_ros_visualization 文件夹中,选择 “MotionPlanning” 作为显示类型(DisplayType),然后点击 “Ok”。
    添加 MotionPlanning 插件
    • 现在,你应该能在 RViz 中看到 Kinova 机器人:
    RViz 中的 Kinova 机器人
  • 加载 “Motion Planning” 插件后,接下来进行配置。在 “Displays” 子窗口的 “Global Options” 选项卡中,将 Fixed Frame 字段设置为 /base_link

  • 现在,你可以开始为机器人(本例中为 Kinova Gen 3)配置插件了。点击 “Displays” 中的 “MotionPlanning”。

    • 确保 Robot Description 字段设置为 robot_description。

    • 确保 Planning Scene Topic 字段设置为 /monitored_planning_scene。 点击主题名称可以展开下拉列表。

    • 确保 Planned Path 下的 Trajectory Topic 设置为 /display_planned_path。

    • 在 Planning Request 中,将 Planning Group 改为 manipulator。你也可以在左下角的 MotionPlanning 面板中看到这一选项。

配置好的 MotionPlanning 插件

有四种不同的可视化层可以叠加显示:

  1. 规划场景中机器人的当前位姿(/monitored_planning_scene,默认启用)。

  2. 机器人的规划路径(默认启用)。

  3. 绿色:运动规划的起始状态(默认禁用)。

  4. 橙色:运动规划的目标状态(默认启用)。

每种可视化的显示状态都可以通过复选框来切换:

  1. 使用 Scene Robot 树形菜单中的 Show Robot Visual 复选框来显示规划场景中的机器人。

  2. 使用 Planned Path 树形菜单中的 Show Robot Visual 复选框来显示规划路径。

  3. 使用 Planning Request 树形菜单中的 Query Start State 复选框来显示起始状态。

  4. 使用 Planning Request 树形菜单中的 Query Goal State 复选框来显示目标状态。

  • 尝试切换所有这些复选框,打开和关闭不同的可视化层。
RViz 中的可视化机器人

在接下来的步骤中,我们只需要场景机器人、起始状态和目标状态:

  1. 勾选 Planned Path 树形菜单中的 Show Robot Visual 复选框

  2. 取消勾选 Scene Robot 树形菜单中的 Show Robot Visual 复选框

  3. 勾选 Planning Request 树形菜单中的 Query Goal State 复选框。

  4. 勾选 Planning Request 树形菜单中的 Query Start State 复选框。

此时应该出现两个交互标记。橙色手臂对应的标记用于设置运动规划的 “Goal State”(目标状态),绿色手臂对应的标记用于设置 “Start State”(起始状态)。如果看不到交互标记,请点击 RViz 顶部菜单中的 Interact(注意:某些工具可能被隐藏,请按顶部菜单中的 ”+” 添加 Interact 工具,如下所示)。

Interact 工具

现在你应该可以使用这些标记拖动手臂并改变其朝向了。试试看吧!

在本节中,先隐藏规划路径和目标状态:

  1. 取消勾选 Planned Path 树形菜单中的 Show Robot Visual 复选框

  2. 取消勾选 Planning Request 树形菜单中的 Query Goal State 复选框。

现在应该只显示起始状态(绿色手臂)。尝试将手臂移动到使两个连杆相互碰撞的位姿。(如果你觉得困难,请确保 MotionPlanning 插件 “Planning” 选项卡下的 “Use Collision-Aware IK” 复选框未被勾选。)此时,发生碰撞的连杆会变成红色。

发生碰撞的连杆

接下来,勾选 “Use Collision-Aware IK” 复选框,再次尝试让两个连杆发生碰撞。当复选框被勾选时,IK 求解器会尽量为指定的末端执行器位姿寻找无碰撞的解。当复选框未勾选时,求解器则允许解中出现碰撞。无论复选框状态如何,发生碰撞的连杆始终以红色显示。

Use Collision-Aware IK 复选框

注意观察当你试图将末端执行器移出其可达工作空间时会发生什么。

末端执行器超出可达工作空间

在进入下一节之前,重新启用规划路径和目标状态:

  1. 勾选 Planned Path 树形菜单中的 Show Robot Visual 复选框

  2. 勾选 Planning Request 树形菜单中的 Query Goal State 复选框。

你可以使用 Joints 选项卡移动单个关节,也可以调整 7 自由度机器人的冗余关节。试试移动下方动画中展示的 “null space exploration” 滑块。

步骤 4:使用 Kinova Gen 3 进行运动规划

Section titled “步骤 4:使用 Kinova Gen 3 进行运动规划”
  • 现在,你可以在 MoveIt RViz 插件中使用 Kinova Gen 3 进行运动规划了。

    • 将起始状态移动到所需位置。

    • 将目标状态移动到另一个所需位置。

    • 确保两个状态都不会导致机器人自身发生碰撞。

    • 取消勾选 Planned Path 树形菜单中的 Show Trail 复选框。

  • 在 MotionPlanning 窗口的 Planning 选项卡下,点击 Plan 按钮。

  • 勾选 Planned Path 树形菜单中的 Show Trail 复选框。你应该会看到机械臂的路径以一系列位姿的形式表示。

规划出的路径

你可以在 RViz 中逐点检查轨迹。

  • 从 “Panels” 菜单中,选择 “Trajectory - Trajectory Slider”。RViz 中会出现一个新的滑块面板。

  • 设置目标位姿,然后点击 “Plan”。

  • 使用 “Slider” 面板,例如拖动滑块或按下 “Play” 按钮。

注意:将末端执行器放置到新的目标后,请务必先点击 “Plan” 再点击 “Play”——否则你看到的将是上一个目标的航点。

轨迹滑块面板

如果勾选了 “Use Cartesian Path” 复选框,机器人将尝试在笛卡尔空间中沿直线移动末端执行器。

自由空间规划 笛卡尔路径规划

规划成功后,点击 “Plan & Execute” 或 “Execute” 会将轨迹发送给机器人——在本教程中,由于使用的是 kinova_demo.launch,机器人仅处于模拟状态。

默认情况下,速度和加速度被缩放为机器人最大值的 10%(0.1)。你可以在下方展示的 “Planning” 选项卡中调整这些缩放因子,也可以在机器人的 moveit_config(joint_limits.yaml 文件)中修改默认值。

调整速度与加速度缩放因子

许多教程使用 moveit_visual_tools 来逐步演示。在继续学习下一个教程之前,建议先启用 RvizVisualToolsGui。

从 “Panels” 菜单中,选择 “Add New Panels”,然后选择 “RvizVisualToolsGui” 并点击 OK。你会看到新面板已添加到 RViz 中。

添加 RvizVisualToolsGui 面板 RViz 面板

RViz 允许你通过 File->Save Config 保存配置。建议在继续学习下一个教程之前执行此操作。如果你想以新名称保存,可以使用 File->Save Config As,然后通过以下方式引用你的配置文件:

ros2 launch moveit2_tutorials demo.launch.py rviz_config:=your_rviz_config.rviz

将 your_rviz_config.rviz 替换为你保存到 moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/ 目录中的文件名,然后构建工作区,使其能够被找到。

在你的第一个 MoveIt 项目中,你将使用 MoveIt 创建一个 C++ 程序来规划和执行运动。