4. RViz 可视化

好,咱们进入实操环节了。

前面几章我们把 MoveIt2 的架构、运动学、规划器这些概念捋了一遍。说实话,光看代码和理论,你可能会觉得有点虚——到底这玩意儿动起来是什么样?

这一章,我们就让机器人真正“活”起来。

我们会启动 MoveIt2,在 RViz 里加载机器人模型,然后用手拖拽末端,让机器人自己规划路径。嗯,这是你第一次直观感受 MoveIt2 的能力,也是后续所有调试工作的基础。

4.1 启动 MoveIt2 并加载机器人模型

先别急着敲命令。我建议你检查一下环境。

我个人习惯在启动前先确认三个东西:

  • ROS 2 环境是否 source 了(source /opt/ros/humble/setup.bash)
  • MoveIt2 是否编译成功(colcon build 无报错)
  • 机器人描述包是否在 workspace 里

确认无误后,我们启动一个经典的 demo——Panda 机械臂。这是 Franka Emika 的 7 轴机器人,MoveIt2 官方用它做示例。

ros2 launch moveit2_tutorials demo.launch.py

这条命令会做三件事:

  1. 启动 ROS 2 核心节点
  2. 加载机器人 URDF/SRDF 模型
  3. 打开 RViz 并加载 MotionPlanning 插件

你可能会看到终端刷出一堆日志。别慌,只要最后出现 You can start planning now! 就说明成功了。

小提示: 如果你用的是自己的机器人模型,记得把 demo.launch.py 里的机器人名称和路径改成你自己的。我曾经有个学生直接复制粘贴,结果加载了个六轴机器人,但配置写的是七轴,卡了半天。

4.2 认识 MotionPlanning 插件

RViz 打开后,你会看到左侧多了一个面板——MotionPlanning。这就是我们和 MoveIt2 交互的核心界面。

这个面板分成几个区域,我一个个说:

区域 功能 我常用的操作
Context 选择规划组、规划器、参考坐标系 切换规划组(比如从 arm 到 gripper)
Planning 设置目标位姿、执行规划 点击 "Plan & Execute"
Manipulation 拖拽交互、设置拖拽方式 勾选 "Allow Dragging"
Scene Objects 添加/移除障碍物 添加一个盒子模拟障碍
Stored Plans 保存和回放规划结果 调试时保存几个典型路径

你想想看,这么多功能其实就围绕一件事:告诉机器人你想让它去哪儿,然后它自己想办法过去。

4.3 交互式拖拽:最直观的规划方式

好,重点来了。

在 RViz 场景中,你会看到机器人末端(end effector)上有一个三色环——红绿蓝三个箭头和三个圆环。这就是 交互式标记(Interactive Marker)。

怎么用?很简单:

  • 拖拽箭头:沿 X/Y/Z 轴平移末端
  • 拖拽圆环:绕 X/Y/Z 轴旋转末端
  • 拖拽中心球:自由移动(不推荐,容易超出工作空间)

我建议你先拖拽箭头,让末端移动一小段距离。然后点击 MotionPlanning 面板里的 "Plan" 按钮。

你会看到机器人从当前位置,平滑地运动到你拖拽的目标位置。这就是运动规划在起作用。

核心体验: 你拖拽的是目标位姿,机器人自己计算路径。你不需要关心每个关节转多少度——MoveIt2 帮你算好了。

如果点击 "Plan & Execute",机器人会直接执行规划好的轨迹。在仿真环境里,你会看到机械臂动起来。

注意: 如果你在真实机器人上操作,一定要先确认规划结果没问题。我曾经在调试时,拖拽了一个超出工作空间的位置,机器人规划出一条穿过自身的路径——还好是在仿真里,不然就撞了。

4.4 避坑指南:拖拽时常见的几个问题

我遇到过不少同学在拖拽时遇到问题,这里列几个典型的:

  1. 拖拽没反应:检查是否选中了正确的规划组。有时候默认选的是 gripper,但你拖的是 arm 的末端。
  2. 规划失败:目标位置太远或太偏。试着把目标放在机器人正前方 30cm 范围内。
  3. 机器人抖动:可能是碰撞检测太敏感。可以在 Planning 面板里调整 "Planning Time" 到 5 秒以上。

嗯,这里要注意:拖拽只是设置目标,真正的规划是点击 "Plan" 之后才发生的。如果你只是拖拽了标记但没有点 Plan,机器人不会动。

4.5 本章知识体系图

下面这张图帮你梳理了本章的核心逻辑:

第4章 知识体系:RViz 可视化与交互式规划 启动 MoveIt2 ros2 launch demo.launch.py MotionPlanning 插件 Context / Planning / Manipulation 交互式拖拽 拖拽 → Plan → Execute 加载 URDF/SRDF 模型 规划组 / 规划器 / 坐标系 交互式标记(三色环) 核心流程:启动 → 加载模型 → 拖拽目标 → 规划 → 执行 ⚠ 常见问题:规划组选错 / 目标超出工作空间 / 忘记点 Plan

4.6 本章小结

这一章我们做了三件事:

  • 启动了 MoveIt2 并加载了机器人模型
  • 认识了 MotionPlanning 插件的各个区域
  • 通过拖拽交互式标记,体验了从拖拽到规划再到执行的完整流程

说实话,这是整个课程里最“好玩”的一章。因为你终于能看到机器人按照你的意图动起来了。

但别光顾着玩。我建议你多试几次:拖拽到不同位置、不同姿态,观察规划结果的变化。你会发现,有些位置规划很快,有些位置会失败——这就是运动学和工作空间的限制在起作用。

练习建议: 试着把机器人末端拖到桌子下面(如果有障碍物),然后点 Plan。看看 MoveIt2 会不会自动避开?如果避不开,下一章我们会讲怎么添加障碍物。

嗯,这一章就到这。记住那个三色环的操作手感,后面我们会频繁用到它。

可可精品资料库