连接到 ROS 2


预计完成时间:3 分钟

3.2   Gazebo-ROS 桥接

Gazebo Sim 提供了 ros_gz_bridge 功能包,用于把 ROS2 与 Gazebo Sim 无缝连接起来。ros_gz_bridge 提供了一套网络通信机制,用于在 ROS2 和 Ignition Transport 之间交换消息。这使得 ROS2 与 Gazebo Sim 之间可以建立通信,并在两个消息系统之间双向传递数据和指令。

需要注意的是,这个桥接并不支持所有消息类型,目前只支持其中一部分。请查看这个链接,确认你的消息类型是否受支持。

根据通信需求不同,这个桥接既可以配置为双向,也可以配置为单向。

要启动桥接,请使用下面这条通用命令:

ros2 run ros_gz_bridge parameter_bridge /TOPIC_NAME@ROS_MSG_TYPE@IGN_MSG_TYPE

ros2 run ros_gz_bridge parameter_bridge 这条命令的作用,就是运行 ros_gz_bridge 功能包中的 parameter_bridge 程序。随后,你需要指定用于传输消息的话题 /TOPIC_NAME。第一个 @ 符号用于分隔话题名和消息类型;第一个 @ 后面是 ROS 消息类型,第二个 @ 后面是 Ignition 消息类型。

ROS 消息类型后面所接的符号,表示该话题桥接的方向。

  • [ 表示从 Ignition(Gazebo Sim)到 ROS 的桥接。
  • ] 表示从 ROS 到 Ignition(Gazebo Sim)的桥接。
  • @ 表示双向桥接,也就是 ROS <---> IGN。

下面来看看桥接是如何工作的。

接下来,创建一个新的话题 /chatter,用它来测试不同方向的桥接。

**注意:** 开始之前,请关闭并终止所有 web shell 中正在运行的任务。对所有活跃的 web shell 按下 Ctrl + C 以停止当前进程。