Steuern Sie Ihren Roboter mit micro-ROS und NVIDIA Jetson Kit

Autoren: Ruchi Patel , Meet Gandhi | Datum: 21. März 2023 | Kategorie: Automobilindustrie

Einführung

ROS ist ein Open-Source-Framework, das die Entwicklung komplexer Roboteranwendungen vereinfacht. Es nutzt eine verteilte Architektur, die erleichtert Kommunikation zwischen verschiedenen Softwarekomponenten innerhalb eines Robotersystems ermöglicht.

 

 

ROS2 ist ein beliebtes Framework für die Entwicklung von Robotersystemen, das eine flexible Middleware namens Data Distribution Service (DDS) verwendet und eine verbesserte Unterstützung für Echtzeit- und verteilte Systeme bietet. Der Einsatz auf kleinen Geräten mit geringem Stromverbrauch kann jedoch aufgrund des Ressourcenbedarfs eine Herausforderung darstellen.

Micro-ROS bietet eine leichtgewichtige und effiziente Implementierung von ROS2, die auf Mikrocontrollern ausgeführt werden kann, wodurch es sich für ressourcenbeschränkte Umgebungen wie eingebettete Systeme und mobile Roboter eignet. Es ist eine Erweiterung von ROS2, die es Entwicklern ermöglicht, das Framework auf Mikrocontrollern einzusetzen.

In diesem Artikel werden wir einige Beispiele für die Steuerung von Roboterrädern mit micro-ROS auf MCU und dem Robot Operating System untersuchen.

Für die Installation von ROS2.

Für weitere Informationen über micro-ROS klicken Sie hier.

Sehen Sie sich das unten stehende Video an zum Verständnis des Prozess

Schnittstelle MCU mit ROS2-basiertem Gerät

MCUs und ROS2 kommunizieren im Wesentlichen über den Micro-ROS Agent, einen ROS 2-Knoten, der den Micro XRCE-DDS Agent umhüllt. Der Knoten fungiert als Server zwischen dem DDS-Netzwerk und den Micro-ROS-Knoten innerhalb der MCU. Er empfängt und sendet Nachrichten von Micro-ROS-Knoten und behält die Micro-ROS-Knoten im Auge, indem er sie dem ROS 2-Netzwerk zugänglich macht. Der Knoten interagiert mit dem DDS Global Data Space im Namen der Micro-ROS-Knoten.

Klicken Sie hier, um die Liste der von Micro-ROS unterstützten Hardware zu überprüfen.

Hier verwenden wir ein ESP32-Entwicklungsboard, um die Roboterbewegung über Motortreiber zu steuern, und ein NVIDIA Jetson-Kit, um Geschwindigkeitsbefehle zu senden. Mit dem ESP32 steuern wir effektiv die Drehzahl, die Richtung und die Ticks des Rads. Die Richtung wird durch den Ausgang des Hallsensors bestimmt, der mit unserem Nabenmotor verbunden ist.

In der Zwischenzeit wird die Drehzahl des Rades auf der Grundlage der Befehlsgeschwindigkeit berechnet, die von unserem Differenzialknoten, der auf dem Jetson-Board läuft, übertragen wird. Schließlich wird die Anzahl der Ticks verfolgt, indem die Anzahl der Interrupts gezählt wird, die vom Hall-Sensor empfangen werden, der auch zur Bestimmung der Richtung des Rads verwendet wird.

Die allgemeinen Schritte zur Integration der Micro ROS-Portierung auf ESP32 mit Nvidia Jetson Orin sind unten aufgeführt. Die spezifischen Details können je nach Ihrer Plattform und der von Ihnen entwickelten Anwendung variieren.

Einrichten Ihrer Entwicklungsumgebung

 
  1. Installieren Sie die erforderliche Software sowohl für die ESP32- als auch für die Jetson Orin-Entwicklung. Dies beinhaltet das ESP-IDF Entwicklungsframework und das Jetpack SDK für Orin.
  2. Erstellen von Micro ROS Agent auf dem Jetson Orin: Erstellen Sie Micro ROS auf dem Jetson Orin unter Verwendung der entsprechenden Anweisungen für Ihre Plattform.
  3. Erstellen und flashen Sie die Micro ROS Client-Anwendung auf dem ESP32: Die Micro ROS Client-Anwendung ist der Code, der auf dem ESP32 läuft und mit dem Jetson Orin kommuniziert. Erstellen und flashen Sie die Micro ROS-Client-Anwendung auf dem ESP32.
  4. Testen Sie die Micro ROS-Integration: Überprüfen Sie, ob die Micro ROS-Integration wie erwartet funktioniert, indem Sie eine Testanwendung auf dem Jetson Orin und dem ESP32 ausführen.
  5. Entwickeln Sie Ihre eigenen Micro ROS-Anwendungen: Sobald die Micro ROS-Integration funktioniert, können Sie mit der Entwicklung eigener Anwendungen beginnen, die Micro ROS zur Kommunikation zwischen dem ESP32 und dem Jetson Orin nutzen.

 

Hier haben wir Arduino IDE verwendet, um eine ESP32-Anwendung zu erstellen. Es gibt mehrere Schritte zu bauen, kann man Esp32-Board installieren auf Arduino IDE, und Bibliothek bauen für Mikro-ROS in Arduino beziehen.

Software-Architektur

 

Die Software enthält hauptsächlich die folgenden zwei Hauptblöcke

 

1.NVDIA AGX Orin Robotics Computer

  • Der Jetson AGX Orin ist mit hochmoderner Hardware ausgestattet, die eine NVIDIA Ampere-Architektur-GPU (Graphics Processing Unit), Arm Cortex-A78AE-CPUs (Central Processing Units) und Deep-Learning- und Vision-Beschleuniger der nächsten Generation umfasst. Die Hochgeschwindigkeitsschnittstellen und die optimale Speicherbandbreite sowie die Unterstützung für multimodale Sensoren ermöglichen die nahtlose Ausführung mehrerer gleichzeitiger KI-Anwendungen (Künstliche Intelligenz). Dies macht den Jetson AGX Orin zu einer idealen Plattform für die Ausführung fortschrittlicher KI-Workloads in einer Vielzahl von Anwendungen.

2. ESP32-Mikrocontroller

  • Eine funktionsreiche MCU (Micro Controller Unit) mit integrierter Wi-Fi- und Bluetooth-Konnektivität, die sich für eine breite Palette von Anwendungen eignet.
    • Der NVIDIA AGX Orin ist für rechenintensive Aufgaben wie Bild-/Videoverarbeitung und die Ausführung von KI/ML-Pipelines konzipiert.
    • In der Zwischenzeit ist der ESP32 für Low-Level-Hardware-Steuerungsaufgaben gedacht, wie z.B. die Steuerung von Motortreibern für Radbewegungen oder die Steuerung von Hardware-LEDs.

Kommunikation von ESP32, Robotermotoren und ROS2

- Die Kommunikation zwischen dem NVIDIA AGX Orin und ESP32 findet über die UART-Peripherie statt, indem Standard-ROS-Nachrichten (Robotics Operating System) ausgetauscht werden.
- Der Nabenmotor ist mit Motortreibern verbunden, und der Hall-Sensor, die Richtung und die Freigabe-Pins des Treibers sind mit ESP32-GPIOs verbunden.
- Der NVIDIA AGX Orin verfügt über einen auf dem General-Purpose Operating System (GPOS) basierenden Computer, auf dem Ubuntu mit verfügbarer ROS-Middleware läuft.
- Der Micro-ROS Agent, der auf dem AGX Orin läuft, ist ein ROS 2-Knoten, der den Micro XRCE-DDS Agent umschließt. Er empfängt und sendet Nachrichten von Micro-ROS-Knoten und wickelt die ROS-Kommunikation zwischen AGX Orin und ESP32 ab.
- Wir haben auch eine benutzerdefinierte Nachricht für ROS2- und ESP-Anwendungen erstellt, die vom Differenzialknoten veröffentlicht wird. Der ESP32 abonniert diese Nachricht und steuert die Raddrehzahl entsprechend den empfangenen Daten.

Roboter-Bewegung

- Wie bereits erwähnt, steuert der ESP32 die Roboterräder über die zugehörigen Motortreiber. Der Befehl zum Antrieb des Roboters wird vom differentiellen ROS-Knoten erzeugt, der im Orin-Gerät läuft und nach dem Prinzip eines Differential Wheeled Robot arbeitet.
- Der differentielle Knoten empfängt eine Geschwindigkeitsnachricht von einer der Treiberanwendungen (z.B. Tele-op twist keyboard, Navigation stack, etc.). Die Befehlsgeschwindigkeitsnachricht drückt die Geschwindigkeit im freien Raum aus, aufgeteilt in ihre linearen und winkligen Teile. Der Differenzialknoten leitet die linke und rechte Radgeschwindigkeit ab und sendet sie als ROS-Themen an den ESP32.
- Nach Erhalt der Geschwindigkeitsnachrichten wendet der ESP32 den erforderlichen PWM-Wert (Pulsweitenmodulation) auf die zugehörigen Motorantriebe an, die die Räder antreiben.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass die erfolgreiche Portierung von Micro-ROS auf MCUs und seine Integration mit dem ROS-basierten Linux-Betriebssystem einen bedeutenden Fortschritt im Bereich der Robotikentwicklung darstellt. Diese Entwicklung ermöglicht die Schaffung hochgradig modularer und skalierbarer Systeme, die komplexe Aufgaben durch Verteilung der Arbeitslast auf mehrere Knoten ausführen können. Durch die Nutzung der leistungsstarken Tools und Bibliotheken des ROS-Ökosystems können Entwickler robuste Robotersysteme entwickeln, die auf Geräten mit geringem Stromverbrauch und eingeschränkten Ressourcen laufen.
Die Kombination von Mikrocontrollern mit geringem Stromverbrauch und Hochleistungs-Computing-Plattformen bietet eine flexible und leistungsstarke Plattform für die Entwicklung komplexer Robotersysteme. Mit der Integration von Micro-ROS ist das Potenzial für weitere Innovationen auf dem Gebiet der Robotik grenzenlos.

Autoren

Ruchi Patel
Eingebetteter Ingenieur, EInfochips (Ein Pfeil-Unternehmen)
Treffen mit Gandhi
Leitender Ingenieur, EInfochips (Ein Pfeil-Unternehmen)

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unserem Experten für Batteriemanagementlösungen

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unseren Experten für Industrie- und Energielösungen

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unseren Experten für die Automobilbranche

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unseren Experten

Bitte füllen Sie die nachstehenden Angaben aus und erhalten Sie einen Musterbericht

Referenz-Designs

Unser Werk

Erneuern Sie

Verwandeln.

Skala

Partnerschaften

Unternehmen

Produkte & IPs