Revolution der Robotik ROS-Integration von Motor-Controllern

Von Jamila Aria, Krizelle Paulene Apostol, Maggie Maralit* 8 min Lesedauer

Anbieter zum Thema

ROS-Treiber (Robot Operating System) wurden auf Produkten von Analog Devices entwickelt und sind somit leicht in einem ROS-Ökosystem einsetzbar. Der Artikel gibt einen Überblick über die Handhabung und Integration dieser Treiber in diversen Anwendungen.

Bild 1: 
Die autonome mobile Plattform ADAM.(Bild:  Analog Devices)
Bild 1: 
Die autonome mobile Plattform ADAM.
(Bild: Analog Devices)

Bei den besprochenen Produkten liegt der Schwerpunkt auf dem kürzlich vorgestellten ROS-Treiber für Analog Devices (ADI) Trinamic-Motor-Controller. Dabei handelt es sich um Board-Level-Module für Embedded-Bewegungssteuerungen, bei deren Entwicklung die Expertise von ADI mit Trinamic-Bewegungssteuerungen sowie das Know-how des Unternehmens bei analoger Prozesstechnologie und Erfahrungen im Bereich Power Design eingeflossen sind.

Was ist ROS und wie funktioniert es?

ROS ist Robotik-Middleware, die Softwarebibliotheken und leistungsstarke Entwicklungswerkzeuge - von Treibern bis hin zu hochmodernen Algorithmen – enthält. Darauf aufbauend können Robotersysteme oder Anwendungen entwickelt werden. Das Robot Operating System (ROS) eignet sich für mehrere Bereiche (Multi Domain) (zum Beispiel für Consumer, Industrie und Automobil) und läuft auf Plattformen wie Linux, Windows, MacOS und einige eingebettete Plattformen. Des Weiteren steht das Open-Source-Roboter-Betriebssystem in kommerziellen Varianten zur Verfügung. Die Unterstützung für das ROS ist dank der dedizierten Ressourcen der weltweiten Gemeinschaft sehr umfangreich, was Anwendern einen einfachen Weg für ihre Designs und Anwendungen eröffnet.

Bildergalerie
Bildergalerie mit 7 Bildern

Die Entwicklung des ROS begann im Jahr 2007. Das Betriebssystem hat sich inzwischen zu einer der beliebtesten Prototyping-Plattformen für Roboter der Bereiche selbstfahrende Autos, Industrieroboter, Luftfahrzeuge und mehr entwickelt. Es wurde kontinuierlich weiterentwickelt und ist heute in zwei Versionen verfügbar: ROS1 und ROS2.

ROS1- und ROS2-Systeme müssen isoliert sein, wobei die ROS-Bridge die Kommunikation sowie den Austausch von Daten zwischen den beiden Versionen ermöglicht. Weitere Informationen finden Sie auf der Seite ros2/ros1_bridge.

Die wesentliche Unterschiede zwischen ROS1 und ROS2 sind, dass ROS1 das Kommunikationsprotokoll XMLRPC und TCPROS, basiert auf einer Architektur mit einem zentralen ROS Master verwendet. Außerdem nutzt es das cmake-basierte Catkin-System für den Build-Prozess. Demgegenüber setzt ROS2 auf das modernere DDS-Protokoll, ist vollständig dezentralisiert und verwendet colcon/ament als Build-System. Während ROS1 einen globalen Parameter-Server verwendet, ermöglicht ROS2 eine flexiblere per-node Parameterverwaltung. Zudem unterstützt ROS2 mehr Betriebssysteme, darunter Linux, MacOS und Windows, und bietet erweiterte Möglichkeiten für das Starten von Prozessen durch die Verwendung von Python, XML und YAML.

Plattformen und Grundkonzepte

ROS Noetic ist die finale Version von ROS1 und wird bis Mai 2025 unterstützt. Die Variante ROS2 wird seit der Einführung im Juni 2020 kontinuierlich weiterentwickelt. Eine Liste für die von ROS1 und ROS2 unterstützten Plattformen sind hier verlinkt. Einige der grundlegenden Konzepte von ROS (Bild 2) sind Packages, Topics, Services und Messages. Hinweis: Die in den folgenden Abschnitten erörterten ROS-Grundkonzepte sind für ROS1 und ROS2 ähnlich.

Packages, Nodes, Topics und Messages

Das ROS-Package ist das Hauptorganisationssystem für ROS-Programme oder -Nodes. Es ist das kleinste Build/Release-Element in ROS. Bei der Entwicklung eines ROS-Package ist es wichtig, einen eigenen ROS-Arbeitsbereich einzurichten. Dieser Bereich wird Catkin-Workspace genannt, wobei Catkin das Build-System von ROS ist.

ROS-Nodes sind Prozesse, die eine definierte Aufgabe ausführen. Mithilfe von ROS-Client-Bibliotheken wie rospy, einer Python-Client-Bibliothek und roscpp, einer C++-Client-Bibliothek, können sie miteinander kommunizieren. Nodes können Topic Subscriber oder/und Topic Publisher sein. Auch können sie einen Dienst (Service) anbieten oder nutzen.

ROS-Topics sind die Kanäle, über die von einem ROS-Node erzeugte Informationen transportiert (oder veröffentlicht) werden. In ROS sind die Publisher-Nodes die Sender eines Topics, während die Subscriber-Nodes die Empfänger (Listener) eines Topics sind. In Bild 3 ist der Node generic_motor_control der Sender. /cmd_vel ist der Topic, den der velocity_publisher veröffentlicht. Dies bedeutet, dass velocity_publisher Drehzahlinformationen auf der Basis der Motorsteuerung (oder der Befehlsdrehzahl) liefert. Während der Node von ros_application der Lister ist, abonniert velocity_subscriber das Topic /cmd_vel. Dies bedeutet, dass velocity_subscriber auf die von velocity_publisher bereitgestellten Drehzahlinformationen zugreift oder diese verwendet.

Während Topics die Informationskanäle sind, sind Messages die Daten im ROS-kompatiblen Format, die für verschiedene Sensoren anwendbar sind. Im Folgenden sind Beispielsensoren für das ROS-Message-Format aufgelistet:

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung
  • ToF-Kameras (Time of flight): sensor_msgs/Image, sensor_msgs/PointCloud
  • IMU-Sensor (Inertial Measurement Unit): sensor_msgs/Imu
  • Motorsteuerung: geometry_msgs/Twist
  • Messrad-Drehgeber: geometry_msgs/TwistStamped, geometry_msgs/TwistWithCovarianceStamped

ROS-Topics kommunizieren durch das Senden oder das Empfangen von Messages (Topic Publisher und Topic Subscriber) und müssen einen passenden Datentyp haben.

Im Beispiel in Bild 3 sollen die Drehzahlinformationen (Befehlsdrehzahl) des Nodes velocity_publisher vom Node velocity_subscriber abgerufen/verwendet werden. Wenn der Publisher des Topics velocity_publisher den Datentyp geometry_msgs/Twist verwendet, sollte auch der Sub scriber des Topics velocity_subscriber vom selben Datentyp sein.

Services

Das Publish/Subscribe-Kommunikationsmodell ist offen (Open-ended) und nicht auf Reply-Interaktionen anwendbar, die häufig in einem verteilten System erforderlich sind.4 Services ermöglichen Nodes zu kommunizieren, indem sie eine Anfrage (Request) senden und eine Antwort (Response) erhalten. Das Publish/Subscribe-Kommunikationsmodell verwendet .srv-Dateien, in denen Services-Beschreibungen, wie beispielsweise der Message-Typ von Anfrage und Antwort, spezifiziert sind. Service ist ein synchrones Zwei-Wege-Kommunikationsmodell mit einem Client und einem Server. Der Server Node stellt den Service bereit, während der Client Node die Anfrage sendet und auf eine Antwort vom Server Node wartet.

Beispielsweise stellt in Bild 4 server_node den Service SetVelocity.srv zur Verfügung, um die Befehlsdrehzahl vel zu ändern. Der Service nimmt den Drehzahlwert im Float32-Format entgegen und gibt den Status im String-Format zurück; „success“, wenn die angeforderte Drehzahl gesetzt wurde, oder „FAIL“, falls nicht.

Der client_node sendet einen Request, um die Befehlsdrehzahl auf 2,5 m/s einzustellen. Sobald der Server-Node den Request erhält, sendet er die Antwort „Success”.

Lösungen von ADI in das ROS-Ökosystem integrieren

ADI ist offizielles Mitglied des ROS-Industrial-Konsortiums - ein Open-Source-Projekt, welches die fortschrittlichen Fähigkeiten der ROS-Software auf industrierelevante Hardware und Anwendungen erweitert. Als Teil dieser Gemeinschaft hat ADI zunächst spezielle, auf die Industrie ausgerichtete, Module entwickelt.

ADI hat ROS-Treiber für verschiedene dedizierte Module entwickelt. Um die Treiber zu präsentieren und die Fähigkeiten des ROS zu nutzen, realisierte ADI den Analog Devices Autonomous Mobot (ADAM) als hausinterne autonome mobile Plattform (Bild 1).

ADAM: Analog Devices Autonomous Mobot

ADAM läuft auf ROS und wird von verschiedenen ROS-gesteuerten Geräten unterstützt. Die Plattform zeigt, wie die ROS-Treiber von ADI in mobile Roboteranwendungen integriert werden können, insbesondere in autonome Navigationssysteme.

Bild 5 zeigt das High-Level-Hardware-Diagramm von ADAM mit verschiedenen Modulen. Folgende Geräte sind angeschlossen:

  • ADIS16470 oder IMU-Sensoren (Inertial Measurement Unit) mit mehrachsigen Kombinationen aus Präzisions-Gyroskopen, Beschleunigungsaufnehmern, Magnetometern und Drucksensoren, die in erster Linie als Messfeedback zur Optimierung der Positions-/Richtungsbestimmung verwendet werden.
  • ADBMS6948, ein Multizellen-Batteriemonitor, der bis zu 16 in Reihe geschaltete Batteriezellen mit sehr hoher Messgenauigkeit über den gesamten Temperaturbereich misst.
  • EVAL-ADTF3175D-NXZ oder CMOS ToF-Kamera, bietet die höchste Auflösung auf dem Markt und kann durch Tiefenberechnung und -verarbeitung, Lasertreiber, Powermanagement und Entwicklungswerkzeuge mit Referenz-Firmware/Software ergänzt werden.
  • ADI Trinamic Motor-Controller – komplette Board-Level-Lösungen für Embedded-Bewegungssteuerungen. In die Entwicklung der Motor-Controller hat ADI seine Expertise bei Trinamic-Bewegungssteuerungen sowie Kompetenzen in analoger Prozesstechnologie und bei Leistungsdesigns eingebracht.1

Die IMU-Daten (/imu/data_raw) und das Feedback des ADI Trinamic-Motor-Controllers (/tmc_info) werden als Inputs für die Posenabschätzung verwendet und ergeben die Odometrie des Roboters (/odom).

Die Lidar-Daten (/scan) sind der primäre Input für den SLAM-Algorithmus (Simultane Positionsbestimmung und Kartierung) zur Erstellung einer Karte. ToF-Daten (/image_raw) können auch als Input für andere SLAM-Algorithmen verwendet werden. Der move_base-Node wartet dann auf eine vom Benutzer vorgegebene Zielpose und sendet Drehzahlbefehle (/cmd_vel) an den ADI Trinamic-Motor-Controller, um den Roboter zu bewegen.

ROS-Treiber für den ADI Trinamic Motor-Controller

ADI Trinamic Motor-Controller (TMCs) sind komplette Board-Level-Lösungen für Embedded-Bewegungssteuerungen, ausgestattet mit ADI Trinamic Motion-Control-Expertise sowie ADIs Analog-Prozesstechnologie und Powerdesign-Fertigkeiten. Sie unterstützen verschiedene Motortypen wie ein- und mehrachsige Schrittmotoren und bürstenlose Gleichstrommotoren (BLDC). Die TMCs gibt es mit Schnittstellen wie CAN, EtherCAT, RS-232, RS-485 und USB. Die unterstützten Protokolle reichen von Trinamic Motion Control Language (TMCL), CANopen, über EtherCAT (CoE), CANopen oder Modbus.

Die integrierte Entwicklungsumgebung (IDE) TMCL-IDE ist verfügbar, um die Benutzer bei der Entwicklung von Anwendungen zu unterstützen und eine einfache Umprogrammierung der Module zu ermöglichen. Die IDE verwendet entweder TMCL für den Standalone-Betrieb oder das standardisierte CANopen-Protokoll. Benutzer können mit der IDE Parameter einstellen, Daten in Echtzeit visualisieren und Standalone-Anwendungen entwickeln/debuggen.

Da TMCs eine neue Klasse von intelligenten Aktuatoren ermöglichen und das ROS sich immer mehr durchsetzt, insbesondere in der Robotik, wurde zusätzlicher Support wie ROS-Treiber für diese Module entwickelt, um die Anwendungsmöglichkeiten in der Fertigung und Industrieautomatisierung noch weiter auszudehnen. Speziell wird von den ROS-Treibern erwartet, dass sie die Drehzahl, die Position und das Drehmoment des Motos steuern sowie Motor-Controller- und Motor-Informationen überwachen.

Der TMC-ROS-Treiber ähnelt dem, was TMCL-IDE bietet, mit dem Unterschied, dass er es Nodes eines ROS-fähigen Systems ermöglicht, die TMCs zu nutzen, ohne zusätzliche Treiber installieren zu müssen. Zum Zeitpunkt der Veröffentlichung dieses Artikels wird nur die CAN-Schnittstelle (speziell SocketCAN) unterstützt. Andere Schnittstellen befinden sich in der Entwicklung und sollen demnächst unterstützt werden. Die derzeit unterstützten ADI Trinamic Motor Controller Module sind hier aufgelistet.

Software-Architektur und Leistungsmerkmale

Wie aus Bild 7 ersichtlich, benötigt adi_tmcl keine zusätzlichen Treiber, da es die SocketCAN-Treiber verwendet, die bereits standardmäßig von den meisten Linux-Systemen unterstützt werden. Zusätzlich verfügt adi_tmcl über einen eigenen TMCL-Protokollinterpreter, der TMCL-konforme Sende-/Empfangsbefehle des Benutzers versteht. Als letzten Layer bietet der tmcl_ros_node die direkte Schnittstelle zum ROS-System in Form von Publishern, Subscribern und Services. Alle bieten bestimmte Funktionalitäten, die mit einer Gruppe von Parametern konfiguriert werden können. Diese werden in den folgenden Abschnitten näher erläutert.

Der adi_tmcl bietet eine Reihe von Funktionen. Das System bietet umfassende Unterstützung für verschiedene TMC-Boards und ermöglicht eine Einmalkonfiguration von TMC-Modulen mittels TMCL-IDE. Es unterstützt die Steuerung einzelner Motoren mit einfachen Move/Stop-Befehlen und ermöglicht es, spezifische TMC- sowie Motorinformationen abzurufen. Zusätzlich können individuelle TMC-Befehle ausgeführt werden. Es bietet die Möglichkeit, alle Achsen- und globalen Parameterwerte zu erhalten, was eine detaillierte Kontrolle und Anpassung ermöglicht. Die Unterstützung für multiple TMC-Board-Aufbauten sowie die einfache Integration in ROS-Systeme und -Anwendungen macht es besonders vielseitig und benutzerfreundlich für Entwickler.

Zusammenfassung

ADI Trinamic-Motor-Controller ermöglichen eine neue Klasse intelligenter Aktuatoren. Mit der zunehmenden Verbreitung des ROS, insbesondere in der Robotik, wurde zusätzliche Unterstützung für diese Module entwickelt. Dazu gehören ROS-Treiber, mit denen sich die Einsatzmöglichkeiten in der Fertigungs- und Industrieautomatisierung erweitern lassen.

Unter unter www.leistungselektronik.de finden Sie die Fortsetzung zu diesem Artikel. Er trägt den Titel: „Ansteuern von Trinamic-Motorcontrollern von ADI mit dem ROS1-Treiber“. (mr)

* Jamila Aria ist Senior Software Systems Engineer, Krizelle Paulene Apostol ist Software Systems Engineer und Maggie Maralit ist Software Systems Design Engineering Manager bei Analog Devices

(ID:50047226)