MoveIt RViz 快速入门
本教程将教你如何使用 RViz 和 MoveIt 显示插件在 MoveIt 中进行运动规划。RViz 是 ROS 中的主要可视化工具,也是调试机器人非常有用的工具。MoveIt 显示插件允许你设置虚拟环境(规划场景)、交互式地为机器人设置起始状态和目标状态、测试各种运动规划器并可视化输出。让我们开始吧!
如果你还没有完成入门指南或我们的 Docker 指南中的步骤,请务必先完成。
如果你按照 Docker 指南操作,请继续按照创建 Colcon 工作区并下载教程来设置教程。
步骤 1:启动演示并配置插件
Section titled “步骤 1:启动演示并配置插件”- 启动演示:
ros2 launch moveit2_tutorials demo.launch.py-
如果你是第一次操作,RViz 中会显示一个空的世界,需要手动添加运动规划插件:
- RViz 中将显示一个空的世界:
- 在 RViz 的 “Displays” 选项卡中,点击 “Add”:
- 从 moveit_ros_visualization 文件夹中,选择 “MotionPlanning” 作为显示类型(DisplayType),然后点击 “Ok”。
- 现在,你应该能在 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 面板中看到这一选项。
-
步骤 2:与可视化机器人互动
Section titled “步骤 2:与可视化机器人互动”有四种不同的可视化层可以叠加显示:
-
规划场景中机器人的当前位姿(
/monitored_planning_scene,默认启用)。 -
机器人的规划路径(默认启用)。
-
绿色:运动规划的起始状态(默认禁用)。
-
橙色:运动规划的目标状态(默认启用)。
每种可视化的显示状态都可以通过复选框来切换:
-
使用 Scene Robot 树形菜单中的 Show Robot Visual 复选框来显示规划场景中的机器人。
-
使用 Planned Path 树形菜单中的 Show Robot Visual 复选框来显示规划路径。
-
使用 Planning Request 树形菜单中的 Query Start State 复选框来显示起始状态。
-
使用 Planning Request 树形菜单中的 Query Goal State 复选框来显示目标状态。
- 尝试切换所有这些复选框,打开和关闭不同的可视化层。
步骤 3:与 Kinova Gen 3 互动
Section titled “步骤 3:与 Kinova Gen 3 互动”在接下来的步骤中,我们只需要场景机器人、起始状态和目标状态:
-
勾选 Planned Path 树形菜单中的 Show Robot Visual 复选框
-
取消勾选 Scene Robot 树形菜单中的 Show Robot Visual 复选框
-
勾选 Planning Request 树形菜单中的 Query Goal State 复选框。
-
勾选 Planning Request 树形菜单中的 Query Start State 复选框。
此时应该出现两个交互标记。橙色手臂对应的标记用于设置运动规划的 “Goal State”(目标状态),绿色手臂对应的标记用于设置 “Start State”(起始状态)。如果看不到交互标记,请点击 RViz 顶部菜单中的 Interact(注意:某些工具可能被隐藏,请按顶部菜单中的 ”+” 添加 Interact 工具,如下所示)。
现在你应该可以使用这些标记拖动手臂并改变其朝向了。试试看吧!
移入碰撞区域
Section titled “移入碰撞区域”在本节中,先隐藏规划路径和目标状态:
-
取消勾选 Planned Path 树形菜单中的 Show Robot Visual 复选框
-
取消勾选 Planning Request 树形菜单中的 Query Goal State 复选框。
现在应该只显示起始状态(绿色手臂)。尝试将手臂移动到使两个连杆相互碰撞的位姿。(如果你觉得困难,请确保 MotionPlanning 插件 “Planning” 选项卡下的 “Use Collision-Aware IK” 复选框未被勾选。)此时,发生碰撞的连杆会变成红色。
接下来,勾选 “Use Collision-Aware IK” 复选框,再次尝试让两个连杆发生碰撞。当复选框被勾选时,IK 求解器会尽量为指定的末端执行器位姿寻找无碰撞的解。当复选框未勾选时,求解器则允许解中出现碰撞。无论复选框状态如何,发生碰撞的连杆始终以红色显示。
移出可达工作空间
Section titled “移出可达工作空间”注意观察当你试图将末端执行器移出其可达工作空间时会发生什么。
在进入下一节之前,重新启用规划路径和目标状态:
-
勾选 Planned Path 树形菜单中的 Show Robot Visual 复选框
-
勾选 Planning Request 树形菜单中的 Query Goal State 复选框。
移动关节或在零空间中移动
Section titled “移动关节或在零空间中移动”你可以使用 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 复选框。你应该会看到机械臂的路径以一系列位姿的形式表示。
检查轨迹航点
Section titled “检查轨迹航点”你可以在 RViz 中逐点检查轨迹。
-
从 “Panels” 菜单中,选择 “Trajectory - Trajectory Slider”。RViz 中会出现一个新的滑块面板。
-
设置目标位姿,然后点击 “Plan”。
-
使用 “Slider” 面板,例如拖动滑块或按下 “Play” 按钮。
注意:将末端执行器放置到新的目标后,请务必先点击 “Plan” 再点击 “Play”——否则你看到的将是上一个目标的航点。
规划笛卡尔运动
Section titled “规划笛卡尔运动”如果勾选了 “Use Cartesian Path” 复选框,机器人将尝试在笛卡尔空间中沿直线移动末端执行器。
执行轨迹、调整速度
Section titled “执行轨迹、调整速度”规划成功后,点击 “Plan & Execute” 或 “Execute” 会将轨迹发送给机器人——在本教程中,由于使用的是 kinova_demo.launch,机器人仅处于模拟状态。
默认情况下,速度和加速度被缩放为机器人最大值的 10%(0.1)。你可以在下方展示的 “Planning” 选项卡中调整这些缩放因子,也可以在机器人的 moveit_config(joint_limits.yaml 文件)中修改默认值。
RViz 可视化工具
Section titled “RViz 可视化工具”许多教程使用 moveit_visual_tools 来逐步演示。在继续学习下一个教程之前,建议先启用 RvizVisualToolsGui。
从 “Panels” 菜单中,选择 “Add New Panels”,然后选择 “RvizVisualToolsGui” 并点击 OK。你会看到新面板已添加到 RViz 中。
保存你的配置
Section titled “保存你的配置”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++ 程序来规划和执行运动。