古月老师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
ROS入门:服务模型创建与自定义服务实战

本文详细介绍了如何在ROS中创建服务模型,包括服务数据结构的设计,以及客户端和服务端的代码实现。从创建功能包、依赖管理到编译运行,为初学者提供了一步到位的教程。
最低0.47元/天 解锁文章
3035

被折叠的 条评论
为什么被折叠?



