Contrôlez votre robot à l'aide de micro-ROS et du kit NVIDIA Jetson

Auteurs : Ruchi Patel , Meet Gandhi | Date : 21 March 2023 | Catégorie : Automobile

Introduction

ROS est un logiciel libre qui simplifie le développement d'applications robotiques complexes. Il utilise utilise une architecture distribuée qui facilite la communication entre les différents composants logiciels au sein du système d'un robot.

 

 

ROS2 est un cadre populaire pour le développement de systèmes robotiques, qui utilise un intergiciel flexible appelé Data Distribution Service (DDS), offrant un meilleur support pour les systèmes distribués et en temps réel. Cependant, il peut être difficile de l'utiliser sur des appareils de petite taille et de faible puissance en raison de ses exigences en matière de ressources.

Micro-ROS offre une implémentation légère et efficace de ROS2, qui peut fonctionner sur des microcontrôleurs, ce qui le rend adapté aux environnements à ressources limitées tels que les systèmes embarqués et les robots mobiles. Il s'agit d'une extension de ROS2 qui permet aux développeurs de déployer le cadre sur des microcontrôleurs.

Dans cet article, nous allons étudier quelques exemples de contrôle des roues d'un robot à l'aide du micro-ROS sur MCU et du système d'exploitation du robot.

Pour l'installation de ROS2.

Pour plus d'informations sur le micro-ROS, cliquez ici.

Regardez la vidéo ci-dessous pour comprendre le processus

Interface entre le MCU et le dispositif basé sur ROS2

Les MCU et ROS2 communiquent essentiellement par l'intermédiaire de l'agent Micro-ROS, qui est un nœud ROS 2 qui enveloppe l'agent Micro XRCE-DDS. Le nœud agit comme un serveur entre le réseau DDS et les nœuds Micro-ROS à l'intérieur du MCU. Il reçoit et envoie des messages des nœuds Micro-ROS et garde la trace des nœuds Micro-ROS, en les exposant au réseau ROS 2. Le nœud interagit avec l'espace de données global DDS au nom des nœuds Micro-ROS.

Cliquez ici pour consulter la liste du matériel supporté par Micro-ROS.

Ici, nous utilisons une carte de développement ESP32 pour contrôler les mouvements du robot par le biais de pilotes de moteur et un kit NVIDIA Jetson pour envoyer la vitesse de commande. Avec l'ESP32, nous contrôlons effectivement le nombre de tours par minute, la direction et les ticks de la roue. La direction est déterminée par la sortie du capteur à effet Hall, qui est connecté à notre moteur de moyeu.

Pendant ce temps, la vitesse de rotation de la roue est calculée sur la base de la vitesse de commande transmise par notre nœud différentiel, qui s'exécute sur la carte Jetson. Enfin, le nombre de tics est suivi en comptant le nombre d'interruptions reçues du capteur à effet Hall, qui est également utilisé pour déterminer la direction de la roue.

Les étapes générales pour intégrer le portage Micro ROS sur ESP32 avec Nvidia Jetson Orin sont mentionnées ci-dessous. Les détails spécifiques peuvent varier en fonction de votre plateforme et de l'application que vous développez.

Mise en place de l'environnement de développement

 
  1. Installez les logiciels nécessaires au développement de l'ESP32 et de la Jetson Orin. Cela comprend le cadre de développement ESP-IDF et le SDK Jetpack pour Orin.
  2. Construire l'agent Micro ROS sur le Jetson Orin : Construire Micro ROS sur le Jetson Orin en utilisant les instructions appropriées pour votre plateforme.
  3. Construire et flasher l'application client Micro ROS sur l'ESP32 : L'application client Micro ROS est le code qui s'exécute sur l'ESP32 et communique avec le Jetson Orin. Construire et flasher l'application client Micro ROS sur l'ESP32.
  4. Testez l'intégration de Micro ROS : Vérifiez que l'intégration Micro ROS fonctionne comme prévu en exécutant une application de test sur le Jetson Orin et l'ESP32.
  5. Développez vos propres applications Micro ROS : Une fois que l'intégration de Micro ROS fonctionne, vous pouvez commencer à développer vos propres applications qui utilisent Micro ROS pour communiquer entre l'ESP32 et le Jetson Orin.

 

Ici, nous avons utilisé l'IDE Arduino pour construire l'application ESP32. Il y a plusieurs étapes pour construire, on peut se référer à l'installation de la carte Esp32 sur Arduino IDE, et à la construction de la bibliothèque pour le micro-ROS dans Arduino.

Architecture des logiciels

 

Le logiciel contient principalement les deux blocs suivants

 

1.NVDIA AGX Orin Robotics Computer

  • Le Jetson AGX Orin est équipé d'un matériel de pointe qui comprend un GPU (Graphics Processing Unit) de l'architecture NVIDIA Ampere, des CPU (Central Processing Units) Arm Cortex-A78AE et des accélérateurs de vision et d'apprentissage en profondeur de nouvelle génération. Ses interfaces à haut débit et sa bande passante mémoire optimale, ainsi que la prise en charge des capteurs multimodaux, permettent d'exécuter de manière transparente plusieurs applications d'IA (Intelligence Artificielle) simultanées. Cela fait de la Jetson AGX Orin une plateforme idéale pour exécuter des charges de travail d'IA avancées dans une variété d'applications.

2. microcontrôleur ESP32

  • Un MCU (Micro Controller Unit) riche en fonctionnalités avec connectivité Wi-Fi et Bluetooth intégrée qui convient à une large gamme d'applications.
    • L'AGX Orin de NVIDIA est conçu pour effectuer des tâches de calcul élevées telles que le traitement d'images et de vidéos et l'exécution de pipelines AI/ML.
    • L'ESP32 est quant à lui destiné à des tâches de contrôle matériel de bas niveau, telles que la commande de pilotes de moteur pour les mouvements de roue ou le contrôle de DEL matérielles.

Communication entre ESP32, moteurs de robots et ROS2

- La communication entre l'AGX Orin de NVIDIA et l'ESP32 s'effectue via le périphérique UART en échangeant des messages ROS (Robotics Operating System) standard.
- Le moteur du moyeu est connecté à des pilotes de moteur, et le capteur hall, la direction et les broches d'activation du pilote sont connectés à des GPIO de l'ESP32.
- L'AGX Orin de NVIDIA est équipé d'un ordinateur basé sur un système d'exploitation polyvalent (GPOS) fonctionnant sous Ubuntu avec un middleware ROS disponible.
- L'agent Micro-ROS fonctionnant sur l'AGX Orin est un nœud ROS 2 qui enveloppe l'agent Micro XRCE-DDS. Il reçoit et envoie des messages des nœuds Micro-ROS et gère la communication ROS entre AGX Orin et ESP32.
- Nous avons également créé un message personnalisé pour ROS2 et les applications ESP, qui est publié à partir du nœud différentiel. L'ESP32 s'abonne à ce message et gère le régime de la roue en fonction des données reçues.

Mouvement des robots

- Comme mentionné précédemment, l'ESP32 gère le pilotage des roues du robot à l'aide de leurs pilotes de moteur associés. La commande pour conduire le robot est générée par le nœud ROS différentiel fonctionnant à l'intérieur du dispositif Orin, qui fonctionne sur le principe d'un robot à roues différentiel.
- Le nœud différentiel reçoit un message de vitesse de commande de n'importe quelle application pilote (par exemple, Tele-op twist keyboard, Navigation stack, etc.) Le message de vitesse de commande exprime la vitesse dans l'espace libre, décomposée en ses parties linéaire et angulaire. Le nœud différentiel déduit la vitesse des roues gauche et droite et les envoie en tant que sujets ROS à l'ESP32.
- En recevant les messages de vitesse, l'ESP32 applique la valeur PWM (Pulse-Width Modulation) requise aux moteurs associés, qui entraînent les roues.

Conclusion

En résumé, le portage réussi de Micro-ROS sur des MCU et son intégration avec un système d'exploitation Linux basé sur ROS représentent une avancée significative dans le domaine du développement de la robotique. Ce développement permet de créer des systèmes hautement modulaires et évolutifs capables d'exécuter des tâches complexes en répartissant la charge de travail sur plusieurs nœuds. En exploitant les puissants outils et bibliothèques fournis par l'écosystème ROS, les développeurs peuvent construire des systèmes robotiques robustes qui peuvent fonctionner sur des dispositifs à faible consommation d'énergie et à ressources limitées.
La combinaison de microcontrôleurs à faible consommation d'énergie et de plateformes informatiques à haute performance fournit une plateforme flexible et puissante pour la construction de systèmes robotiques complexes. Avec l'intégration du Micro-ROS, le potentiel d'innovation dans le domaine de la robotique est illimité.

Auteurs

Ruchi Patel
Ingénieur embarqué, EInfochips (An arrow company)
Rencontre avec Gandhi
Ingénieur principal, EInfochips (An arrow company)

Entamez une conversation dès aujourd'hui

Planifiez une consultation de 30 minutes avec notre expert en solutions de gestion des batteries.

Entamez une conversation dès aujourd'hui

Planifier une consultation de 30 minutes avec nos experts en solutions industrielles et énergétiques

Entamez une conversation dès aujourd'hui

Planifier une consultation de 30 minutes avec nos experts de l'industrie automobile

Entamez une conversation dès aujourd'hui

Planifier une consultation de 30 minutes avec nos experts

Veuillez remplir les champs ci-dessous pour obtenir un exemple de rapport

Modèles de référence

Notre travail

Innover

Transformer.

Échelle

Partenariats

Partenariats pour les appareils
Partenariats numériques
Partenariats de qualité
Partenariats en silicium

Entreprise

Produits et PI