ROS学习笔记7 服务、包

ROS中除了消息传递机制还有另外一种通信方式称为服务调用(service calls)。服务调用和消息的区别主要在两方面的内容。
(1)服务调用是双向的,一个节点给另外一个节点发送信息并等待响应,因此是双向通讯。
(2)服务调用是实现一对一的通讯,一个节点发起一个服务,对这个服务的响应返回这个节点。
(3)服务常用在分布式系统中。

服务的基本过程
服务的基本过程是一个客户端(client)节点发送一些称为请求(request)的数据到一个服务器(server)节点,并且等待回应。服务器节点接收到请求之后,采取行动(计算,配置软件或者硬件,改变自身的行为等)。然后发送一些称为响应的(response)的数据给客户端节点。
服务需要定义一对消息,必须有请求(request)消息的数据类型和(response)消息的数据类型。这两种消息类型都存储在.srv后缀的文件中,srv文件存储在功能包的srv子文件夹中。
ROS中有两种服务管理工具,一个是rossrv,是用来查询一个服务的信息,类似与rosmsg。另外一个是rosservice,是用来查询所有运行的服务。
rosservice的用法:

    (1) $ rosservice call /service args : 使用给定的参数调用服务。
    (2) $ rosservice find /service-type : 找到给定服务类型的服务
    (3) $ rosservice info /services : 打印给定服务的信息
    (4) $ rosservice list  : 列出在系统上运行的服务
    (5) $ rosservice type /service : 显示给定服务的类型
    (6) $ rosservice uri /service : 打印出服务的 ROSRPC URI

ROS bag
ROS 包用来存储来自话题(Topic)和服务(Service)的信息。包的主要应用是数据记录(data logging),机器人的数据可以被记录,可视化和离线运行。
包的常用命令如下:

    (1) $ rosbag record [topic_1] [topic_2] -o [bag_name] : 这个命令用来记录给定的话题中的信息并且写入一个包文件,如果参数是 -a 则将所有话题的数据写入包文件。
    (2) $ rosbag play [bag_name] : 回放一个包内的数据。
    有一个GUI工具可以操作包,利用 rqt_bag 调用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值