# ROS2基础教程 - 6 通信接口

这里所说的通信接口是节点之间进行通信的数据格式。

  • 使用话题 Topic 进行通信,通信接口的定义方式使用的是 .msg 文件;
  • 使用服务 Service 进行通信,通信接口的定义方式使用的是 .srv 文件;
  • 以及后面使用动作Action进行通信,通信接口的定义方式使用的是 .action 文件。

通过通信接口,可以让不同的语言实现的节点进行通信,ROS 会根据通信接口生成对应语言的数据结构。

同时为了避免重复造轮子和统一数据结构,ROS官方提供了很多标准的通信接口,我们可以直接使用。如果满足不了你的要求,那么你可以自定义通信接口,像在服务通信章节, 我们也是使用了自己定义的通信接口实现了两个整数的相加。

# 6.1 查看ROS通信接口

可以在 ROS2 的安装路径下查看 ROS2 自带的通信接口有哪些。

打开 /opt/ros/humble/share 路径下,分别搜索 msg ,可以看到有很多的文件夹,打开其中的文件夹,里面包含了很多的通信接口:

同样搜索 srvaction ,也可以看到很多的通信接口。


或者在命令行中,通过如下命令查看:

# 会列出系统中所有的通信接口,包括自己定义的
ros2 interface list
1
2


如果要查看通信接口的具体的定义,可以通过如下命令查看:

# 查看通信接口的详细定义
ros2 interface show 接口名称

# 例如查看一个保存地图服务的接口定义
ros2 interface show map_msgs/srv/SaveMap
1
2
3
4
5

可以看到通信接口的定义,如下:


还可以查看某个功能包下定义的接口,命令如下:

# 查看指定功能包下定义的接口
ros2 interface package 功能包名称

# 例如
ros2 interface package service_python
1
2
3
4
5

然后可以使用 ros2 interface show 查看接口的详细定义。