参考:ROS中关于topic和service的运用场合

Topics

特点:

1.单向,分工明确,处理连续数据流,topic是一种多对多的形式,一个Node可以订阅多个Topic,可以publish到多个topic上。
2.topic中的数据只要准备好了,就可以被回调函数调用。而发送端的topic的发送时机由publisher自己决定。

场景:

1.连续

比如收发传感器数据,收发控制指令

Service

特点:

1.双向,有反馈
2.往往不是固定频率发送,处理不连续数据,需要时才发送请求和处理

场景:

1.离散
2.少量时间

用于那些快速停止的程序,如查询一个node的状态,做数学运算,机械臂的运动学反解(action也可以)等。

Actions

特点:

升级版service

场景:

1.离散
2.需要反馈 / 状态跟踪
3.需要花费大量时间
4.运行过程中可以被中断(中断通常是靠Action server来实现)

让小车前进一段时间,并在运行过程中提供反馈。比如《ROS by Example》书中想让小车走1米,运行过程中需要不断检测是否走了1米,走到了就中断它,让它停下来。

即使在同一个Action Server上运行不同的两个action goal, 它们的状态也能够利用各自的ID被区分开来。像视觉处理等需要较多时间来启动或终止的程序也是利用action来实现的一个不错的例子。

用Topic和Action能完成大部分操作

ROS topic,service和action的使用场景的更多相关文章

  1. dao层、service和action的运用和区别

    DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,对于数据库的操作,具体到对于某个表的增删改查, 也就是说某个DAO一定是和数据库的某一张表一一对应的 ...

  2. <ROS> 通讯方式之 Action

    Ros 官网介绍 http://wiki.ros.org/actionlib 一个简易的action教程,package -- example_action_server. action文件夹内存放 ...

  3. 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml

    转自:https://blog.csdn.net/eson_15/article/details/51297698 上一节我们搭建好了Struts2.Hibernate和Spring的开发环境,并成功 ...

  4. Ros学习service——小海龟

    rosservice 服务(services)是节点之间通讯的另一种方式.服务允许节点发送请求(request) 并获得一个响应(response) rosservice list 输出可用服务的信息 ...

  5. 十一:外观模式详解(Service,action与dao)

    定义:外观模式是软件工程中常用的一种软件设计模式.它为子系统中的一组接口提供一个统一的高层接口.这一接口使得子系统更加容易使用. 该定义引自百度百科,它的表现很简单,将一系列子接口的功能进行整理,从而 ...

  6. k8s中几个基本概念的理解,pod,service,deployment,ingress的使用场景

    k8s 总体概览 前言 Pod 副本控制器(Replication Controller,RC) 副本集(Replica Set,RS) 部署(Deployment) 服务(Service) ingr ...

  7. python ros topic demo

    发布者: #!/usr/bin/env python #coding=utf- import rospy from std_msgs.msg import String def talker():   ...

  8. ros topic 命令

    #查看topic频率rostopic hz /xxx_imu_driver/imu #查看topic信息rostopic info /xxx_imu_driver/imu #查看topic数据rost ...

  9. ROS Topic 常用指令

    rostopic list rosnode list一樣,就是列出目前運行中的topic有哪些. rostopic echo <topic_name> 接下來這個指令比較重要啦,就是去監聽 ...

随机推荐

  1. 【csp模拟赛3】组合数学

    思路: 先排序,取最大的在剩余左边任意找k-1个数,所以是排列组合,费马小定理求逆元,预处理阶乘,注意要取模.. 代码: #include<cstdio> #include<iost ...

  2. PCIe/NVMe Soft Protocol Analyzer - 惊天发现

    最近在看一些协议方面的东西,刚刚接触很多东西不懂.为了尽快熟悉,打算搭建一套系统,包括上层主机和下层SSD. 既然是协议,那就需要硬啃spec.但是俺是懒人一个,想找个便捷方式快速熟悉.这就想到了协议 ...

  3. BERT中文 添加 early_stop

    Step1:建一个hook early_stopping_hook = tf.contrib.estimator.stop_if_no_decrease_hook( estimator=estimat ...

  4. 树莓派安装alsa-lib库

    安装alsa-lib库 apt-get install libasound2-dev dpkg -L libasound2-dev 参考:https://blog.csdn.net/happygril ...

  5. Python基础之enumerate枚举

    枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表,字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值. 1. 第一种类型 lst = ["a&quo ...

  6. 手把手教你在Linux系统下安装MongoDB

    1. 下载最新的stable版MongoDB [root@spirit-of-fire ~]# wget http://downloads.mongodb.org/linux/mongodb-linu ...

  7. Java实验报告(一)

    Java实验报告(一) 实验过程 1. 打印输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个" ...

  8. Qt VS MFC

    最近用了一段时间Qt,觉得网上这篇文章讲述Qt与MFC之间的区别很到位,分享一下. ----------------------------------原文---------------------- ...

  9. kafka可视化工具安装及简单使用

    一.安装 双击kafkatool_64bit.exe安装kafka可视化工具,并且C:\Windows\System32\drivers\etc配置HOSTS,打开HOSTS并添加: HOSTS添加: ...

  10. 怎么让C#项目自动复制NuGet中的dll引用到输出目录?

    1.从vs中关闭项目 2.用记事本打开csproj文件 3.  在<PropertyGroup> 和 </PropertyGroup>之间添加一行: <CopyLocal ...