2.4.12 使用新建的srv和msg文件
首先,我们将会学习如何创建一个服务并且在ROS中使用。该服务将会对三个整数求和。我们需要两个节点,一个服务器一个客户端。
在chapter2_tutorials功能包中,新建两个节点并以example2_a.cpp和example2_b.cpp为名称。别忘了要在src文件夹下创建这两个文件。
在第一个文件example2_a.cpp中,添加以下代码:
解释一下这些代码:
这些行包含必要的头文件和我们创建的srv文件:
这个函数会对3个变量求和,并将计算结果发送给其他节点:
在这里,创建服务并在ROS中发布广播。
在第2个文件example2_b.cpp中,增加以下代码:
代码解释:
以add_3_ints为名称创建一个服务的客户端。
下面创建srv文件的一个实例,并且加入需要发送的数据值。如果你还记得,这个消息需要3个字段。
这行代码会调用服务并发送数据。如果调用成功,call()函数会返回true;如果没成功,call()函数会返回false。
为了编译节点,在CMakeList.txt文件中增加以下行:
现在执行以下命令:
为了启动节点,需要执行以下命令行:
并且你会看到如下显示:
现在将要用自定义的msg文件来创建节点。这个例子也一样,创建example1_a.cpp和example1_b.cpp文件,同时调用chapter2_msg1.msg。
将下面的代码放在example3_a.cpp文件中:
将下面的代码放在example3_b.cpp文件中:
如果现在运行这两个节点,将会看到如下信息: