Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construire un char LEGO autonome low-cost avec NVIDIA Jetson Nano & Isaac SDK

Construire un char LEGO autonome low-cost avec NVIDIA Jetson Nano & Isaac SDK

Dans ce guide, je démontre comment transformer un kit LEGO EV3 standard en robot à chenilles fully autonome, propulsé par un NVIDIA Jetson Nano, le Isaac SDK, un LiDAR YDLIDAR-X4, et une caméra vision Pixy2. Le résultat est une alternative budget-friendly aux designs de référence Carter et Kaya, tout en conservant toutes les capacités avancées de perception et planification de la stack robotique NVIDIA.

Allez à la Partie 8 ou Partie 10 pour une démo complète de navigation autonome.

Le projet comprend les composants suivants :

Pourquoi Isaac SDK et pas ROS ?

Pourquoi pièces LEGO ?

Choisir cette voie introduit quelques défis :

Partie 1 : Démarrage

1. Installer Isaac SDK

2. Reconnaissance vocale (optionnel)

3. Image EV3dev

Flashez la dernière image ev3dev-stretch sur une carte microSD ou microSDHC. microSDXC n'est pas supporté par la brique EV3.

4. Cross-compilateur ARM pour ev3dev

sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi 

Comme Ubuntu 18.04 (hôte et Jetson) utilise GLIBC 2.28 tandis qu'ev3dev utilise GLIBC 2.24, nous devons compiler avec liaison dynamique sauf pour la librairie math. Ajustez le fichier jetson-ev3/toolchain/CROSSTOOL en conséquence, ou utilisez une image Docker Debian 9.

5. Espace de travail Jetson + EV3

git clone https://github.com/andrei-ace/jetson-ev3.git 

Éditez jetson-ev3/WORKSPACE pour pointer vers votre chemin Isaac SDK :

local_repository( name = 'com_nvidia_isaac', path = '/home/andrei/ml/isaac' ) 

Et mettez à jour le chemin du toolchain dans jetson-ev3/toolchain/CROSSTOOL :

# edit with your path to the toolchain linker_flag: '-L/home/andrei/ml/jetson-ev3/toolchain' 

6. Connecter Jetson Nano avec EV3

Utilisez un câble USB-A vers mini-USB. SSH dans l'EV3 depuis le Jetson :

ssh user@ev3dev.local 

Mot de passe par défaut : maker.

7. Tutoriel Ping-Pong

Le Codelet « Ping-Pong » d'Isaac démontre la communication inter-processus. Adaptez-le pour envoyer messages entre le Jetson et la brique EV3.

Construisez le serveur EV3 :

bazel build --config=ev3dev //apps/ev3/ping_pong:ev3_pong 

Déployez le client sur le Jetson :

<YOUR-ISAAC-INSTALL>/engine/build/deploy.sh --remote_user <YOUR-USER-JETSON> -p //apps/ev3/ping_pong:ping_pong-pkg -d jetpack43 -h <YOUR-JETSON-IP> 

Exécutez les deux binaires. L'EV3 devrait dire les messages « Ping ».

Partie 2 : Contrôler un moteur depuis Isaac

En utilisant les mêmes principes, contrôlez les moteurs EV3 via un driver Isaac personnalisé qui imite la base Segway RMP. Le Ev3ControlServer tourne sur l'EV3 :

bazel build --config=ev3dev //packages/ev3/ev3dev:ev3_control_server ev3_control_server ev3dev.local:9000 

Intégrez le serveur avec le Sight joystick virtuel pour téléopération manuelle.

Partie 3 : Construire le robot

Le châssis suit de près le design officiel EV3 Track3r de LEGO. Le boîtier Jetson Nano provient du repo GitHub.

Partie 4 : Architecture apps Isaac

Une app Isaac comprend trois couches :

Voici un exemple concis d'app navigation contrôlée par la voix. (Voir le dossier complet voice_control pour tous fichiers JSON.)

{ 'name': 'voice_control', 'modules': [ '//apps/ev3/voice_control:voice_control_goal_generator', '@com_nvidia_isaac//packages/navigation', '@com_nvidia_isaac//packages/planner' ], 'config_files': [ 'apps/ev3/voice_control/model/isaac_vcd_model.metadata.json' ], 'config': { ... }, 'graph': { 'nodes': [...], 'edges': [...] } } 

Les sous-graphes sont réutilisables ; la stack navigation est partagée across all robot variants.

Partie 5 : Exécuter apps Isaac sur EV3

Le driver EV3 implémente la même API que la base Segway RMP, permettant la réutilisation directe d'apps Isaac existantes comme le contrôleur joystick, GMapping distribué, et stack navigation complète.

Partie 6 : Calibration odométrie

Une odométrie précise est critique pour l'opération autonome. Le Ev3ControlServer expose deux appels RPC :

En utilisant le rayon de roue et la largeur de voie, calculez la vitesse linéaire comme :

if left == right: v = left elif left == -right: v = 0 else: v = (left + right) / 2 

La vitesse angulaire dérive du différentiel des vitesses de roue divisé par la largeur de voie.

Partie 7 : Navigation autonome contrôlée par la voix

Le sous-graphe détection vocale écoute un micro et émet un voice_command_id quand un des mots-clés entraînés est détecté. J'ai entraîné un RNN sur trois mots — « jetson », « left », et « right » — en utilisant le Isaac Speech Toolkit. Le modèle résultant peut être téléchargé depuis le dépôt du projet.

Quand une commande est reçue, le GoalGenerator publie un but au planificateur global. Par exemple, pour faire pivoter le robot 90° à gauche :

auto proto = rx_detected_command().getProto(); int id = proto.getCommandId(); auto goal_proto = tx_goal().initProto(); goal_proto.setStopRobot(true); goal_proto.setTolerance(0.1); goal_proto.setGoalFrame('robot'); ToProto(Pose2d::Rotation(90), goal_proto.initGoal()); tx_goal().publish(); 

En pratique, le système fonctionne fiablement en mode 10 W. À 5 W, la latence d'inférence (≈30 ms) est trop élevée pour un fonctionnement fluide.

Partie 8 : Mapping avec GMapping distribué

Le mapping est effectué sur un PC hôte tandis que l'EV3 fournit les données LiDAR. Déployez l'app GMapping distribué sur le Jetson :

./engine/build/deploy.sh --remote_user andrei -p //apps/ev3:gmapping_distributed_ev3-pkg -d jetpack43 -h 192.168.0.218 

Sur l'hôte, lancez :

bazel run apps/ev3:gmapping_distributed_host 

Assurez-vous que le fichier JSON hôte pointe vers la bonne IP Jetson :

'tcp_subscriber': { 'isaac.alice.TcpSubscriber': { 'port': 5000, 'host': '192.168.0.218' } } 

Après quelques minutes d'exploration, une grille d'occupation haute résolution est générée.

Conclusion

Avec un investissement modéré en pièces LEGO Technic, un YDLIDAR, et une caméra Pixy2, vous pouvez construire un robot à chenilles fully autonome qui exploite toute la puissance du SDK Isaac de NVIDIA. Le système supporte commandes vocales, mapping LiDAR, et perception GPU-accélérée, en faisant une plateforme polyvalente pour recherche, éducation, et projets hobby.

Tout le code, fichiers de configuration, et modèles entraînés sont disponibles dans le dépôt du projet.

Processus de fabrication

  1. Voiture autonome Donkey Car : IA TensorFlow MobileNetV2 pour collecte de déchets
  2. Char Raspberry Pi : Ajout capteurs distance et cap pour navigation précise
  3. JQR Quadrupède Autonome : Robot à pattes DIY pour navigation et secours autonomes
  4. Préparer un futur autonome : Comment les gestionnaires de flottes peuvent prendre de l'avance
  5. Modèle Premium 1:24 de Char de Combat Type 99 Usiné CNC
  6. Robot autonome maîtrisant l'ouverture de portes — Une percée pour les robots de service
  7. Les robots assembleurs autonomes de la NASA construisent des habitats lunaires
  8. Réservoirs de réserve : 목적, types et avantages
  9. Directives de sécurité critiques pour le soudage de réservoirs de carburant