9、自定义服务消息与使用

9.1、自定义服务消息

切换至~/catkin_ws/src/learning_server功能包目录下,然后新建一个文件夹,命名为srv,用来存放自定义的服务消息。

9.1.1、定义srv文件

切换至srv目录下,新建一个空白的srv文件,以srv为后缀表示代表是srv文件。这里我们以IntPlus.srv为例子说明下,把以下代码复制到刚刚创建好的srv文件里边。

这里说明下srv文件的构成,由符号---分为上下两个部分,上边表示request下边是response。

9.1.2、在package.xml中添加功能包依赖

9.1.3、在CMakeLists.txt添加编译选项

9.1.4、编译生成语言相关文件

9.1.5、C++语言实现

1)、切换至~/catkin_ws/src/learning_server/src下,新建两个cpp文件,命名为IntPlus_server.cpp和IntPlus_client.cpp,把以下代码分别复制到里边,

IntPlus_server.cpp

IntPlus_client.cpp

2)、修改CMakeLists.txt文件

3)、核心部分

这里的实现流程和之前的一样,主要不一样的就是引入头文件和使用自定义服务文件:

引入头文件是

前边learning_server是功能包名字,后边的IntPlus.h是刚才创建的srv文件产生的头文件名字

使用自定义服务文件是

4)、运行程序

5)、运行截图

image-20220225122525963

6)、程序说明

运行IntPlus_server后,会提示准备计算;运行IntPlus_client后,终端输入两个整型数字,接着IntPlus_server会计算出结果,并且返回回去给IntPlus_client,随后打印出结果。

9.1.6、Pytho语言实现

1)、切换至~/catkin_ws/src/learning_server/script下,新建两个py文件,命名为IntPlus_server.py和IntPlus_client.py,把以下代码分别复制到里边,

IntPlus_server.py

IntPlus_client.py

2)、核心部分

这里主要是说明下如何导入自定义的服务消息模块和使用:

导入

使用

3)、运行程序

运行程序前,先给py文件增加可执行权限

运行程序

4)、程序运行说明

这里与C++版本不一致的是,这里的加数是程序里边设定(12和20)的,因此开启服务后,就立即能够返回结果。