
Chez Rtone nous avons développé des composants logiciels robotiques utilisables dans des environnements contraints comme des microcontrôleurs. Même si nos solutions sont portables sur différents micro-OS, nous utilisons le plus souvent Zephyr.
Zephyr est un micro-système d’exploitation temps réel (RTOS) conçu pour les dispositifs embarqués, offrant une base modulaire pour développer des applications IoT et industrielles.
Soutenu par la Linux Foundation, il est open source et compatible avec un large éventail d’architectures matérielles, incluant ARM et x86.
Zephyr prend en charge des fonctionnalités variées comme des systèmes de fichiers embarqués (FAT, LittleFS), des protocoles réseau (IPv4/IPv6, MQTT, syslog, SNTP), et des périphériques matériels (UART, SPI, GPIO, CAN), tout en offrant un environnement d’intégration complet (west).
Nous avons fait un choix stratégique en intégrant Zephyr OS dans un projet de développement de robots mobiles industriels de logistique. Ce choix technologique nous permet de répondre aux exigences croissantes de flexibilité et de robustesse dans un environnement industriel où les contraintes de performance, de sécurité, et d’évolutivité sont primordiales.
Dans cet article nous allons explorer en détail comment Zephyr transforme le développement de nos robots industriels, depuis la gestion du motion control jusqu’aux mises à jour logicielles à distance.
Découvrez pourquoi Zephyr est au cœur de notre stratégie technologique.
Pourquoi Zephyr ?
Zephyr est un système d’exploitation temps réel (RTOS) open source, connu pour sa modularité, sa légèreté, et son large support matériel.
En choisissant Zephyr, nous avons pu tirer parti de plusieurs avantages :
- Flexibilité matérielle: La prise en charge native d’une grande variété de microcontrôleurs et de périphériques nous permet de remplacer ou d’ajouter des composants facilement.
- Abstraction hardware: Sa couche d’abstraction hardware permet l’écriture de code haut niveau générique à toutes architectures.
- Fiabilité: Grâce à ses fonctionnalités de gestion des threads et des priorités, nous assurons un fonctionnement stable même dans des environnements critiques.
- Simulation: Zephyr sur architecture native (x86) permet de développer et tester des robots en simulation, même sans avoir encore les robots physiques.
- Communauté active: L’écosystème Zephyr bénéficie d’un soutien important de la part de grandes entreprises, garantissant sa pérennité.
Gestion du Motion Control des robots mobiles autonomes avec Zephyr

Une des fonctionnalités clés de nos robots est leur capacité à se déplacer de manière autonome et précise. Cela inclut :
- Le calcul des trajectoires en temps réel.
- La gestion optimisée des moteurs.
- L’asservissement sur les trajectoires générées.
Pour cela, nous avons développé un module de motion control générique en C++, tirant parti des capacités de Zephyr. Ce module interagit avec les capteurs embarqués (encodeurs, LIDAR, etc.) et les actionneurs via des protocoles comme CANopen.
Intégration avancée de CANopen

CANopen, en tant que protocole robuste et largement utilisé dans l’industrie, joue un rôle central dans notre architecture. En nous appuyant sur la stack CANopen intégrée à Zephyr, nous avons :
- Implémenté des commandes avancées pour le contrôle moteur (vitesse, position, couple).
- Assuré une communication fiable entre les différents modules du robot.
- Permis une supervision en temps réel des états des actionneurs.
Communication réseau étendue
Nos robots nécessitent des capacités de communication avancées pour s’intégrer dans des environnements industriels connectés. Grâce à Zephyr, nous prenons en charge :
- Protocoles standardisés tels que SNTP (synchronisation d’horloge) et MQTT (messagerie pour l’IoT notamment utilisé dans la norme robotique VDA5050).
- Protocoles sur mesure, adaptés aux besoins spécifiques de nos clients.
Cette flexibilité nous permet d’assurer une connectivité robuste et adaptable, même dans des environnements réseau complexes.
Zephyr simplifie et accélère l’intégration des stacks réseau grâce à son architecture modulaire et sa large compatibilité. Que ce soit pour Ethernet, Wi-Fi, Bluetooth ou des protocoles spécifiques comme CANopen, tout est déjà intégré ou facilement ajoutable. Cela permet de se concentrer sur le développement sans perdre de temps sur la configuration ou l’adaptation des outils réseau.
Mises à jour OTA sécurisées pour les robots mobiles grâce
La maintenance logicielle à distance est cruciale pour minimiser les interruptions et garantir des mises à jour régulières. Nous avons intégré mcuboot, un bootloader connu et reconnu pour MCU et mcumgr, une solution de gestion Over-The-Air (OTA) pour la phase de développement :
- Effectuer des mises à jour logicielles sur les microcontrôleurs de manière distante.
- Réduire les coûts de développement en éliminant le besoin d’interventions physiques rapidement dans la vie du projet.
Cette fonctionnalité garantit une réactivité et une simplicité de déploiement dès les premières phases de développement.
Nous sommes également en mesure de mettre en place une OTA de production et dimensionner sur mesure pour l’ensemble du système et d’une flotte de robots.
Vous pouvez d’ailleurs découvrir notre article sur les mises à jour OTA.
Avant de déployer nos robots mobiles autonomes dans des environnements réels, nous utilisons l’architecture native de Zephyr pour simuler leur comportement. Cela nous permet de tester notre firmware à la façon d’une application Linux. Cette approche présente plusieurs avantages :
- Test en amont : Détection précoce des bugs et validation des algorithmes dans des conditions proches de la réalité.
- Connectivité: Simuler les connectivités comme l’Ethernet ou le CAN, qui peuvent être virtualisées, c’est aussi éliminer les risques applicatifs et protocolaires au plus tôt.
- Optimisation continue : Ajustement des paramètres de contrôle sans nécessiter de matériel physique.
- Gain de temps : Réduction des cycles de développement grâce à des itérations rapides.
La simulation native nous permet de garantir une fiabilité maximale lors du passage en production.
Conception modulaire et générique en C++
Un des défis majeurs dans le développement de robots industriels est de maintenir un code source réutilisable et adaptable. Pour cela :
- Nous avons conçu des interfaces génériques pour séparer les couches applicatives des couches matérielles.
- Cette approche permet d’intégrer facilement de nouveaux capteurs ou actionneurs sans modifier le cœur du logiciel.
- Les fonctionnalités spécifiques aux drivers sont encapsulées, limitant leur impact sur le reste du système.
Nous pouvons également porter nos développements sur un micro-OS alternatif à Zephyr en adaptant la liaison avec les couches basses de l’OS.
Un exemple d’interface générique
Prenons l’exemple d’un driver moteur. Au lieu de coder directement les commandes dans les modules applicatifs, nous passons par une interface générique comme l’exemple volontairement simplifié class="NormalTextRun SCXW237416986 BCX0">
suivant :
class MotorInterface {
public:
virtual void set_speed(float speed) = 0;
virtual float get_position() const = 0;
virtual ~MotorInterface() {}
};
Cela nous permet de développer des drivers spécifiques pour chaque type de moteur sans affecter le reste de l’application qui utilisera toujours la même interface.
Réactivité face aux changements
Le secteur industriel évolue rapidement, que ce soit au niveau des composants, des stratégies, ou des architectures. L’utilisation de Zephyr nous donne un avantage décisif grâce à :
- La modularité du code : Les composants logiciels peuvent être remplacés ou mis à jour indépendamment.
- L’adaptabilité matérielle : La prise en charge native de nombreux SoC (System on Chip) simplifie le passage à de nouvelles plateformes.
- La facilité de test : Les outils intégrés dans Zephyr (simulateurs, analyseurs de performances, etc.) accélèrent les cycles de développement.
Pour conclure
L’intégration de Zephyr OS dans les robots mobiles industriels a été un véritable levier d’innovation.
Grâce à sa flexibilité et sa robustesse, nous avons pu concevoir une architecture modulaire, performante, et évolutive. Notre choix de développer en C++ avec des interfaces génériques renforce cette capacité à répondre rapidement aux nouveaux défis, qu’ils soient techniques ou stratégiques. Zephyr ne se contente pas d’être un RTOS parmi d’autres : il s’agit d’un écosystème complet qui nous permet de garder une longueur d’avance.
Vous souhaitez en savoir plus ? N’hésitez pas à nous contacter. Nous serions ravis de partager notre expertise et d’explorer de nouvelles opportunités de collaboration.
