ROS topic,service和action的使用场景

参考: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能完成大部分操作

原文地址:https://www.cnblogs.com/j-c-y/p/11199919.html