Teil 2: Revolution der Robotik Ansteuern von Trinamic-Motorcontrollern von ADI mit dem ROS1-Treiber

Von Jamila Aria, Krizelle Paulene Apostol, Maggie Maralit* 10 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. Dies ist der zweite Teil zum Artikel „ROS-Integration von Motor-Controllern“

Bild 8: Tatsächliche Geschwindigkeit des Motors in m/s, visualisiert mit RQT.(Bild:  Analog Devices)
Bild 8: Tatsächliche Geschwindigkeit des Motors in m/s, visualisiert mit RQT.
(Bild: Analog Devices)

Im Artikel „ROS-Integration von Motor-Controllern“ wurde ein neuer Treiber für Trinamic Motor Controller (TMC) beschrieben und außerdem auf Möglichkeiten eingegangen, diese Einheiten in ein ROS-Ökosystem (Robot Operating System) einzubinden. Der TMC-ROS1-Treiber ermöglicht eine nahtlose Kommunikation zwischen der Treiberschicht des TMC und der Anwendungsschicht innerhalb des ROS-Frameworks. Diese gilt für die gesamte Palette der vom Treiber unterstützten TMC-Boards. In dem folgenden Beitrag nun werden die Fähigkeiten des TMC-ROS1-Treibers eingehend beschrieben, nämlich die Motorsteuerung, das Auslesen von Informationen, die Befehlsausführung, das Auslesen von Parametern und die Unterstützung für unterschiedliche Konfigurationen. Zusätzlich wird ein Überblick darüber gegeben, wie sich die Motorcontroller unter Ausnutzung der vom ROS-Framework gebotenen Vorteile in eingebettete Systeme und Applikationen integrieren lassen.

Der ROS1-Treiber für Trinamic-Motorcontroller von ADI

ROS ist eine Robotik-Middleware, die aus verschiedenen Softwarebibliotheken und leistungsfähigen Entwicklertools, von Treibern bis zu modernsten Algorithmen, besteht und sich als Basis für die Entwicklung von Robotiksystemen und -applikationen eignet. Die Trinamic-Motorcontroller von ADI ermöglichen eine ganz neue Klasse intelligenter Aktoren, und als ROS insbesondere auf dem Robotiksektor immer mehr an Verbreitung gewann, wurde zusätzliche Modulunterstützung (zum Beispiel ROS-Treiber) entwickelt, um die Nutzbarkeit in der Fertigungstechnik und der industriellen Automatisierungstechnik zu verbessern. Der TMC-ROS1-Treiber von Analog Devices ähnelt in seiner Funktionalität dem Trinamic Motor Control Language Integrated Development Environment (TMCL-IDE) des Unternehmens, allerdings mit dem deutlichen Unterschied, dass er den Knoten eines ROS-fähigen Systems die Möglichkeit zur Nutzung von TMCs bietet, ohne dass zusätzliche Treiber installiert werden müssen. Darüber hinaus enthält adi_tmcl einen eigenen TMCL-Protokollinterpreter und kann daher benutzerseitig geforderte Befehle interpretieren, solange diese dem TMCL-Standard entsprechen. Die finale Schicht tmcl_ros_node schließlich richtet eine direkte Schnittstelle zum ROS-System ein und bietet Features wie etwa Publisher, Subscriber und Services. Jede dieser Funktionalitäten kann mit verschiedenen Parametern, auf die in den folgenden Abschnitten detailliert eingegangen wird, individuell angepasst werden.

Features

Unterstützung für unterschiedliche TMC-Boards

Der TMC-ROS-Treiber bzw. adi_tmcl wurde für die Unterstützung aller kommerziell verfügbaren TMCs konzipiert, die dem TMCL-Protokoll entsprechen. Bei Redaktionsschluss dieses Artikels unterstützt der Treiber nur das CAN-Interface (nämlich SocketCAN), aber man arbeitet daran, schon in naher Zukunft auch andere Schnittstellen zu unterstützen. Bei den besagten TMCs handelt es sich um die ADI Trinamic PANdrive Smart Motors und Module, die in Lösungen für Schrittmotoren und BLDC-Motoren (bürstenlose Gleichstrommotoren) unterteilt werden können. Mithilfe von ROS-Parametern kann adi_tmcl nahtlos verschiedene TMC-Boards unterstützen, was die Konfiguration von tmcl_ros_node gestattet, ohne dass das gesamte Paket neu aufgebaut werden muss.

Im Ordner adi_tmcl/config ist jedes ADI Trinamic Motor Controller Module (TMCM) mit zwei Files verknüpft. Diese Dateien sind in einer für Menschen lesbaren Datenserialisierungs-Sprache (YAML) abgefasst, enthalten ROS-Parameter und sollten während der Ausführung geladen werden:

  • adi_tmcl/config/autogenerated/TMCM-XXXX.yaml

Diese automatisch generierte YAML-Datei enthält modulspezifische Parameter und sollte nicht verändert werden, da dies Einfluss auf das Verhalten des Knotens haben könnte.

  • adi_tmcl/config/TMCM-XXXX_Ext.yaml

In dieser YAML-Datei sind alle Parameter enthalten, die anwenderseitig modifiziert werden können, um mit dem Board zu kommunizieren (z. B. der Schnittstellenname), die Ansteuerung von Motoren zu ermöglichen oder ROS-Topicnamen zu ändern.

Um beispielsweise das TMCM-1636 (Bild 3) zu nutzen, muss nur der in Bild 1 gezeigte Code gestartet werden.

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

Bild 1: Start des TMCM-1636.(Bild:  Analog Devices)
Bild 1: Start des TMCM-1636.
(Bild: Analog Devices)

Mit dem Start von adi_tmcl/launch/tmcm_1636.launch werden die YAML-Files für das TMCM-1636 geladen.

Bild 2: Codeabschnitt zum Ausführen des TMC-ROS-Treibers mit dem TMCM-1636.(Bild:  Analog Devices)
Bild 2: Codeabschnitt zum Ausführen des TMC-ROS-Treibers mit dem TMCM-1636.
(Bild: Analog Devices)

Bild 3: Darstellung der Hardwareverbindungen zum TMCM-1636 (oben) und Ansicht der realen Konfiguration (unten).(Bild:  Analog Devices)
Bild 3: Darstellung der Hardwareverbindungen zum TMCM-1636 (oben) und Ansicht der realen Konfiguration (unten).
(Bild: Analog Devices)

Für die Verwendung des TMCM-1260 (Bild 6) ist der folgende Code zu starten:

Bild 4: Befehl zum Starten des TMC-ROS-Treibers mit dem TMCM-1260.(Bild:  Analog Devices)
Bild 4: Befehl zum Starten des TMC-ROS-Treibers mit dem TMCM-1260.
(Bild: Analog Devices)

Mit dem Start von adi_tmcl/launch/tmcm_1260.launch werden wiederum die für das TMCM-1260 vorgesehenen YAML-Dateien geladen.

Bild 5: Codeabschnitt zum Ausführen des TMC-ROS-Treibers mit dem TMCM-1260.(Bild:  Analog Devices)
Bild 5: Codeabschnitt zum Ausführen des TMC-ROS-Treibers mit dem TMCM-1260.
(Bild: Analog Devices)

Bild 6: Darstellung der Hardwareverbindungen zum TMCM-1260 (oben) und Ansicht der realen Konfiguration (unten).(Bild:  Analog Devices)
Bild 6: Darstellung der Hardwareverbindungen zum TMCM-1260 (oben) und Ansicht der realen Konfiguration (unten).
(Bild: Analog Devices)

Der Startordner enthält sämtliche unterstützten TMC-Boards und kann hier eingesehen werden.

Einmalige Konfiguration von TMC-Modulen mithilfe der TMCL-IDE

Bevor das TMC-Board per ROS verwendet wird, muss es mit den jeweils verwendeten Motoren kalibriert werden. Die gesamte Kalibrierung sollte mit dem TMCL-IDE erfolgen und im EEPROM hinterlegt werden, da die Motoren sonst unter Umständen nicht korrekt angesteuert werden.

  • BLDC-Motormodule (z. B. das TMCM-1636)

Ein Tutorial zeigt, wie die Motorkalibrierung mit dem Wizard Pool Feature des TMCL-IDE vonstattengeht.

Ein weiteres Tutorial verdeutlicht die PI-Abstimmung (Proportional-Integral) mit der PI-Tuning-Funktion des TMCL-IDE.

Schrittmotor-Module (z. B. das TMCM-1260)

Ein Tutorial zeigt, wie die Kalibrierung mit dem Wizard Pool Feature des TMCL-IDE abläuft.

Ist die Kalibrierung und Abstimmung erledigt, müssen sämtliche Parameter unbedingt im EEPROM des Boards abgespeichert werden. Dies kann entweder mit dem Store-Parameter oder dem STAP-Befehl erfolgen, oder durch Hochladen eines TMCL-Programms und Aktivieren des Autostart-Modus. Einige Boards unterstützen nicht alle dieser drei Optionen.

Nachdem TMC und Motor konfiguriert und abgestimmt sind, wurde das Design des TMC-ROS-Treibers vereinfacht, um die Ansteuerung der Motoren auf Basis der Einmal-Konfiguration mit der TMCL-IDE zu ermöglichen.

Bewegen und Anhalten des Motors

Der TMC-ROS-Treiber bewegt bzw. stoppt den Motor durch Publizieren in einem der folgenden Topics:

  • /cmd_vel (geometry_msgs/Twist) – Vorgabe der Motorgeschwindigkeit
  • /cmd_abspos (std_msgs/Int32) – Vorgabe der absoluten Position des Motors
  • /cmd_relpos (std_msgs/Int32) – Vorgabe der relativen Position des Motors
  • /cmd_trq (std_msgs/Int32) – Vorgabe des Motordrehmoments

Hinweis: In einer TMC-Konfiguration mit mehreren Achsen existieren separate Topics für die einzelnen Motoren.

Anwender können ihre ROS-Systeme zum Publizieren in diesen spezifischen Topics verbinden, um die Bewegung der Motoren zu steuern. Die Wahl der Topics hängt dabei von der Applikation, den TMC-Einstellungen und den verwendeten Motortypen ab. Bei einem fahrbaren Roboter etwa kann anwenderseitig das Einstellen der Geschwindigkeit gewählt werden, während bei einem Greifer das Vorgeben der Position sinnvoller wäre.

Verdeutlichen lässt sich dies am nachfolgend dargestellten Skript adi_tmcl/scripts/fake_cmd_vel.sh, welches das Drehen eines Motors im bzw. gegen den Uhrzeigersinn koordiniert und die Geschwindigkeit schrittweise erhöht. Zur Ausführung dienen die in Bild 7 dargestellten Befehle.

Bild 7: Befehle zum Testen der Geschwindigkeitseinstellung des TMC-ROS-Treibers.(Bild:  Analog Devices)
Bild 7: Befehle zum Testen der Geschwindigkeitseinstellung des TMC-ROS-Treibers.
(Bild: Analog Devices)

Hinweise:

  • Die Terminals 2 und 3 sollten nebeneinander betrachtet werden.
  • Der Befehl in Terminal 1 kann mit Strg-C in Terminal 2 kopiert werden.
  • Der Befehl in Terminal 3 stoppt von selbst.

Zur Überprüfung, ob sich der Motor tatsächlich bewegt hat, zeigt Bild 8 die aus dem TMC ausgelesene Ist-Geschwindigkeit (/tmc_info_0).

Bild 8: Tatsächliche Geschwindigkeit des Motors in m/s, visualisiert mit RQT.(Bild:  Analog Devices)
Bild 8: Tatsächliche Geschwindigkeit des Motors in m/s, visualisiert mit RQT.
(Bild: Analog Devices)

Auslesen von Informationen aus TMC und Motor

Das System kann durch Abonnieren des folgenden Topics Informationen aus dem TMC-ROS-Treiber auslesen:

  • /tmc_info (adi_tmcl/TmcInfo) – Liefert Informationen über Spannung, TMC-Status, Ist-Geschwindigkeit, Ist-Position und Ist-Drehmoment

Hinweis: In einer TMC-Konfiguration mit mehreren Achsen existieren für die einzelnen Motoren separate Topics.

Anwender können ihre ROS-Systeme zum Abonnieren dieser spezifischen Topics verbinden, um die Vorgänge zu überwachen und anhand der Parameterwerte ggf. einzugreifen. In bestimmten Anwendungsszenarien etwa kann das System angehalten werden, wenn Fehler im TMC-Status erkannt werden, oder es kann eine vorprogrammierte Aktion gestartet werden, sobald der Motor eine bestimmte Position erreicht hat.

Zum Beispiel handelt es sich bei adi_tmcl/scripts/fake_cmd_pos.sh um ein einfaches Skript, das den Motor zunächst im und anschließend gegen den Uhrzeigersinn mit zunehmender Positions-Magnitude dreht. Führen Sie dazu die Befehle in Bild 9 aus.

Bild 9: Befehle zum Testen der Positionssteuerung des TMC-ROS-Treibers. (Bild:  Analog Devices)
Bild 9: Befehle zum Testen der Positionssteuerung des TMC-ROS-Treibers.
(Bild: Analog Devices)

Um zu überprüfen, ob sich der Motor bewegt hat, zeigt Bild 10 die aus dem TMC ausgelesene Ist-Position (/tmc_info_0).

Bild 10: Ist-Position des Motors in Grad, visualisiert mit RQT.(Bild:  Analog Devices)
Bild 10: Ist-Position des Motors in Grad, visualisiert mit RQT.
(Bild: Analog Devices)

Ausführung anwenderspezifischer TMC-Befehle

Mit dem folgenden Feature hat das System die Möglichkeit, auf TMC-Parameter zuzugreifen und diese anzupassen:

  • tmcl_custom_cmd (adi_tmcl/TmcCustomCmd) – Auslesen und Einstellen von Werten aus den Achsenparametern (APs) und den globalen Parametern (GPs) des TMC

Anwender können diesen Service in ihre ROS-Systeme integrieren, um bestimmten Anforderungen der jeweiligen Anwendung gerecht zu werden. Mit dieser Funktionalität lässt sich das TMC-Board direkt aus dem ROS-Treiber heraus konfigurieren. Zum Beispiel kann ein Anwender den Befehl Set Axis Parameter (SAP) für den maximalen Strom verwenden, um den höchstzulässigen Strom festzulegen. Allerdings sollten Anwender die Parameter, die sie mithilfe dieses Features modifizieren, genau kennen, da falsche Werte einen Ausfall des TMC-ROS-Treibers zur Folge haben können. Bild 11 zeigt ein Beispiel für den Aufruf dieses Service mit der Funktion Get Axis Parameter (GAP) für DrvStatusFlags mit dem Befehlstyp 208.

Bild 11: Aktivierung des Service tmcl_custom_cmd, visualisiert mit RQT.(Bild:  Analog Devices)
Bild 11: Aktivierung des Service tmcl_custom_cmd, visualisiert mit RQT.
(Bild: Analog Devices)

Zugriff auf die Werte sämtlicher Achsenparameter

Das System kann mit dem folgenden Befehl auf die Werte der TMC-Achsenparameter zugreifen:

  • tmcl_gap (adi_tmcl/TmcGapGgpAll) – Auslesen von Werten aus den Achsenparametern (APs) aller TMCs für bestimmte Motoren bzw. Achsen

Anwender können ihre ROS-Systeme mit dieser Funktionalität integrieren, um die individuellen Anforderungen ihrer Applikation zu erfüllen. Unter anderem kann dieser Service die aktuellen Einstellungen und den Status des TMC-Boards erfassen, darunter APs wie die Encoderschritte, die PI-Abstimmung, den Kommutierungsmodus usw.

In Bild 12 ist ein Abschnitt einer entsprechenden Ausgabe wiedergegeben. Anwender können sich durch Auswerten dieses Ergebnisses vergewissern, ob die Einmal-Konfiguration korrekt im EEPROM des Boards abgespeichert wurde.

In Bild 13 ist ein Teil der Ausgabe zu sehen, die nach Ausführung dieses Service eingeholt wurde. Anhand dieses Resultats können Anwender in Erfahrung bringen, ob die Einmal-Konfiguration korrekt im EEPROM des Boards abgespeichert wurde.

Bild 12: Ausführung des Service tmcl_gap_all per RQT.(Bild:  Analog Devices)
Bild 12: Ausführung des Service tmcl_gap_all per RQT.
(Bild: Analog Devices)

Zugriff auf alle Global-Parameter-Werte

Mit dem folgenden Befehl kann das System auf die Global-Parameter-Werte des TMC zugreifen:

  • tmcl_ggp (adi_tmcl/TmcGapGgpAll) – Auslesen sämtlicher Global-Parameter-Werte (GP) des TMC

Diese Funktion erlaubt das Auslesen der aktuellen Konfigurationen und Statuswerte des TMC-Boards. Zu den GPs, die auf diese Weise zugänglich sind, gehören die CAN-Bitrate, die serielle Baudrate, der Autostart-Modus usw.

Bild 13: Ausführung des Service tmcl_ggp_all per RQT.(Bild:  Analog Devices)
Bild 13: Ausführung des Service tmcl_ggp_all per RQT.
(Bild: Analog Devices)

Konfigurationen mit mehreren TMC-Boards

Für größere Systeme wie zum Beispiel Roboterarme, die mehrere TMC-Boards erfordern, ermöglicht der TMC-ROS-Treiber mehrere Konfigurationen.

a. Mehrere TMC-Boards in mehreren CAN-Kanälen

Wenn ein Anwender über ein CAN-USB für jedes TMC-Board verfügt, werden, wie in Bild 14 zu sehen, Namespaces hinzugefügt, um die Instanz eines jeden Knotens zu unterscheiden. In diesem besonderen Anwendungsfall muss der Parameter comm_interface_name entsprechend aktualisiert werden, um die korrekte Kommunikation mit dem Board zu gewährleisten.

Bild 14: Exemplarische Konfiguration mit mehreren TMC-Boards in mehreren CAN-Kanälen.(Bild:  Analog Devices)
Bild 14: Exemplarische Konfiguration mit mehreren TMC-Boards in mehreren CAN-Kanälen.
(Bild: Analog Devices)

Bild 15: Codeabschnitt für den Betrieb mehrerer TMC-ROS-Treiber mit mehreren CAN-Kanälen.(Bild:  Analog Devices)
Bild 15: Codeabschnitt für den Betrieb mehrerer TMC-ROS-Treiber mit mehreren CAN-Kanälen.
(Bild: Analog Devices)

Bei dem Code in Bild 15 handelt es sich um eine exemplarische Startdatei zum Einrichten dieses Anwendungsfalls. In diesem Beispiel lässt sich Motor A durch Publizieren an /tmcm1/cmd_abspos ansteuern, Motor B dagegen durch Publizieren an /tmcm2/cmd_abspos und Motor C durch Publizieren an /tmcm3/cmd_abspos.

b. Mehrere TMC-Boards in ein und demselben CAN-Kanal

Wie Bild 16 zeigt, wird der Betrieb mehrerer TMC-Boards in ein und demselben CAN-Kanal ebenfalls vom TMC-ROS-Treiber unterstützt. Ebenso wie bei dem beschriebenen Support für mehrere TMC-Boards, wurden auch hier Namespaces eingeführt, um zwischen den verschiedenen Knoteninstanzen unterscheiden zu können. Während comm_interface_name für alle Boards beibehalten wird, werden comm_tx_id und comm_rx_id angepasst, damit die ordnungsgemäße Kommunikation mit jedem Board sichergestellt ist.

Bild 17 zeigt eine typische Startdatei zum Einrichten dieses Anwendungsfalls. In diesem Beispiel kann Motor A durch Publizieren an /tmcm1/cmd_abspos angesteuert werden, Motor B durch Publizieren an /tmcm2/cmd_abspos und Motor C durch Publizieren an /tmcm3/cmd_abspos.

Einfache Integration in ROS-Systeme und -Applikationen

Mithilfe des von ROS gebotenen Nachrichtenübertragungssystems ist in größeren Systemen ein problemloser Austausch von Knoten (z. B. Treibern oder Algorithmen) möglich. Mit der Entwicklung des TMC-ROS-Treibers wird dieser Vorteil auch auf TMC-Boards ausgedehnt, sodass eine nahtlose Integration in ROS-Systeme und -Anwendungen möglich ist.

Bild 16: Exemplarische Konfiguration mit mehreren TMC-Boards in ein und demselben CAN-Kanal.(Bild:  Analog Devices)
Bild 16: Exemplarische Konfiguration mit mehreren TMC-Boards in ein und demselben CAN-Kanal.
(Bild: Analog Devices)

Bild 17: Codeabschnitt für den Betrieb mehrerer TMC-ROS-Treiber in ein und demselben CAN-Kanal.(Bild:  Analog Devices)
Bild 17: Codeabschnitt für den Betrieb mehrerer TMC-ROS-Treiber in ein und demselben CAN-Kanal.
(Bild: Analog Devices)

  • Integration in AGVs und AMRs

Bild 18 verdeutlicht, wie ein navigation_node einen mobilen Roboter durch Senden von /cmd_vel im Format geometry_msg/Twist steuern kann. Der motor_controller gibt daraufhin eine Rückmeldung über /wheel_velocity im Format geometry_msg/ Twist, woraufhin der navigation_node eine entsprechende Neukalibrierung vornehmen kann.

Bild 18: Vereinfachte Architektur eines AGV/AMR.(Bild:  Analog Devices)
Bild 18: Vereinfachte Architektur eines AGV/AMR.
(Bild: Analog Devices)

Aufgrund der Kenntnis, wo der navigation_node publiziert und abonniert, kann der motor_controller vom tmcl_ros_node problemlos geändert werden (Bild 19). Ähnlich der Funktion zum Auslesen von Informationen aus dem TMC, publiziert adi_tmcl Echtzeitinformationen über die Raddrehzahl, und der wheel_velocity_node transformiert die Raddrehzahl-Information von adi_tmcl/TmcInfo in geometry_msg/Twist. Da sich die neue Architektur und das in sie integrierte TMC-Board an die korrekten Datenformate halten, dürfte der mobile Roboter unverändert funktionieren.

Bild 19: Vereinfachte Architektur eines AGV/AMR mit einem TMC-ROS-Treiber.(Bild:  Analog Devices)
Bild 19: Vereinfachte Architektur eines AGV/AMR mit einem TMC-ROS-Treiber.
(Bild: Analog Devices)

  • Integration in Roboterarme

Für die Integration von TMC-Boards in eine Pick-and-Place-Anwendung mit einem Roboterarm illustriert Bild 20, wie mehrere Motoren zum Bewegen des Arms erforderlich sind. Ähnlich wie im zuvor beschriebenen Anwendungsfall, muss anwenderseitig dafür gesorgt werden, dass pick_and_place_node das erwartete Datenformat abonniert bzw. publiziert.

Bild 20: Roboterarm mit generischen Motorcontrollern (oben) und Roboterarm mit TMC-Boards (unten).(Bild:  Analog Devices)
Bild 20: Roboterarm mit generischen Motorcontrollern (oben) und Roboterarm mit TMC-Boards (unten).
(Bild: Analog Devices)

Eine schrittweise Anleitung, wie TMC-Boards in ROS-Systeme integriert werden und wie sich die soeben beschriebenen Features nutzen lassen, finden Sie hier.

Zusammenfassung

Der TMC-ROS-Treiber von ADI ermöglicht in einem per ROS gemanagten System die reibungslose Kommunikation zwischen der zugrundeliegenden TMC-Treiberschicht und der Anwendungsschicht. Dieser Vorteil kommt bei einer ganzen Palette unterstützter TMC-Boards zum Tragen.

Der vorliegende Artikel befasste sich eingehend mit den Features des ROS1-Treibers für ADI Trinamic Motorcontroller (TMCs). Dazu gehören

  • Die Bewegungssteuerung des Motors
  • Das Auslesen von Motor- und Controller-Informationen
  • Das Ausführen von TMC-Befehlen
  • Das Auslesen achsenbezogener und globaler Parameter
  • Die Unterstützung von Konfigurationen mit mehreren TMC-Boards

Ermöglicht werden alle diese Fähigkeiten durch das von ROS gebotene Nachrichtenübertragungs-System, das die mühelose Integration dieser Motorcontroller in ROS-basierte Systeme und Anwendungen gestattet. (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:50048143)