声明
本文实现的是ros服务通信的基本流程实现,会演示两数相加求和这样一个案例从服务端发出到客户端接受这样一个过程。优化方面我们是实现ros的动态参数的输入与输出。以下我会使用功能包为ilovezero6yanshi的这一个功能包进行演示,srv文件名为test.srv。
我们要明白服务端与客户端的含义与关系,服务端顾名思义就是能够实现某种需求的商家,客户端相当于就是需要这种功能的客户。它们两个就是客户提出要求,商家完成要求的关系
服务通信流程实现
1.创建功能包和srv文件
新建一个功能包名为ilovezero6yanshi,在功能包下面建立srv文件夹在该文件夹中建立一个名为tes.srv的文件,以下是tes.srv文件的内容:
# 两个变量
int32 num1
int32 num2
---
# 这个是变量构成的函数
int32 sum
num1与num2是编写服务端功能的两个变量,与sum这个应变量构成一个功能函数,例如本例,服务端实现的就是sum=num1+num2这一个功能,而这个功能恰巧是服务端所需要的。
2.编辑配置文件
首先我们来配置package.xml文件,直接拉到文件最后,添加:
<exec_depend>message_runtime</exec_depend>
<build_depend>message_generation</build_depend>
这样package文件就配置结束。
然后我们再来配置cmake文件,在文本第十行的位置我们找到find_package添加message_generation,然后再大概第58行左右找到ad_service_files添加你写的srv文件,例如本案例文件名字就是叫做:test.srv文件。大概第71行找到generate_messages放开它的注释,大概105行左走找到catkin_package在roscpp rospy std_msgs后面添加message_runtime
3.编译
这个操作一定要在完成1与2之后完成4步骤之前操作这样才会生产相关文件才能编写下面的相关py代码。不然代码会出现相关报错。
4.编写服务端的相关py文件
我们这个案例是实现两数相加的案例,即