# ROS2基础教程 - 6 通信接口
这里所说的通信接口是节点之间进行通信的数据格式。
- 使用话题 Topic 进行通信,通信接口的定义方式使用的是
.msg
文件; - 使用服务 Service 进行通信,通信接口的定义方式使用的是
.srv
文件; - 以及后面使用动作Action进行通信,通信接口的定义方式使用的是
.action
文件。
通过通信接口,可以让不同的语言实现的节点进行通信,ROS 会根据通信接口生成对应语言的数据结构。
同时为了避免重复造轮子和统一数据结构,ROS官方提供了很多标准的通信接口,我们可以直接使用。如果满足不了你的要求,那么你可以自定义通信接口,像在服务通信章节, 我们也是使用了自己定义的通信接口实现了两个整数的相加。
# 6.1 查看ROS通信接口
可以在 ROS2 的安装路径下查看 ROS2 自带的通信接口有哪些。
打开 /opt/ros/humble/share
路径下,分别搜索 msg
,可以看到有很多的文件夹,打开其中的文件夹,里面包含了很多的通信接口:
同样搜索 srv
、action
,也可以看到很多的通信接口。
或者在命令行中,通过如下命令查看:
# 会列出系统中所有的通信接口,包括自己定义的
ros2 interface list
1
2
2
如果要查看通信接口的具体的定义,可以通过如下命令查看:
# 查看通信接口的详细定义
ros2 interface show 接口名称
# 例如查看一个保存地图服务的接口定义
ros2 interface show map_msgs/srv/SaveMap
1
2
3
4
5
2
3
4
5
可以看到通信接口的定义,如下:
还可以查看某个功能包下定义的接口,命令如下:
# 查看指定功能包下定义的接口
ros2 interface package 功能包名称
# 例如
ros2 interface package service_python
1
2
3
4
5
2
3
4
5
然后可以使用 ros2 interface show
查看接口的详细定义。