ros学习心得(十三)service通讯

本文介绍了ROS中的Service通讯机制,包括客户端发送请求和服务器端处理响应的过程。示例展示了一个简单的加法服务,服务器端接收到客户端的加法请求后进行计算并返回结果。调试方法涉及使用`rosrun`命令或`rqt_service_caller`工具。
摘要由CSDN通过智能技术生成

Service通讯框架:

一个节点具备client功能(客户端),另一个节点具备server功能(服务端的功能) 

Service 通讯分为client端和service端

①client端负责发送请求(Request)给server端

②server端负责接收client端发送的请求数据,并处理

③server端收到数据后,根据请求数据和当前的业务需求,产生数据,将数据返回给client端。 

Service通讯的特点:

①同步数据访问

②具有响应反馈机制

③一个serve(干活的)r多个client

④注重业务逻辑处理 

Service通讯的简单需求:

①构建一个service通讯。需求是一个client端,一个server端。、

②server端为client端提供服务

③服务的内容是:帮助client端计算加法求和

Service通讯-server端实现:

#!/usr/bin/env python
#coding:utf-8

#client:10 20
#server:10 + 20

import rospy
from rospy_tutorials.srv import AddTwoInts,AddTwoIntsRequest,AddTwoIntsResponse

def callback(request):
    if not isinstance(request,AddTwoIntsRequest):return 
    a = request.a
    b = request.b
    
    #业务逻辑处理
    c = a + b
    
    response =AddTwoIntsResponse()
    response.sum = c
    return response


if __name__ == '__main__':
    #创建节点
    rospy.init_node('server_node')
    
    #写service通讯的server端
    #服务端server
    #服务名称或者服务地址
    service_name = 'hello'
    #service_class服务的数据类型
    #回调,客户端什么时候访问
    server = rospy.Service(service_name,AddTwoInts,callback)
    
    rospy.spin()

server端的调试:

输入命令:rosrun  rqt_service_caller   rqt_service_caller

或者使用命令:rosservice   call  /hello(服务名称 ) tap几下,就会弹出对应修改参数的码

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值