什么是接口
这里的接口不是编程语言中的函数接口。而是应该理解为在ros2中进行数据通信的接口;这些接口在ros2中使用时必须有统一的标准,就像USB接口一样有着统一的通信协议。所以这里的接口更好的理解是:ros2数据通信的统一接口。
我们创建话题的时候,需要指定话题的类型,创建服务的时候也需要指定客户端和服务端服务的类型,不管是话题还是服务,这些类型都是结构体。
而这些通信的对象,不管是发起端还是接收端,都要指定数据通信的接口类型,而且只有发起端和接收端的接口类型一致,才能进行正常的数据通信。
接口的作用
指定数据通信两端使用的统一协议(统一数据格式--本质上就是统一结构体类型)。
通信的两端接口的类型不一样,但是接口中的数据一样,能通信吗?
1,如果是可以通信的,那么当一端有两个service所有接收的数据都一样,但是接口类型不一样时,当接收到同一个client请求时,应该由哪个service处理?
经过实际项目测试,通信的两端必须接口的类型(包括命名空间)必须一致,否则无法通信;
eg:
/robot_driver/srv/connect_robot和/example/srv/connect_robot两个接口,即使数据一模一样,也是无法通信的。