前言
在设计系统时,存在三种主要的界面样式。 本文旨在为读者提供有关何时使用每种接口的指南。
一、话题
- 应该用于连续数据流(传感器数据、机器人状态……)。
- 用于连续数据流。 数据可以在任何时候独立于任何发送者/接收者发布和订阅。 多对多连接。
一旦数据可用,回调就会接收数据。 发布者决定何时发送数据。
二、服务
- 应该用于快速终止的远程过程调用,例如用于查询节点的状态或进行 IK 等快速计算。它们不应该用于运行时间较长的进程,特别是在发生异常情况时可能需要抢占的进程,它们不应该改变或依赖于状态以避免对其他节点产生不必要的副作用。
- 简单的阻塞调用。 主要用于请求特定数据的速度相对较快的任务。 语义上用于处理请求。
三、行动
- 应用于移动机器人或运行较长时间但在执行期间提供反馈的任何离散行为。
- 动作最重要的属性是它们可以被抢占,并且抢占应该始终由动作服务器干净地实现。
- 动作可以在目标的生命周期内保持状态,即如果在同一服务器上并行执行两个动作目标,则可以为每个客户端保留一个单独的状态实例,因为目标由其 id 唯一标识。
- 需要几秒钟才能终止或启动较低级别控制模式的缓慢感知例程是操作的良好用例。
- 更复杂的非阻塞后台处理。 用于较长的任务,例如执行机器人动作。 语义上用于现实世界的动作。