ros-服务数据的定义与使用
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513234743966.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513234749835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
步骤
1.定义srv文件
在learning——service文件夹下创建srv,在srv下创建person.srv文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513234811190.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
2.在package.xml中添加功能包依赖
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
3.在cmakelist.txt添加编译选项
1)添加依赖
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020051323535137.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
2)让编译器产生对应的头文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513234930432.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
3)添加依赖
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513234944613.png)
4.编译catkin——make
在devel中生成三个头文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513234957708.png)
5.将代码拷贝到learning——service的src中
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513235010529.png)
6.在learning——service中的cmakelist.txt文件上添加
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513235024141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513235030164.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
第一行:把cpp编译成可执行的server和client的文件
第二行:把server和client做一个链接
第三行:把动态生成的头文件去做一个依赖
7.catkin——make,进行编译,生成server和client文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513235050675.png)
8.Roscor
9.Rosrun learning_service person_server
10.Rosrun learning_service person_client
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513235103535.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgzOTEyNA==,size_16,color_FFFFFF,t_70)
注:本内容整理古月居ros21讲,代码下载地址:https://download.csdn.net/download/weixin_45839124/12410125