Les robots sont de plus en plus sophistiqués, capables d'exécuter des tâches complexes dans différents environnements. Une façon efficace de programmer leurs comportements est l'utilisation de machines à état fini (FSMs). Les FSMs fournissent une approche structurée pour gérer différents états dans lesquels un robot peut être et comment il transition entre eux. Ils sont un concept fondamental dans la robotique, les systèmes embarqués et l'IA de jeu parce qu'ils transforment des comportements complexes et réactifs en un modèle clair et prévisible.

Qu'est-ce qu'une machine d'État Finite?

Une machine à état fini est un modèle de calcul qui se compose d'un nombre fini d'états. Le robot est toujours dans un état à la fois, et il se transforme en d'autres états en fonction d'entrées ou de conditions spécifiques. Cela rend les FSMs idéals pour concevoir des comportements de robot prévisibles et gérables. À tout moment, l'historique entier du système est capturé par son état actuel; l'avenir dépend seulement de cet état et de l'entrée entrante. Cette propriété, connue sous le nom de propriété Markov, donne aux FSMs leur simplicité et leur vérifiabilité.

Les premiers travaux formels sur les automates finis remontent au milieu du XXe siècle, et les FSM sont utilisés en robotique depuis les années 1970. Ils apparaissent dans tout, des robots simples de suivi de ligne aux véhicules autonomes sous-marins. La principale idée est que de nombreuses tâches robotiques peuvent être décomposées en un ensemble de modes discrets, chacun avec sa propre loi de contrôle, stratégie de détection et critères de terminaison.

Composants de base d'une machine d'État Finite

États

Les états représentent les différents modes ou comportements qu'un robot peut présenter. Chaque état code un ensemble spécifique d'actions et de réponses. Idle, Aller de l'avant, Tourner, Éviter l'obstacle, Récupération de l'objetet Décrochage de l'objet. Les États sont généralement dessinés en cercles ou en rectangles arrondis dans des diagrammes d'état. Un robot ne peut être qu'à un état à la fois – cette exclusion mutuelle est ce qui rend le raisonnement sur le système traduisable.

Transitions

Les transitions définissent les règles qui font passer le robot d'un état à l'autre. Elles sont déclenchées par des événements – lectures de capteurs, expirations de minuterie ou conditions internes. < 0.5 m") and an optional action that executes during the switch. In a deterministic FSM, given a current state and an input, there is exactly one possible next state. Nondeterministic FSMs exist but are less common in robotics because they require backtracking or parallel exploration.

Entrées

Les entrées sont des signaux externes ou des données qui influencent les transitions d'état. En robotique, les entrées proviennent de capteurs (lidar, caméra, pare-chocs, IMU) ou de modules logiciels internes (objectifs de navigation, niveau de batterie). Elles peuvent être discrètes (capteur de bosses binaires) ou continues (l'étude à distance). < 0.3 m, and "obstacle cleared" when range > 0,5 m. Cette quantification est une étape critique de conception qui peut rendre ou briser la robustesse du FSM.

Actions

Les actions sont les comportements exécutés pendant que le robot est dans un état donné. Elles peuvent être continues (drive à vitesse constante) ou à une prise (envoyer une commande au préhenseur). Dans les machines Moore, les actions dépendent uniquement de l'état actuel. Dans les machines Mealy, les actions peuvent aussi dépendre de l'entrée qui a causé la transition.

Machines à repaser ou à Moore

Deux styles architecturaux classiques existent pour les FSM. Machine à coudre, les sorties (actions) sont associées uniquement à l'état. Machine à repasPar exemple, considérez un robot qui doit jouer un son lorsqu'il détecte un obstacle. Avec une approche Mealy, le son est émis pendant la transition de « Déplacement » à « Évitement ». Avec une approche Moore, le son serait joué en continu pendant l'état « Évitement ».

Les machines Mealy nécessitent souvent moins d'états parce que les actions peuvent être déclenchées par des événements plutôt que par des états habités, mais elles peuvent être plus difficiles à tracer pendant le débogage.

Mise en œuvre des systèmes de gestion de la qualité dans le logiciel robot

Pour programmer un robot en utilisant un FSM, les développeurs définissent généralement chaque état et ses comportements associés. Ils précisent ensuite les conditions dans lesquelles le robot passe d'un état à un autre. Cette approche simplifie la logique de comportement complexe et facilite le débogage.

1. Cas de commutation (conditions de sécurité)

Au niveau le plus simple, une seule boucle lit l'entrée du capteur et utilise une instruction sur la variable d'état courant. Chaque cas contient la logique spécifique à l'état et les conditions pour les transitions. Bien que facile à prototyper, ce modèle devient difficile pour plus d'une poignée d'états parce que toute la logique de transition vit dans une fonction monolithique.

2. Tableau d ' état (tableau de vérification)

Une table d'état code les transitions dans une matrice : les lignes représentent les états courants, les colonnes représentent les événements et les cellules contiennent l'état suivant et l'action optionnelle. Cette approche sépare la logique de transition du code de comportement, ce qui facilite la modification sans recompiler (si chargée depuis la configuration).

3. Profil de l ' État (orienté vers l ' objet)

Dans le modèle de conception d'État, chaque état est mis en œuvre comme une classe séparée dérivée d'une interface commune. Le contexte robotiste tient un pointeur à l'objet d'état courant. Quand l'entrée arrive, le contexte délègue à la méthode états , qui peut changer l'état courant en échangeant le pointeur. Ce modèle est propre, extensible et bien adapté pour les robots complexes avec de nombreux comportements. Il est largement utilisé dans le système d'exploitation robot (ROS) via des cadres comme SMACH.

Exemple : Évitement des obstacles avec le Pseudocode

Considérez un robot qui navigue dans une pièce et qui doit éviter les obstacles. Déplacement et Éviter. Lorsqu'un obstacle est détecté (plage < threshold), the robot transitions to the Avoiding state, executes a turn, and then returns to Moving. Below is a simplified C++-like pseudocode using the State pattern:

Cet exemple utilise un minuteur à l'état Éviter pour s'assurer que le robot tourne une seconde avant de reprendre le mouvement vers l'avant. Dans une véritable implémentation, vous pouvez vérifier la garde-côte avant de revenir.

Applications pratiques des robots des FSM

Ligne suivante

Un robot qui suit la ligne peut avoir trois états: Suivez la ligne, Recherche de ligneet Manipulation des intersections. Lorsque la ligne est perdue, le robot passe à Search, où il effectue un balayage. Une fois la ligne récupérée, il retourne à Follow. À une intersection, il passe à un état spécial qui lit un marqueur ou exécute un tour préprogrammé.

Opérations de retrait et de mise en place

Les manipulateurs industriels utilisent souvent un FSM pour séquencer une saisie : Déplacer vers la position d'approche, Déplacer vers le pot de graisse, Fermer le grappin, Rétractation, Déplacer vers l'approche, Ouvrir le gripper. Chaque état a des conditions d'entrée et de sortie claires. Les capteurs (couple de force, proximité) déclenchent des transitions entre ces états, rendant la tâche globale robuste à la variation de position de la pièce.

Exploration autonome

Dans l'exploration de robots mobiles, des états comme Explorer, Retour à l ' objectif, Rechargeet Récupération sont fréquents. Les transitions robot de Explore à Recharge lorsque la batterie est basse. Si elle est bloquée, un état de récupération exécute une séquence de retournements et de retournement avant de revenir à Explore. Les FSM fournissent une façon naturelle de gérer ces modes de défaillance explicitement.

Avantages et limites des MSF

Avantages

  • Prévisibilité: Comportement clairement défini et facile à comprendre. Avec un diagramme d'état, tout membre de l'équipe peut voir exactement ce que le robot fera dans chaque situation.
  • Modularité: De nouveaux comportements peuvent être ajoutés en introduisant de nouveaux états et transitions sans réécrire la logique existante, surtout lorsque l'on utilise les tableaux de l'état ou des états.
  • Déboguement : L'isolement des problèmes est plus simple lorsque les comportements sont organisés en états. Vous pouvez enregistrer l'état actuel et les événements qui ont déclenché les transitions, ce qui facilite la lecture et la trace des échecs.
  • Vérification : Comme les FSM sont finis, des méthodes formelles peuvent être appliquées pour vérifier des propriétés comme la vivacité (le robot ne se bloque jamais) et la sécurité (il n'entre jamais dans un état interdit).

Limites

  • Explosion d'État : Un robot avec 10 entrées binaires indépendantes pourrait théoriquement avoir besoin de 2^10 états pour couvrir toutes les combinaisons, bien que dans la pratique les états soient regroupés par pertinence.
  • Échelle : Les MSF plats classiques sont difficiles à maintenir au-delà de 20 à 30 états. Le graphique de transition devient un « diagramme spaghetti » dense.
  • Manque de proportionnalité : Les robots doivent souvent effectuer des tâches simultanées (p. ex. naviguer pendant la recherche de repères). Les machines d'état concurrentes ou les FSM hiérarchiques s'adressent à cela.

Variantes FSM avancées

Machines d'État à finite hiérarchiques

Les HFSM, également appelés statcharts, permettent à un état de contenir un ou plusieurs sous-états. Navigation État peut être lui-même un FSM avec des sous-états Aller de l'avant, Tourneret Éviter. Si le robot entre dans une Batterie basse situation dans n'importe quel sous-état de navigation, une transition du parent Navigation indiquer à Accostage Les HFSM réduisent l'explosion d'état en permettant des transitions partagées et des comportements par défaut. Le formalisme a été introduit par David Harel en 1987 et est largement utilisé dans les machines d'état UML.

Machines d'État Finite Fuzzy

Dans les FSM classiques, les transitions sont nettes, une condition est vraie ou fausse. Les FSM floues remplacent la logique booléenne par des degrés d'adhésion. Par exemple, au lieu de « l'obstacle détecté = oui/non », l'entrée pourrait être « la proximité de l'obstacle = 0,7 ». Le robot pourrait se transformer en partie à l'état Éviter tout en restant partiellement en mouvement.

Les MSF probabilistes

Dans une tâche de robot, vous pourriez modéliser la probabilité de choisir avec succès un objet compte tenu de l'état actuel. Cela permet au robot de choisir des actions qui maximisent la récompense attendue – un sujet au cœur de l'apprentissage du renforcement. Bien que ce n'est pas aussi commun dans le code de production déterministe, les FSM probabilistes sont un pont théorique important.

Comparaison des ESM avec les arbres de comportement

Les arbres de comportement (BT) sont devenus populaires dans la robotique et le jeu d'IA comme alternative aux FSM. Dans un BT, les nœuds composites (Sélécteur, Séquence) contrôlent l'exécution des nœuds enfants. Contrairement aux FSM, les BT n'ont pas un seul "état courant" mais traversent plutôt un arbre de la racine chaque tique. Cela rend les BT plus modulaires et réutilisables; les sous-arbres peuvent être facilement combinés. Cependant, les BT peuvent être plus difficiles à déboguer en raison de leur flux de contrôle implicite et sont moins faciles à vérifier.

Pour plus d'informations sur cette comparaison, voir la Wikipedia article sur les arbres comportementaux- Oui.

Outils et cadres pour robots FSM

Plusieurs moteurs simplifient la construction et l'exécution de FSM sur des robots :

  • ROS SMACH – Une bibliothèque Python qui fournit un cadre de machine d'état intégré avec des sujets, des actions et des services ROS. Il prend en charge les états hiérarchiques et l'introspection (vue de l'état actuel via la console ROS). Documentation SMACH- Oui.
  • PyRo – Un paquet Python pour la robotique qui comprend une mise en œuvre légère FSM adaptée aux robots petits à moyens.
  • QP/C++ – Un cadre intégré en temps réel (de Quantum Leaps) qui fournit des objets actifs animés par des événements avec des machines d'état hiérarchique. Il est utilisé dans de nombreuses applications industrielles et aérospatiales.
  • Compilateurs de machines d'État – Outils comme Ragel et peuvent compiler des diagrammes d'état en C, C++ ou Java. Ils génèrent des FSM efficaces, pilotés par table, sans frais généraux d'exécution.

Conclusion

Les machines à l'état fin sont un outil puissant dans la programmation des robots, permettant aux développeurs de créer une logique de comportement fiable et durable. Alors que la technologie robotique avance, les FSM restent une technique fondamentale pour gérer des comportements autonomes complexes. Leur transparence les rend idéales pour les systèmes critiques en matière de sécurité où le comportement doit être vérifié et vérifié. Alors que les nouveaux paradigmes comme les arbres de comportement offrent des avantages en modularité et en évolutivité, les FSM restent la méthode d'entrée en ligne pour les systèmes avec des modes bien définis et des transitions claires et animées par des événements.