RViz 中的 MoveIt 快速入门

../../../_images/rviz_plugin_head.png

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

入门

如果您尚未完成,请确保您已完成 入门 或我们的 Docker 指南 中的步骤。 如果您遵循了 Docker 指南,还请按照 创建 Colcon 工作区并下载教程 指南设置教程。

步骤 1:启动演示并配置插件

  • 启动演示:

    ros2 launch moveit2_tutorials demo.launch.py
    
  • 如果您是第一次执行此操作,您应该会在 RViz 中看到一个空的世界,并且必须添加运动规划插件:

  • 您应该会在 RViz 中看到一个空的世界:

A

  • 在 RViz Displays 选项卡中,按 Add

B

  • 从 moveit_ros_visualization 文件夹中,选择“MotionPlanning”作为 DisplayType。按“Ok”。

C

  • 您现在应该会在 RViz 中看到 Kinova 机器人:

    D

  • 加载运动规划插件后,我们可以对其进行配置。在“显示”子窗口的“全局选项”选项卡中,将**固定框架**字段设置为``/base_link``

  • 现在,您可以开始为您的机器人(在本例中为 Kinova Gen 3)配置插件。单击“显示”中的“运动规划”。

  • 确保**机器人描述**字段设置为``robot_description``。

  • 确保**规划场景主题**字段设置为``/monitored_planning_scene``。

单击主题名称以显示主题名称下拉菜单。

  • 确保**规划路径**下的**轨迹主题**设置为``/display_planned_pa​​th``。

  • 在**规划请求**中,将**规划组**更改为``操纵器``。您还可以在左下角的 MotionPlanning 面板中看到这一点。

../../../_images/rviz_plugin_start.png

第 2 步:使用可视化机器人

有四种不同的重叠可视化:

  1. /monitored_planning_scene 规划环境中的机器人配置(默认处于活动状态)。

  2. 机器人的规划路径(默认处于活动状态)。

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

  4. 橙色:运动规划的目标状态(默认处于活动状态)。

可以使用复选框打开和关闭每个可视化的显示状态:

  1. 使用 场景机器人 树形菜单中的 显示机器人视觉 复选框的规划场景机器人。

  2. 使用 规划路径 树形菜单中的 显示机器人视觉 复选框的规划路径。

  3. 使用 规划请求 树形菜单中的 查询起始状态 复选框的起始状态。

#.使用**规划请求**树形菜单中的**查询目标状态**复选框来查看目标状态。

  • 使用所有这些复选框来打开和关闭不同的可视化效果。

../../../_images/rviz_plugin_visualize_robots.png

步骤 3:与 Kinova Gen 3 交互

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

  1. 选中 规划路径 树形菜单中的 显示机器人视觉 复选框

  2. 取消选中 场景机器人 树形菜单中的 显示机器人视觉 复选框

  3. 选中 规划请求 树形菜单中的 查询目标状态 复选框。

  4. 选中 规划请求 树形菜单中的 查询起始状态 复选框。

现在应该有两个交互式标记。一个对应于橙色手臂的标记将用于设置运动规划的“目标状态”,另一个对应于绿色手臂的标记将用于设置运动规划的“起始状态”。如果您没有看到交互式标记,请按 RViz 顶部菜单中的**Interact**(注意:某些工具可能被隐藏,请按顶部菜单中的**“+”**添加**Interact**工具,如下所示)。

../../../_images/rviz_plugin_interact.png

现在,您应该能够使用这些标记拖动手臂并改变其方向。试试看!

进入碰撞

对于此部分,隐藏计划路径和目标状态:

  1. 取消选中 计划路径 树形菜单中的 显示机器人视觉 复选框

  2. 取消选中 规划请求 树形菜单中的 查询目标状态 复选框。

现在,只有起始状态(绿色手臂)应该可见。尝试将手臂移动到两个链接相互碰撞的配置中。(如果您发现这很困难,请确保 MotionPlanning 插件的规划选项卡下的“使用碰撞感知 IK”复选框未选中。)完成此操作后,发生碰撞的链接将变为红色。

../../../_images/rviz_plugin_collision.png

现在,选中“使用碰撞感知 IK”复选框,然后再次尝试将两个链接移动到彼此碰撞的位置。选中该复选框后,IK 解算器将继续尝试为所需的末端执行器姿势找到无碰撞解决方案。未选中时,解算器将允许在解决方案中发生碰撞。无论复选框的状态如何,发生碰撞的链接仍将始终以红色显示。

../../../_images/rviz_plugin_collision_aware_ik_checkbox.png

移出可到达工作区

请注意当您尝试将末端执行器移出其可到达工作区时会发生什么。

../../../_images/rviz_plugin_invalid.png

在进入下一部分之前,请重新启用计划路径和目标状态:

  1. 计划路径 树形菜单中选中 显示机器人视觉 复选框

  2. 规划请求 树形菜单中选中 查询目标状态 复选框。

移动关节或零空间

您可以使用 关节 选项卡移动单个关节和 7 自由度机器人的冗余关节。尝试移动“零空间探索”滑块,如下面的动画所示。

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

  • 现在,您可以在 MoveIt RViz 插件中使用 Kinova Gen 3 开始运动规划。

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

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

  • 确保两个状态均未与机器人本身发生碰撞。

  • 取消选中 规划路径 树形菜单中的 显示轨迹 复选框。

  • 规划 选项卡下的 运动规划 窗口中,按下 规划 按钮。

  • 选中 规划路径 树形菜单中的 显示轨迹 复选框。您应该看到由一系列操纵器姿势表示的手臂路径。

../../../_images/rviz_plugin_planned_path.png

内省轨迹航点

您可以在 RViz 中逐点直观地内省轨迹。

  • 从“面板”菜单中,选择“轨迹 - 轨迹滑块”。您将在 RViz 上看到一个新的滑块面板。

  • 设置您的目标姿势,然后运行 ​​计划*。

  • 使用“滑块”面板进行操作,例如移动滑块,按下“播放”按钮。

注意:将末端执行器放置到新目标后,请务必在运行 播放 之前运行 计划 - 否则,您将看到上一个目标的航点(如果可用)。

../../../_images/rviz_plugin_plan_slider.png

规划笛卡尔运动

如果激活“使用笛卡尔路径”复选框,机器人将尝试在笛卡尔空间中线性移动末端执行器。

../../../_images/rviz_plugin_plan_free.png ../../../_images/rviz_plugin_plan_cartesian.png

执行轨迹,调整速度

成功规划后单击“规划和执行”或“执行”将向机器人发送轨迹 - 在本教程中,由于您使用了“kinova_demo.launch”,因此机器人仅进行模拟。

最初,默认速度和加速度被缩放为机器人最大值的 10%(“0.1”)。您可以在下面显示的规划选项卡中更改这些缩放因子,或者在机器人的“moveit_config”(在“joint_limits.yaml”中)中更改这些默认值。

../../../_images/rviz_plugin_collision_aware_ik_checkbox.png

下一步

RViz 可视化工具

许多教程使用“moveit_visual_tools”逐步完成演示。在继续学习下一个教程之前,最好启用 RvizVisualToolsGui

从“面板”菜单中,选择“添加新面板”。从菜单中,选择“RvizVisualToolsGui”并单击“确定”。您将看到新面板已添加到 RViz。

../../../_images/rviz_add_rviz_visual_tools.png ../../../_images/rviz_panels.png

保存配置

RViz 可让您在“文件->保存配置”下保存配置。您应该在继续学习下一个教程之前执行此操作。如果您选择以新名称保存配置,则可以使用“文件->将配置另存为”并使用以下内容引用您的配置文件::

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/”的文件的名称,并构建工作区以便可以找到它。

下一个教程

在:doc:您的第一个 MoveIt 项目 </doc/tutorials/your_first_project/your_first_project>”中,您将使用 MoveIt 创建一个 C++ 程序来规划和执行移动。