Software-Plattformen für Roboter

In den letzten Jahren sind viele Open-Source-Middlewares für Roboterplattformen entstanden. Die folgende Übersicht stammt zum Teil aus der Arbeit von Einhorn et al. [1] und wurde um weitere Frameworks ergänzt.

Eine der ersten Middlewares war das Linux-basierte Carnegie Mellon Robot Navigation Toolkit (CARMEN). Es unterstützt verschiedene Software-Module, die in separaten Prozessen laufen und über TCP/IP miteinander kommunizieren. Geschrieben ist es in C und daneben wird auch Java unterstüzt.

MOOSMOOS (ursprünglich Mission Oriented Operating Suite) ist eine Plattform-übergreifende Middleware, bei der jeder Client mit einem zentralen Server verbunden ist und nur mit diesem kommuniziert. Daten werden in einem sehr einfachen Format an den Server gesendet. Clients können sowohl die aktuellen Daten, als auch die Änderungen seit dem letzten Zugriff erfragen. Entwickelt wird in C++, aber es gibt auch einen Java-Client im Alpha-Stadium.

Player stellt einfache und saubere Schnittstellen zu den Sensoren und Aktoren eines Roboters bereit. Für jedes dieser Geräte läuft ein Treiber im Server-Prozess, auf den Clients über TCP/IP zugreifen können. Aufgrund dieser Abstraktion können die Clients in verschiedenen Programmiersprachen geschrieben werden, unterstützt werden u.a. C++, Java und Python.

Die bisher genannten Middlewares werden im Gegensatz zu den folgenden nicht aktiv weiterentwickelt.

ROSDie meistgenutzte Software-Plattform für Roboter ist das Robot Operating System (ROS), das viele Ideen von Player übernommen hat. Es gibt ebenfalls einen Server-Prozess, der aber nur zum Speichern von Parametern und zur Namensauflösung benutzt wird. Die Clients (Nodes) selbst kommunizieren über TCP/IP direkt miteinander und laufen in separaten Prozessen. Im Falle von Nodelets können auch mehrere Clients im selben Prozess laufen, die sich in diesem Fall einen Threadpool teilen. Innerhalb dieses Prozesses kommunizieren die Clients mittels gemeinsam genutztem Speicher. Aufgrund der Kommunikation über TCP/IP kann in unterschiedlichen Sprachen programmiert werden, unterstützt werden C++, Python und Java. In einem frühen Entwicklungsstadium ist ROS 2, das auf eine vorhandene Kommunikations-Middleware aufsetzen soll.

YARPYet Another Robot Platform (YARP) zielt darauf ab, den Aufwand für die Entwicklung der Middleware zu minimieren. Die Kommunikation erfolgt wahlweise über TCP, UDP oder gemeinsam genutzten Speicher, wobei die konkrete Art für jede Verbindung einzeln festgelegt werden kann. Die Clients müssen sich nicht darum kümmern, da sie ein Transport-neutrales Kommunikationsmodell benutzen. YARP ist in C++ geschrieben und kann von vielen Sprachen aus genutzt werden, getestet wurden u.a. Java, Python und C#.

MIRAEine vergleichsweise neue Entwicklung ist die Middleware for Robotic Applications (MIRA), die auf eine effiziente Kommunikation und geringe Latenz abzielt [1]. Es gibt keine zentrale Instanz, sondern gleichberechtigte MIRA-Instanzen, die auch auf unterschiedlichen Maschinen laufen können. Clients (Units) können zur Laufzeit zwischen verschiedenen Instanzen verschoben werden. Die Programmierung erfolgt in C++.

Lego Mindstorms Roboter bzw. deren zentrale Steuereinheit, der NXT Baustein bzw. sein Nachfolger EV3, lassen sich neben den grafischen Standard-Programmierumgebungen NXT-G und EV3 Software auch mit klassischen Sprachen programmieren, wie z.B. C. Eine Verbindung mit ROS ist ebenfalls möglich, die zentrale Instanz muss dabei allerdings auf einem externen Computer laufen.

An der HTW Dresden entsteht seit 2009 ein eigenes Roboter-Framework mit dem Entwicklungsnamen GeneralRobot, das noch nicht frei zugänglich ist. Es basiert auf Java und läuft in einem einzigen Prozess. Die Kommunikation verläuft dabei sehr ähnlich wie bei anderen Plattformen (z.B. ROS oder MIRA) über ein Publisher/Subscriber-Prinzip. Zusätzlich kommuniziert GeneralRobot über TCP/IP mit einer hardwarenahen C++-Anwendung, die Daten von den Sensoren bereitstellt und Befehle an die Aktoren übermittelt. Eine ROS-Anbindung, durch die deutlich mehr Roboter-Hardware unterstützt werden kann, ist für dieses Jahr geplant.

Geschrieben von Peter Poschmann

[1] Einhorn, E., Stricker, R., Gross, H.-M., Langner, T., Martin, Ch. MIRA – Middleware for Robotic Applications. Proc. IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS 2012), Vilamoura, Portugal, pp. 2591-2598, IEEE 2012.