主题、服务与操作

设计系统时,主要有三种界面样式。 内容规范位于:doc:界面概述 中。 编写此文档的目的是为读者提供有关何时使用每种界面类型的指南。

主题

  • 应用于连续数据流(传感器数据、机器人状态等)。

  • 用于连续数据流。数据可能随时发布和订阅,与任何发送者/接收者无关。多对多连接。回调在数据可用时接收数据。发布者决定何时发送数据。

服务

  • 应用于快速终止的远程过程调用,例如查询节点状态或进行快速计算(如 IK)。它们绝不应该用于运行时间较长的进程,特别是当发生异常情况时可能需要抢占的进程,并且它们绝不应该改变或依赖于状态以避免对其他节点产生不必要的副作用。

  • 简单的阻塞调用。主要用于与请求特定数据相当快速的任务。语义上用于处理请求。

动作

  • 应用于移动机器人或运行时间较长但在执行期间提供反馈的任何离散行为。

  • 动作最重要的属性是它们可以被抢占,并且抢占应该始终由动作服务器干净地实现。

  • 动作可以在目标的整个生命周期内保持状态,即如果在同一服务器上并行执行两个动作目标,则对于每个客户端,可以保留一个单独的状态实例,因为目标由其 ID 唯一标识。

  • 需要几秒钟才能终止或启动较低级别控制模式的缓慢感知例程是操作的良好用例。

  • 更复杂的非阻塞后台处理。用于执行较长的任务,如执行机器人操作。语义上适用于现实世界的操作。