您正在阅读的是旧版本但仍受支持的 ROS 2 文档。 Jazzy.

设置机器人模拟(凉亭)

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

辅导水平: 高级

时间 20 分钟

先决条件

首先,您应该安装 ROS 2 和 Gazebo。您有两种选择:

任务

1 启动模拟

在本演示中,您将在 Gazebo 中模拟一个简单的差分驱动机器人。您将使用 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/visualize_lidar_world/clock
/world/visualize_lidar_world/dynamic_pose/info
/world/visualize_lidar_world/pose/info
/world/visualize_lidar_world/scene/deletion
/world/visualize_lidar_world/scene/info
/world/visualize_lidar_world/state
/world/visualize_lidar_world/stats

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

ros2 主题列表

应该显示

/parameter_events
/rosout

2 配置 ROS 2

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

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

至此,您就可以启动 ROS 与 Gazebo 之间的桥接了。特别是,您要为主题 /model/vehicle_blue/cmd_vel:

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

有关 ros_gz_桥 请查看 阅读说明 .

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

  • 使用 玫瑰2 主题 酒吧

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

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

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

source /opt/ros/iron/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

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

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

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

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

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

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

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

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

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

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

摘要

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