使用假人机器人进行实验
在此演示中,我们展示了一个简单的演示机器人,它包含所有组件,从发布关节状态到发布虚假激光数据,再到在 RViz 中的地图上可视化机器人模型。
启动演示
我们假设您的 ROS 2 安装目录为“~/ros2_ws”。请根据您的平台更改目录。
要启动演示,我们执行演示启动文件,我们将在下一节中更详细地解释该文件。
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
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,您将看到您的机器人。 🎉
$ source ~/ros2_ws/install/setup.bash
$ rviz2
这将打开 RViz2。假设您的 dummy_robot_bringup 仍处于启动状态,您现在可以添加 TF 显示插件并将全局框架配置为“world”。完成后,您应该会看到类似的图片:
发生了什么事?
如果你仔细查看启动文件,就会发现我们同时启动了几个节点。
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 中将其可视化。
好极了!