警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

设置机器人模拟(点火凉亭)

目标 使用 Ignition Gazebo 和 ROS 2 启动模拟

辅导水平: 高级

时间 20 分钟

先决条件

首先要安装 ROS 2 和 Ignition Gazebo。您有两种选择:

任务

1 启动模拟

在本演示中,您将在 Ignition Gazebo 中模拟一个简单的差分驱动机器人。您将使用 Ignition Gazebo 示例中定义的一个名为 visualize_lidar.sdf.要运行此示例,应在终端中执行以下命令:

ign gazebo -v 4 -r visualize_lidar.sdf
.././././_images/gazebo_diff_drive.png

模拟运行时,您可以使用 点燃 命令行工具:

ign topic -l
/时钟
/gazebo/resource_paths
/gui/camera/pose
/gui/record_video/stats
/model/vehicle_blue/odometry
/model/vehicle_blue/tf
/stats
/world/diff_drive/clock
/world/diff_drive/dynamic_pose/info
/world/diff_drive/pose/info
/world/diff_drive/scene/deletion
/world/diff_drive/scene/info
/world/diff_drive/state
/world/diff_drive/stats

由于您尚未启动 ROS 2 节点,因此来自 玫瑰2 主题 清单 应该没有任何机器人主题:

ros2 主题列表
/parameter_events
/rosout

2 配置 ROS 2

要将我们的模拟与 ROS 2 进行通信,需要使用一个名为 玫瑰桥.该软件包提供了一个网络桥接器,可以在 ROS 2 和 Ignition Transport 之间交换信息。输入

sudo apt-get install ros-galactic-ros-ign-bridge

现在你已经准备好启动从 ROS 到 Ignition 的桥接器了。特别是要为以下主题创建一个桥接器 /model/vehicle_blue/cmd_vel:

source /opt/ros/galactic/setup.bash
ros2 run ros_ign_bridge parameter_bridge /model/vehicle_blue/cmd_vel@geometry_msgs/msg/Twist]ignition.msgs.Twist

有关 玫瑰桥 请查看 阅读说明 .

桥接器运行后,机器人就能按照您的电机指令进行操作。有两个选项:

  • 使用 玫瑰2 主题 酒吧

ros2 topic pub /model/vehicle_blue/cmd_vel geometry_msgs/Twist "linear: { x: 0.1 }";
  • 扭转键盘 软件包。该节点从键盘上获取按键信息,并将其发布为 Twist 消息。您可以键入以下内容进行安装:

sudo apt-get install ros-galactic-teleop-twist-keyboard

默认主题 扭转键盘 正在发布的 Twist 消息是 /cmd_vel 但您可以重新映射该主题,以使用桥接中使用的主题:

source /opt/ros/galactic/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/model/vehicle_blue/cmd_vel

该节点从键盘上获取并发布按键信息
作为 Twist 信息。使用美式键盘布局时效果最佳。
---------------------------
四处走动
   u i o
   j k l
   m , .

要使用全局模式(扫射),请按住 shift 键:
---------------------------
   U I O
   J K L
   M < >;

t:向上(+z)
b : 向下 (-z)

其他:停止

q/z:最大速度增加/减少 10%
w/x:仅将线性速度提高/降低 10
e/c:只增加/减少 10%的角速度

CTRL-C 退出

目前:速度 0.5 转向 1.0

3 在 ROS 中可视化激光雷达数据 2

差分驱动机器人有一个激光雷达。要将 Ignition 生成的数据发送到 ROS 2,需要启动另一个网桥。在这种情况下,激光雷达的数据将在点火传输主题中提供 /lidar2,您将在桥接器中对其进行重新映射。该主题将在主题 /激光雷达扫描:

source /opt/ros/galactic/setup.bash
ros2 run ros_ign_bridge parameter_bridge /lidar2@sensor_msgs/msg/LaserScan[ignition.msgs.LaserScan --ros-args -r /lidar2:=/laser_scan

要在 ROS 2 中可视化激光雷达的数据,可以使用 Rviz2:

source /opt/ros/galactic/setup.bash
rviz2

然后,您需要配置 固定的 画框:

.././././_images/fixed_frame.png

然后点击 "添加 "按钮,添加一个可视化激光雷达的显示屏:

././././_images/add_lidar.png

现在,您应该可以在 Rviz2 中看到激光雷达的数据了:

.././././_images/rviz2.png

摘要

在本教程中,您使用 Ignition Gazebo 启动了机器人仿真,使用致动器和传感器启动了桥梁,可视化了传感器的数据,并移动了差分驱动机器人。