MVSim 快速入门
目标: 以独立模式和 ROS 2 模式启动 MVSim 演示世界,并学习如何与仿真的机器人交互。
教程级别: 进阶
预计时间: 20 分钟
MVSim 自带一系列演示世界,展示了多机器人仿真、
传感器配置、地形类型、人物角色、铰接车辆和环境布局等不同功能。
你可以使用 mvsim CLI 将这些演示作为独立应用程序运行,
也可以作为 ROS 2 节点运行,通过标准 ROS 2 topic 发布传感器数据并接收速度命令。
{/截图:MVSim 演示场景截图/}
你应该已按照 MVSim 安装(Ubuntu) 教程安装了 MVSim。
1 使用独立 CLI 启动演示世界
Section titled “1 使用独立 CLI 启动演示世界”MVSim 包含一个不需要 ROS 2 的独立启动器。 这对于快速测试世界文件或非 ROS 使用场景非常有用。
启动仓库演示:
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 循环进行程序化内容生成。
2 控制机器人
Section titled “2 控制机器人”世界启动后,你可以通过以下方式控制机器人:
- 键盘: 按 W/S 前进/后退,A/D 左转/右转,空格键停止。 如果世界中有多个机器人,先在 GUI 中点击一个机器人来选中它,然后再使用键盘控制。
- 手柄: 如果连接了游戏手柄,将自动被检测到。
{/截图:MVSim GUI 控制参考/}
GUI 还提供相机视角、仿真速度和可视化选项的控制。 你可以切换正交/透视视图,并直接在 3D 窗口中启用传感器数据的可视化。
3 使用 ROS 2 启动
Section titled “3 使用 ROS 2 启动”要将 MVSim 作为 ROS 2 节点启动,请使用提供的 launch 文件:
source /opt/ros/{DISTRO}/setup.bashros2 launch mvsim demo_warehouse.launch.py这将启动仿真器并为每个车辆和传感器创建 ROS 2 topic。
4 查看 ROS 2 topic
Section titled “4 查看 ROS 2 topic”演示运行后,打开一个新终端并列出可用 topic:
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)。
你可以从命令行发送速度命令:
ros2 topic pub /robot1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5}, angular: {z: 0.3}}"或者使用 teleop_twist_keyboard 进行交互式控制:
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r cmd_vel:=/robot1/cmd_vel5 在 RViz2 中可视化
Section titled “5 在 RViz2 中可视化”你可以在 RViz2 中可视化 MVSim 的传感器数据。
某些 launch 文件包含 use_rviz 选项:
ros2 launch mvsim demo_warehouse.launch.py use_rviz:=True或者,手动打开 RViz2 并为感兴趣的 topic 添加显示(例如,LaserScan、PointCloud2、Image、Odometry)。
{/截图:MVSim 深度相机可视化/}
6 无头模式
Section titled “6 无头模式”对于 CI 流水线或没有显示器的远程服务器,MVSim 支持无头(headless)运行:
ros2 launch mvsim demo_warehouse.launch.py headless:=True这将在不打开 GUI 窗口的情况下运行完整的仿真。
在本教程中,你以独立模式和 ROS 2 模式启动了 MVSim 演示世界。 你学习了如何使用键盘和 ROS 2 topic 控制机器人、查看发布的 topic,以及在 RViz2 中可视化数据。 下一个教程将介绍如何定义你自己的世界,包括自定义机器人和传感器。