当我学到客户端和服务端的时候发现,我使用我自己定义好的接口在写客户端时候发现,必须要先定义好了需要发送的请求内容的类,再进行发送。
后面再用response在进行callback处理。
但是在定义的服务端,并没有对response进行定义。他知道直接返回的类型。
这是因为:
在ROS 2中,服务端在收到请求后,会调用回调函数来处理请求并生成响应。在回调函数中,你可以直接构建响应对象,并在函数末尾使用 return
语句将其返回。
虽然你在客户端需要先定义请求对象,但是在服务端并不需要先定义响应对象。这是因为服务端的回调函数中会直接创建响应对象,并将其返回。ROS 2的服务端框架会自动处理响应对象的生命周期,你只需要在回调函数中构建响应对象并返回即可。
ROS2会帮你自动处理好这种问题。