Skip to content

Dummy Robot 演示

本演示展示了一个简单的虚拟机器人,涵盖了从关节状态发布、模拟激光数据发布,到在 RViz 中将机器人模型和地图可视化的完整流程。

假设你的 ROS 2 安装目录为 ~/ros2_ws,请根据实际平台调整路径。

启动演示只需运行对应的 bringup launch 文件,其内部细节将在下一节展开。

源码构建:

Terminal window
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/src
$ git clone -b ${ROS_DISTRO} https://github.com/ros2/demos
$ cd .. && colcon build --packages-up-to dummy_robot_bringup
$ source ~/ros2_ws/install/setup.bash
$ ros2 launch dummy_robot_bringup dummy_robot_bringup_launch.py
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [dummy_map_server-1]: process started with pid [2922]
[INFO] [robot_state_publisher-2]: process started with pid [2923]
[INFO] [dummy_joint_states-3]: process started with pid [2924]
[INFO] [dummy_laser-4]: process started with pid [2925]
[dummy_laser-4] [INFO] [1714837459.645517297] [dummy_laser]: angle inc: 0.004363
[dummy_laser-4] [INFO] [1714837459.645613393] [dummy_laser]: scan size: 1081
[dummy_laser-4] [INFO] [1714837459.645626640] [dummy_laser]: scan time increment: 0.000000
[robot_state_publisher-2] [INFO] [1714837459.652977937] [robot_state_publisher]: Robot initialized

deb 包安装:

Terminal window
$ sudo apt install ros-${ROS_DISTRO}-dummy-robot-bringup
$ ros2 launch dummy_robot_bringup dummy_robot_bringup_launch.py
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [dummy_map_server-1]: process started with pid [2922]
[INFO] [robot_state_publisher-2]: process started with pid [2923]
[INFO] [dummy_joint_states-3]: process started with pid [2924]
[INFO] [dummy_laser-4]: process started with pid [2925]
[dummy_laser-4] [INFO] [1714837459.645517297] [dummy_laser]: angle inc: 0.004363
[dummy_laser-4] [INFO] [1714837459.645613393] [dummy_laser]: scan size: 1081
[dummy_laser-4] [INFO] [1714837459.645626640] [dummy_laser]: scan time increment: 0.000000
[robot_state_publisher-2] [INFO] [1714837459.652977937] [robot_state_publisher]: Robot initialized

这会打开 RViz2,你将看到你的机器人 🎉。

保持 dummy_robot_bringup 运行,添加 TF 显示插件,并将全局固定坐标系设置为 world。完成后你应该会看到如下画面:

rviz dummy robot

查看 launch 文件可以发现,它同时启动了以下几个节点:

  • dummy_map_server
  • dummy_laser
  • dummy_joint_states
  • robot_state_publisher

前两个包比较简单:dummy_map_server 持续发布并定期更新一个空地图;dummy_laser 类似地发布虚拟激光扫描数据。

dummy_joint_states 节点发布虚拟的关节状态数据。由于本演示使用的是一个只有两个关节的简单 RRbot,该节点只为这两个关节发布状态值。

robot_state_publisher 是其中最关键的部分。它解析给定的 URDF 文件,提取机器人模型,并监听传入的关节状态。基于这些信息,它为机器人发布 TF 坐标变换,从而可以在 RViz 中进行可视化。

以上就是整个虚拟机器人演示的工作流程。