Qu'est-ce qu'un RTOS?

Contrairement aux systèmes d'exploitation à usage général (GPOS) tels que Linux ou Windows, qui privilégient le débit maximal et l'expérience utilisateur, un RTOS se concentre sur l'exécution des tâches en temps opportun. Dans les systèmes robotiques, l'absence de délai peut entraîner une défaillance catastrophique, un bras robot dépassant sa cible ou un robot mobile ne permettant pas d'éviter un obstacle.

RTOS viennent dans deux saveurs primaires: dur en temps réel et doux en temps réel. Les systèmes en temps réel difficiles doivent respecter chaque échéance sans exception; une échéance manquée équivaut à une défaillance du système. Les systèmes en temps réel souples peuvent tolérer des échéances manquées occasionnellement avec une dégradation gracieuse. La robotique nécessite souvent des garanties en temps réel difficiles pour des fonctions critiques en matière de sécurité telles que le contrôle moteur ou la logique d'arrêt d'urgence, tandis que les tâches de communication ou de journalisation peuvent fonctionner avec des contraintes en temps réel souples. Système de gestion des déchets, Zéphyre, VxWorkset QNX, chacun offrant des compromis différents entre la complexité, les coûts de licence et les capacités en temps réel.

Caractéristiques clés de RTOS pour la robotique

Un RTOS apporte plusieurs fonctionnalités particulièrement bénéfiques dans la programmation de robots :

  • Déterminisme : Le système permet de prévoir un calendrier pour l'exécution des tâches. Par exemple, une boucle de lecture de capteur dans un robot doit être complétée dans une fenêtre fixe pour assurer une rétroaction précise. Le déterminisme est mesuré par jitter – la variation dans les temps d'exécution des tâches.
  • Calendrier préventif fondé sur les priorités : Les tâches sont prioritaires, et le noyau RTOS peut empêcher une tâche moins prioritaire de lancer une tâche plus prioritaire dès qu'elle est prête. Cela garantit que les opérations urgentes – comme la réception d'un signal de capteur de collision – sont gérées immédiatement.
  • Latence à faible interruption: Le temps entre une interruption matérielle (par exemple, d'un encodeur ou d'un commutateur limite) et l'exécution de la routine de service d'interruption associée (ISR) est minimisé. Les implémentations modernes RTOS permettent d'obtenir des latences dans la gamme microseconde, critique pour les boucles de commande à grande vitesse.
  • Gestion efficace des ressources : Le noyau gère le temps, la mémoire et les périphériques CPU avec un minimum de frais généraux. Les fonctionnalités comme les piscines de mémoire de taille fixe et l'allocation basée sur la pile réduisent la fragmentation et accélèrent l'allocation par rapport à GPOS.
  • Communication et synchronisation intertâches : La robotique implique souvent plusieurs tâches qui doivent partager des données ou coordonner des actions. RTOS fournit des files d'attente, des sémaphores, des mutex et des drapeaux d'événement pour faciliter la communication sans conditions de course.
  • Fiabilité et isolement: Un RTOS fonctionne généralement avec une petite empreinte mémoire et peut isoler les tâches dans des régions de mémoire distinctes (où le matériel le supporte). Cela protège le firmware critique des défauts dans des modules moins critiques, une exigence pour les normes de certification de sécurité comme ISO 26262 ou CEI 61508.

Avantages de l'utilisation d'un RTOS dans la programmation de robots

Déployer un RTOS dans un robot apporte des améliorations tangibles sur une boucle en métal nu ou un GPOS :

  • Amélioration de la réceptivité : Avec un calendrier basé sur la priorité, un robot peut réagir aux événements de capteur en microsecondes plutôt que d'attendre la fin d'un cycle de scrutin.
  • Fiabilité accrue : Comme les tâches sont isolées et programmées de façon déterministe, le système est moins enclin à s'écraser ou à s'accrocher. Une défaillance de la pile de communication n'a pas affaissé la tâche de commande moteur si les priorités sont définies correctement.
  • Comportement déterministe: Le temps exact d'exécution de chaque cycle de commande est connu, simplifie le réglage du contrôleur et l'analyse de sécurité. Cette prévisibilité est une condition préalable à la certification en robotique industrielle et médicale.
  • Échelle : L'ajout de nouvelles fonctionnalités, comme le traitement de vision ou la rétroaction de force, devient simple : vous créez une nouvelle tâche et lui assignez une priorité. Le RTOS gère l'intégration avec les tâches existantes sans réorganiser la boucle entière.
  • Meilleure utilisation du matériel : RTOS peut exploiter les processeurs multi-cœurs en orientant les tâches en temps réel vers des cœurs dédiés tout en exécutant des charges de travail non en temps réel sur d'autres cœurs, en maximisant les performances sans sacrifier le déterminisme.

Mise en œuvre de la RTOS dans la programmation de robots

L'intégration d'un RTOS dans un système robotique suit un processus structuré. Ci-dessous, nous détaillons chaque étape, y compris les considérations de conception et les pièges communs.

1. Sélectionnez un RTOS approprié

Le choix dépend de la plateforme matérielle (ARM Cortex-M, RISC-V, x86), de la licence (open-source vs propriétaire), du soutien communautaire et des performances en temps réel. Système de gestion des déchets (site officiel) est le plus populaire en raison de sa portabilité large et de sa petite empreinte. QNX (Site officiel de QNX) offre des options de conformité et de vérification formelles POSIX. Projet Zephyr (Site officiel de Zephyr) est un autre RTOS open-source avec un soutien de réseau solide et une adoption croissante dans la robotique embarquée.

2. Conception de l'architecture des tâches

Identifier toutes les activités simultanées du robot : acquisition de données de capteur, fusion de capteurs, boucle de commande moteur, planification de trajectoire, enregistrement de télémétrie, communication (p. ex. bus CAN, Ethernet), moniteur de sécurité et interface utilisateur. Chacun devient une tâche (ou un thread) séparée. Définissez chaque tâche (si périodique) ou déclencheur (inruptible ou déclenché par un événement). Documentez des ressources partagées comme des tampons pour les données du capteur ou des variables d'état partagées pour la pose du robot.

3. Privilégier les tâches

Attribuer des niveaux de priorité en fonction de la criticité et de la sévérité de la date. Utiliser le taux d'attribution des priorités monotoniques pour les tâches périodiques : la période la plus courte obtient la plus haute priorité. Pour un robot typique : la commande moteur (1 boucle kHz) devient la priorité absolue; le moniteur de sécurité (dirigé par l'événement) suit; la fusion des capteurs (500 Hz) suit; la planification de trajectoire (100 Hz) est plus faible; la communication et l'enregistrement au plus bas.

4. Mettre en œuvre le calendrier des tâches

Configurez le programmeur RTOS – habituellement basé sur une priorité préventive. Définissez le taux de tic (souvent 1 ms ou plus fin) pour supporter la granularité de la préemption des tâches. Pour les tâches qui doivent s'exécuter à un intervalle précis, utilisez le minuteur logiciel RTOSS ou un délai de tâche basé sur une minuterie. Exemple : une tâche de commande moteur peut utiliser dans FreeRTOS pour maintenir une période d'exécution fixe indépendante du temps d'exécution des tâches (à condition que le temps soit inférieur à la période).

5. Synchroniser les ressources partagées

Utilisez mutexes pour protéger les structures de données partagées (par exemple, une structure contenant des états de joint qui est à la fois écrit par la tâche de fusion du capteur et lu par la tâche de contrôle moteur). Utilisez les files d'attente pour le flux de données entre les tâches : les données du capteur peuvent être en attente de la tâche de fusion, qui se traduit par une file d'attente pour le contrôleur moteur.

6. Interruptions de la poignée

Les routines de service doivent être courtes. Déférez le traitement lourd au niveau des tâches en utilisant un sémaphore ou une notification de tâches de l'ISR. Par exemple, un encodeur interrompt les incréments d'un compteur et signale une tâche de commande moteur pour la lire, plutôt que d'effectuer le math de contrôle à l'intérieur de l'ISR. Cela maintient une faible latence d'interruption et empêche de bloquer d'autres interruptions.

7. Essai et optimisation

Utilisez des analyseurs logiques ou des outils de trace RTOS (p. ex. FreeRTOS+Trace) pour mesurer les temps d'exécution des tâches, les jitters et l'utilisation de la pile. Augmentez les tailles de pile si les tâches débordent (provoque souvent des pannes mystérieuses).

Défis et considérations

Alors que RTOS offre de nombreux avantages, les développeurs sont confrontés à plusieurs défis:

  • Complexité accrue : Le multitâche introduit les conditions de course, les impasses et l'inversion prioritaire. L'utilisation correcte des primitifs de synchronisation nécessite une conception et des tests soigneux.
  • Sur la tête : Dans les boucles extrêmement critiques (par exemple, la commande moteur de 10 kHz), les frais généraux peuvent être inacceptables, forçant une approche hybride : l'ISR en métal nu pour la boucle rapide et l'ISR pour les tâches plus lentes.
  • Empreinte de mémoire : Chaque tâche nécessite sa propre pile, qui peut être grande dans des robots complexes. L'estimation de la pile est difficile – trop petites causes débordent, trop gros déchets RAM. Sur les microcontrôleurs à mémoire, cela peut limiter le nombre de tâches.
  • Difficultés de débogage : Les bugs dépendants du calendrier peuvent être non déterministes, ce qui rend la reproduction et le débogage difficile. L'utilisation de débogueurs RTOS-aware et d'outils de trace est essentielle.
  • Charge de certification: Pour les robots critiques en matière de sécurité (médicale, industrielle), le RTOS lui-même peut devoir être certifié. FreeRTOS possède une variante critique en matière de sécurité (FreeRTOS Safety) qui simplifie la certification, tandis que QNX offre un noyau certifié.

Options RTOS populaires pour la robotique

Chaque famille RTOS a ses propres forces :

  • - C'est pas vrai. Open-source, petite empreinte, énorme communauté, ports à de nombreux MCU. Idéal pour les robots petits à moyens, les projets éducatifs, et les contrôleurs à bas coût. Ses extensions Amazon ajoutent des mises à jour en direct et l'intégration cloud.
  • - C'est pas vrai. L'écosystème open source, semblable à Linux, supporte le Wi-Fi/BLE/Thread, excellent pour les robots connectés à l'IoT. Il possède une base de code plus grande que FreeRTOS mais des fonctionnalités de réseau plus riches.
  • VxWorks : Proprietaire, conforme à POSIX, utilisé dans la robotique industrielle et aérospatiale. Offre des performances déterministes et une certification de sécurité robuste.
  • NX Neutrino: Architecture microkernel, en temps réel dur, utilisée dans les véhicules autonomes critiques en matière de sécurité et les robots médicaux.QNX Neutrino détails)

Avenir de la RTOS en robotique

La tendance vers des robots plus intelligents est à l'évolution de RTOS. Les processeurs multi-cœurs deviennent standard, forçant les développeurs de RTOS à mettre en œuvre le support multi-traitement symétrique (SMP). FreeRTOS a le support SMP, et Zephyr prend également en charge le multi-cœur. Une autre tendance importante est l'intégration avec le Robot Operating System (ROS 2).site officiel du micro-ROS) apporte ROS 2 aux microcontrôleurs utilisant FreeRTOS ou Zephyr, permettant un flux de travail de développement unifié des ordinateurs mono-board aux MCU de métaux nus.

De plus, l'inférence AI au bord (par exemple, TensorFlow Lite for Microcontrollers) est combinée avec le RTOS pour fournir une prise de décision en temps réel. Le RTOS doit garantir que les tâches d'inférence ne perturbent pas les boucles de contrôle critiques pour la sécurité, souvent en les exécutant à une priorité inférieure ou sur un noyau séparé.

Conclusion

En mettant en place un système d'exploitation en temps réel dans la programmation des robots, un RTOS permet aux ingénieurs de décomposer des comportements complexes des robots en tâches gérables et fiables. Bien que des défis tels que la complexité accrue et les difficultés de débogage existent, les avantages d'une meilleure réactivité, fiabilité et évolutivité l'emportent beaucoup sur les coûts. La sélection du RTOS approprié dépend des exigences de sécurité du robot, des contraintes matérielles et du budget de développement.