Sujets vs Services vs Actions

Lors de la conception d’un système, il existe trois principaux styles d’interfaces. Les spécifications du contenu se trouvent dans Aperçu des interfaces. Ceci est écrit pour fournir au lecteur des directives sur le moment d’utilisation de chaque type d’interface.

Les sujets

  • Doit être utilisé pour les flux de données continus (données de capteur, état du robot, …).

  • Sont pour un flux de données continu. Les données peuvent être publiées et souscrites à tout moment, indépendamment de tout expéditeur/destinataire. Connexion plusieurs à plusieurs. Les rappels reçoivent les données dès qu’elles sont disponibles. L’éditeur décide quand les données sont envoyées.

Prestations de service

  • Doit être utilisé pour les appels de procédure à distance qui se terminent rapidement, par ex. pour interroger l’état d’un nœud ou effectuer un calcul rapide tel que IK. Ils ne doivent jamais être utilisés pour des processus d’exécution plus longs, en particulier les processus qui pourraient être nécessaires pour anticiper si des situations exceptionnelles se produisent et ils ne doivent jamais changer ou dépendre de l’état pour éviter des effets secondaires indésirables pour d’autres nœuds.

  • Appel bloquant simple. Principalement utilisé pour des tâches relativement rapides comme la demande de données spécifiques. Sémantiquement pour le traitement des requêtes.

Actions

  • Doit être utilisé pour tout comportement discret qui déplace un robot ou qui s’exécute pendant une durée plus longue mais qui fournit une rétroaction pendant l’exécution.

  • La propriété la plus importante des actions est qu’elles peuvent être préemptées et la préemption doit toujours être implémentée proprement par les serveurs d’action.

  • Les actions peuvent conserver l’état pendant toute la durée de vie d’un objectif, c’est-à-dire que si vous exécutez deux objectifs d’action en parallèle sur le même serveur, pour chaque client, une instance d’état distincte peut être conservée puisque l’objectif est identifié de manière unique par son identifiant.

  • Les routines de perception lente qui prennent plusieurs secondes pour se terminer ou initier un mode de contrôle de niveau inférieur sont de bons cas d’utilisation pour les actions.

  • Traitement en arrière-plan non bloquant plus complexe. Utilisé pour des tâches plus longues comme l’exécution d’actions de robot. Sémantiquement pour les actions du monde réel.