Roboterbewegungen zu simulieren muss nicht eine Frage des Geldbeutels sein.

Bild: Pixabay

Robot Operating System (ROS) Roboter kostengünstig simulieren

10.09.2017

Die Open-Source-Simulierungssoftware ROS eignet sich zur Simulation SPS-basierter Robotersteuerungen - und ist für jeden Anwender erschwinglich.

Roboter werden zunehmend auch von SPS-basierten Motion-Control-Systemen gesteuert. Da die Möglichkeiten der 3D-Visualisierung von Bewegungen in speicherprogrammierbaren Steuerungen aber begrenzt sind, kann hierfür das Robot Operating System (ROS) eingesetzt werden.

Ziel eines Projektes an der Hochschule Mannheim ist es, Bewegungen von Standard-Industrierobotern wie dem Manutec R2 in der Entwicklungsumgebung Codesys für SPS zu programmieren, mit einer Soft-SPS in der Simulation anzusteuern und mit der Open Source ROS zu visualisieren. Dazu ist eine TCP/IP-Datenkopplung zwischen der Soft-SPS und einer virtuellen Maschine, auf der ROS unter Linux Ubuntu läuft, zu entwickeln. Auf der Seite von ROS sollen vorhandene Roboter modelliert werden, sodass es möglich ist, diese dreidimensional zu visualisieren und ihre Bewegungen im Arbeitsraum zu evaluieren.

SPS-Anwender von Werkzeugmaschinen und Robotersystemen, die über kein 3D-Simulationssystem verfügen, können so ihre Robotersteuerung in der Simulation testen und Inbetriebnahmezeiten verringern.

Roboterprogrammierung per Plug-and-Play

Die Programmierung von SPSen wurde immer weiter vereinfacht und zielgerichtet auf Motion-Control-Anwendungen hin zugeschnitten. Getrieben von der Organisation im Bereich industrieller Steuerungstechnik, der PLC­open, wurden Funktionsbausteine nicht nur zur Steuerung einzelner oder gekoppelter Achsen standardisiert, sondern auch für Achsgruppen, wie sie bei Werkzeugmaschinen und Roboterarmen vorkommen. Soll ein sechsachsiger Roboterarm ein Werkzeug zu einem vorgegebenen Zielpunkt bewegen, lässt sich das in einem SPS-basierten Motion-Control-System mit Hilfe einiger weniger, nach PLCopen genormter Funktionsbausteine programmieren.

Zur Definition der Achsgruppe ist für jede Achse ein Funktionsbaustein (MC_Power) einzusetzen, der den Umrichter der Achse ansteuert. Zusätzlich ist die Achsgruppe durch einen Funktionsbaustein (MC_EnableGroup) zu definieren. Für die meisten Motion-Control-Systeme von Standardmaschinen, wie einen Vertikal-Knickarmroboter, gibt es vorgefertigte kinematische Gleichungen. Diese muss der Programmierer bezüglich Armlängen und zulässiger Winkelbereiche der Achsen programmieren.

Zum Ausführen der Bewegung muss er dann nur noch den Funktionsbaustein MC_MoveDirectAbsolute mit der gewünschten Ziel-Position beschalten und aktivieren. Anschließend führt der Roboter eine Bewegung aus, die sein Werkzeug zum vorgegebenen Zielpunkt führt. Somit können Roboter quasi per Plug-and-Play programmiert und umkonfiguriert werden.

Um die Bewegungen nun vor der Inbetriebnahme simulieren zu können, bieten SPS-basierte Motion-Control-Systeme wie Codesys sogenannte virtuelle Achsen an, deren Bewegungen simuliert werden. Die Achsstellungen können somit zyklisch zur Visualisierung an ROS übertragen werden.

Open-Robotik Sources

Existierende Simulationssysteme für Robotersteuerungen sind herstellerspezifisch und für Kleinanwender recht teuer. ROS ist eine offene Programmiersoftware unter Linux, für die eine Vielzahl an Funktionen von den Nutzern veröffentlicht sind. Da industrielle Roboteranwendungen häufig in Hochsprachen wie C / C++ / C# programmiert werden, können Programmsegmente im Sourcecode nach Simulation und Test übernommen und eingebunden werden.

Mittlerweile gibt es auch Roboterhersteller, die für ihr Programmiersystem eine ROS-Schnittstelle bereitstellen. Ein Vorteil von ROS ist, dass es Möglichkeiten zur Visualisierung gibt, die inzwischen auch von der Automobilindustrie aufgegriffen werden. Zudem können Sensorinformationen gespeichert und wieder eingespielt sowie Algorithmen mit beziehungsweise ohne Hardware getestet werden.

Zum Modellieren des in diesem Projekt eingesetzten Manutec R2 ist dessen Kinematik in einer xml-Datei gemäß dem Unified Robot Description Format (URDF) beschrieben. Der Aufruf dieses Makros realisiert die Vorwärtstransformation, wodurch die aktuelle Lage der Achsen und des Tool Center Points (TCP) berechnet wird. Zum Visualisieren wird das Paket RViz eingesetzt. Das Standard-Visualisierungstool für Sensordaten ist in ROS enthalten. Somit kann der Roboter aus verschiedenen Ansichten betrachtet und die Lage des TCP und der Gelenkkoordinatensysteme im Arbeitsraum evaluiert werden.

Zwei Welten miteinander verbinden

Um einen modularen Systemaufbau zu erreichen, wurden zwei virtuelle Maschinen eingerichtet: Eine unter Windows 10, auf der die Soft-SPS mit Codesys V3.5 läuft, und eine unter Ubuntu-Linux mit ROS. Für den Datenaustausch zwischen beiden Systemen eignet sich das TCP/IP-Protokoll, weil es unabhängig von Anwendungsprogrammen und Betriebssystemen ist. Bei der Kommunikation zwischen ROS und Codesys über TCP/IP arbeitet Codesys in der Rolle des Servers und ROS in der Rolle des Clients. Die Datenschnittstelle, die beide Systeme verbindet, wird in Codesys in der Programmiersprache „Structured Text“ (ST) durch Befehle der Socket-Library realisiert, wodurch Daten im TCP-Standardprotokoll gesendet und empfangen werden können. Die Befehle sind im Funktionsbaustein TCP-Server projektneutral zur Verfügung gestellt. Dieser wird auch in diesem Projekt eingesetzt.

In ROS wird die TCP/IP-Verbindung, ebenfalls basierend auf einer Socket-Library, anhand des Nodes „tcp_client“ programmiert, der einen Request an den Server sendet. Dieser antwortet mit den aktuellen Winkelstellungen „qAct“ der Roboterachsen. Die Achsstellungen werden als Position in einer Message vom Typ „sensor_msgs/jointstate“ gespeichert, im Topic „joint_states“ veröffentlicht und im Node „robot_state_publisher“ zur Berechnung der Vorwärtstransformation verwendet. Die berechnete Lage des Werkzeugkoordinatensystems wird im Topic „tf“ (tool frame) gespeichert und in der Visualisierung dargestellt.

Robotersimulation in ROS

Das beschriebene Projekt zeigt, dass die sehr praxisnahe Welt der SPS-Programmierung, die traditionell eher für Nicht-Informatiker gedacht ist, und die in der Informatik weit verbreitete ROS-Welt sehr gut integriert werden können. In beiden Systemen profitiert der Programmierer von einem umfangreichen Baustein- und Funktionsvorrat, der in Anwendungsprogramme hineinkopiert werden kann. Auch die unterschiedlichen Betriebssysteme stellen beim Verwenden virtueller Maschinen kein wirkliches Hindernis dar - ausreichend Rechenleistung vorausgesetzt.

Grundsätzlich kann die Simulation des Roboters auch in ROS erfolgen. Dies wäre beim Einsatz realer statt virtueller Roboterachsen auch notwendig, weil dann keine Simulation im Motion-Control-System vorgesehen ist. Das Simulationspaket Gazebo bietet in ROS vielfältige Möglichkeiten, Roboter mit Sensorik in ihrem Arbeitsraum zu simulieren, einschließlich der Interaktion mit Objekten.

Bildergalerie

  • Die Steuerung und Simulation des Industrieroboters erfolgt in der Soft-SPS von Codesys, die Visualisierung mit dem Robot Operating System (ROS).

    Bild: Hochschule Mannheim

  • Für den Datenaustausch zwischen den virtuellen Maschinen mit Codesys und ROS eignet sich TCP/IP.

    Bild: Hochschule Mannheim

Firmen zu diesem Artikel
Verwandte Artikel