Logiciel embarqué en C d'un ROV pour ORANO

Contexte
Développement du logiciel embarqué d’un ROV pour ORANO, destiné au nettoyage des piscines de réacteurs nucléaires. Le système embarqué pilotait différents capteurs et équipements du robot pour contribuer à sa localisation, à son déplacement, et transmettait son état et ses mesures aux autres calculateurs du ROV.
Le développement s’effectuait en C, directement sur un microcontrôleur PIC intégré à une carte électronique conçue par le bureau d’études Hardware. J’étais seul en charge du firmware, sur l’ensemble du périmètre décrit ci-dessous ; le projet nécessitait par ailleurs une collaboration étroite avec l’équipe Hardware, notamment pour définir et valider les interfaces entre le microcontrôleur, les capteurs, les actionneurs et les autres calculateurs du robot.
Contraintes techniques
Le développement était orienté temps réel, avec prise en compte des contraintes de fréquence d’acquisition, de disponibilité des données et de réactivité du système.
Les échanges avec la carte électronique devaient respecter les contraintes et interfaces définies par le bureau d’études Hardware — les choix d’architecture et d’interface étaient réalisés en collaboration étroite avec cette équipe, afin de garantir la cohérence entre les contraintes électroniques de la carte et le comportement attendu du logiciel embarqué.
Les défauts et états dégradés des capteurs et des communications devaient être gérés pour que les autres calculateurs du ROV disposent en toute circonstance d’informations fiables sur l’état du système, dans un environnement d’intervention (piscine de réacteur nucléaire) qui ne tolère pas d’ambiguïté sur l’état réel du robot.
Démarche
Les périphériques matériels étaient abstraits pour séparer autant que possible la logique applicative des spécificités des interfaces électroniques : une architecture logicielle en couches distinguait les drivers et l’abstraction hardware (interface avec les périphériques du microcontrôleur et les capteurs), l’acquisition (récupération et mise en forme des mesures), le traitement des données (préparation et exploitation des informations de localisation et de déplacement), la communication inter-calculateurs (transmission des données et états vers les autres calculateurs du ROV en MODBUS maître/esclave), la logique applicative embarquée (orchestration du fonctionnement et gestion des états du robot), et la gestion des erreurs (détection et traitement des défauts liés aux capteurs ou aux communications).
Réalisations
Pilotage de capteurs et actionneurs
Contribution à la localisation et au déplacement du ROV.
Acquisition et traitement des mesures
Récupération, mise en forme et exploitation des données de localisation et de déplacement.
Communication inter-calculateurs
Transmission des données et états vers les autres calculateurs du ROV en MODBUS maître/esclave.
Gestion des états et erreurs
Détection et traitement des défauts liés aux capteurs ou aux communications.
Intégration et validation sur cible
Comportement du logiciel confronté aux contraintes réelles de la carte électronique et des équipements embarqués.