ROS--服务编程Client&Server(自定义服务数据)

ROS入门:服务模型创建与自定义服务实战
本文详细介绍了如何在ROS中创建服务模型,包括服务数据结构的设计,以及客户端和服务端的代码实现。从创建功能包、依赖管理到编译运行,为初学者提供了一步到位的教程。


古月老师ROS入门21讲笔记。

服务模型

在这里插入图片描述
与话题模型不同的是,话题模型中发送端不断的发送,接收端不断地接收。
服务模型中Client节点发送请求给Server端,Server收到请求后会回馈一个Response给Client。通过Service,每Request一次,才显示一次。

创建功能包

$ cd ~/catkin_ws/src
$ catkin_create/pkg learning_service roscpp rospy std_msgs geometry_msgs turtlesim

功能包后面是一系列所依赖的功能包。

自定义服务数据

在功能包目录下,创建srv文件夹,创建Person.srv文件。与话题模型不同的是因为有请求和回馈,所以"- - -“之上是Request内容,之下是Response内容,用”- - -"区分。

string name 
uint8 age
uint8 sex
uint8 unknown = 0
uint8 male = 1
uint8 female = 2

---
string result

编写代码

在功能包中的src文件夹下创建person_client.cpp和person_server.cpp文件。

客户端代码

1.初始化ROS节点
2.创建一个Client实列
3.发布服务请求数据
4.等待Server处理之后的应答结果。

#include <ros/ros.h>
#include "learning_service/Person.h"
int main(int argc, char *argv[])
{
   
   
    // 初始化ROS节点
	ros::init(argc, argv, "person_client");
    // 创建节点句柄
	ros::NodeHandle node;
    // 发现/spawn服务后,创建一个服务客户端,连接名为/spawn的service
	ros::service::waitForService("/show_person");
	ros::ServiceClient person_client = node
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值