Skip to content

MVSim 快速入门

目标: 以独立模式和 ROS 2 模式启动 MVSim 演示世界,并学习如何与仿真的机器人交互。

教程级别: 进阶

预计时间: 20 分钟

MVSim 自带一系列演示世界,展示了多机器人仿真、 传感器配置、地形类型、人物角色、铰接车辆和环境布局等不同功能。 你可以使用 mvsim CLI 将这些演示作为独立应用程序运行, 也可以作为 ROS 2 节点运行,通过标准 ROS 2 topic 发布传感器数据并接收速度命令。

{/截图:MVSim 演示场景截图/}

你应该已按照 MVSim 安装(Ubuntu) 教程安装了 MVSim。

MVSim 包含一个不需要 ROS 2 的独立启动器。 这对于快速测试世界文件或非 ROS 使用场景非常有用。

启动仓库演示:

Terminal window
mvsim launch ~/ros2_ws/src/mvsim/mvsim_tutorial/demo_warehouse.world.xml

如果你是通过二进制包安装的,演示文件通常位于 /opt/ros/{DISTRO}/share/mvsim/mvsim_tutorial/ 目录下。

其他可以尝试的演示世界:

  • demo_turtlebot_world.world.xml — 一个在经典 ROS 风格环境中带有障碍物的 TurtleBot3。
  • demo_2robots.world.xml — 两个机器人在家具方块间导航。
  • demo_elevation_map.world.xml — 一个 Jackal 机器人在有高程数据的地形上行驶。
  • demo_greenhouse.world.xml — 一个复杂的温室环境,演示了使用 XML 循环进行程序化内容生成。

世界启动后,你可以通过以下方式控制机器人:

  • 键盘: 按 W/S 前进/后退,A/D 左转/右转,空格键停止。 如果世界中有多个机器人,先在 GUI 中点击一个机器人来选中它,然后再使用键盘控制。
  • 手柄: 如果连接了游戏手柄,将自动被检测到。

{/截图:MVSim GUI 控制参考/}

GUI 还提供相机视角、仿真速度和可视化选项的控制。 你可以切换正交/透视视图,并直接在 3D 窗口中启用传感器数据的可视化。

要将 MVSim 作为 ROS 2 节点启动,请使用提供的 launch 文件:

Terminal window
source /opt/ros/{DISTRO}/setup.bash
ros2 launch mvsim demo_warehouse.launch.py

这将启动仿真器并为每个车辆和传感器创建 ROS 2 topic。

演示运行后,打开一个新终端并列出可用 topic:

Terminal window
ros2 topic list

你应该能看到如下 topic:

  • /robot1/cmd_vel — 发送 geometry_msgs/msg/Twist 命令来控制机器人。
  • /robot1/odom — 来自轮式编码器的里程计(nav_msgs/msg/Odometry)。
  • /robot1/base_pose_ground_truth — 完美的真实值位姿。
  • /robot1/<sensor_name> — 特定传感器的 topic(例如,/robot1/lidar1_points 用于 3D LiDAR 点云,/robot1/laser1 用于 2D 扫描数据)。
  • /tf 和 /tf_static — 遵循 REP-105 的 TF2 变换(map → odom → base_link)。

你可以从命令行发送速度命令:

Terminal window
ros2 topic pub /robot1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5}, angular: {z: 0.3}}"

或者使用 teleop_twist_keyboard 进行交互式控制:

Terminal window
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r cmd_vel:=/robot1/cmd_vel

你可以在 RViz2 中可视化 MVSim 的传感器数据。 某些 launch 文件包含 use_rviz 选项:

Terminal window
ros2 launch mvsim demo_warehouse.launch.py use_rviz:=True

或者,手动打开 RViz2 并为感兴趣的 topic 添加显示(例如,LaserScan、PointCloud2、Image、Odometry)。

{/截图:MVSim 深度相机可视化/}

对于 CI 流水线或没有显示器的远程服务器,MVSim 支持无头(headless)运行:

Terminal window
ros2 launch mvsim demo_warehouse.launch.py headless:=True

这将在不打开 GUI 窗口的情况下运行完整的仿真。

在本教程中,你以独立模式和 ROS 2 模式启动了 MVSim 演示世界。 你学习了如何使用键盘和 ROS 2 topic 控制机器人、查看发布的 topic,以及在 RViz2 中可视化数据。 下一个教程将介绍如何定义你自己的世界,包括自定义机器人和传感器。