- Qu'est-ce qu'une lifecycle node ?
Un noeud sur lequel, on peut à travers un noeud que j'appelerais manager
gérer la vie des noeuds lifecycles via 4 états: - Unconfigured
Le noeud vient d'être créé, il n'est pas encore utilisable. C'est publishers, services, serveurs d'actions... ne sont pas encore configurés. - Inactive
Les publishers, services, serveurs d'actions... du noeud sont maintenant configurés mais non utilisable.
En théorie non utilisable, mais sur les lifecyclepython, on a que les publishers qui sont optimisé en lifecycle via LifecyclePublisher.
En c++, ça ne doit pas être le cas - Active
Notre noeud vit maintenant sa meilleure vie, il peut travailler tranquille - Finalized
Son travail est terminé. On détruit tout publishers, services, serveurs d'actions...
Dans l'exemple Python de ce tutoriel, nous retrouvons 4 paquets:
- manager - Noeud qui va des services va gérer le cycle de vie des noeuds suivants
- lifecycle_listener Noeud qui va communiquer avec lifecycle_talker
Il sera composé d'un subscriber sur le topic du noeud suivant. - lifecycle_talker Un talker rien de plus basique qui va écrire au listener
- lifecycle_talker2 Un second talker qui sera lancé quand les deux derniers noeuds auront terminé leur job.
Le launch file va tout d'abord lancé le manager avec
les noeuds lifecycle_talker et lifecycle_listener.
Quand leur job sera terminé, ils vont le dire aux manager qui va les shutdown.
Dans le launch file, on précise que lorsqu'ils ont atteint l'état shutdown, qu'on les détruit.
A la destruction, du noeud principal du talker/listener process,
on vient lancer un second launch file composé du noeud lifecycle_talker2.
Qui de même lorsqu'il a fini de travaillé, on vient le shutdown puis le détruire.
A la fin du travail de ce dernier, on shutdown le process.
Voir la bibliographie sur le sujet.
- Publication - Impact de la composition ROS sur les systèmes Robotiques
La composition étant le fait d'avoir plusieurs noeud sur un seul process.
C'est un autre sujet que les noeuds lifecycle à part entière mais intéressant. - Dynamics composition en C++
-
Exemple d'un projet complet lifecycle avec IHM
Le même que l'autre exemple j'ai l'impression. Mais peut-être qu'il y a des meilleurs commentaires.