Echtzeit Roboter Steuerung aus Hollabrunn
Ein Bericht von Florian Bruckner über eine Diplomarbeit der R-Abteilung in Zusammenarbeit mit Opentech.at
Projektziele Ziel
unseres Projektes war es, die Steuerung eines Industrie – Roboters über
weite Entfernungen und ohne direkten Sichtkontakt zu ermöglichen. Da die
Steuerung des Roboters in Echtzeit geschehen muss, verwendeten wir für
unser Projekt das von FSMLabs entwickelte Echtzeit – Betriebssystem
RTLinux. Das gesamte Projekt sowie alle Source-Codes und Dokumentationen
sind frei im Internet erhältlich und wurden unter GPL veröffentlicht. Zur
Steuerung des Roboterarms sollte ein Standard PC-Joystick verwendet werden,
der über den Gameport mit dem Computer verbunden wird. Die vom Joystick
eingelesenen Daten werden dann in Geschwindigkeiten der einzelnen
Roboterachsen umgerechnet und über eine Netzwerkverbindung (Ethernet- bzw.
COM- Schnittstelle) an den 2. Computer geschickt, der dann den Roboter
ansteuert. Um die
Steuerung des Roboters auch ohne direkten Sichtkontakt zu ermöglichen,
wurden 2 USB-Webcams in das System integriert, die ein Bild des Roboters am
Bildschirm anzeigen. Zusätzlich wird die aktuelle Position des Roboters
durch ein OpenGL – Modell simuliert und dreidimensional dargestellt. Projekt -
Übersicht Unser
gesamtes Projekt lässt sich in 4 Teilbereiche einteilen. Zuerst das
Joystick – Modul, das die Position des Joysticks über den Gameport einliest
und diese in Geschwindigkeiten der einzelnen Roboter - Achsen umrechnet.
Anschließend werden dieses Daten über eine Netzwerkverbindung (Ethernet,
COM) an den 2. Teil, das Roboter – Modul, weitergereicht. Dieses Modul muss
dann nur mehr die geeigneten Befehle an den Roboter schicken um ihn an die
berechnete Position zu sadfasdf
- Paket übertragen, das
bestimmte Informationen über den Joystick enthält (Achsen, Buttons, ...).
Anschließend wird noch ein Device - File angelegt, über welches
die Joystick – Position eingelesen werden kann. Sobald die read –
Funktion dieses Device – Files aufgerufen wird, wird ein Triggersignal an
den Joystick gesendet, welcher daraufhin ein Datenpaket sendet. Dieses
Datenpaket beinhaltet die Position der einzelnen Achsen und die Zustände
der Buttons. Der zweite
Teil des Joystick – Moduls braucht nur mehr regelmäßig die Daten vom
Joystick – Device–File einlesen und über die serielle Schnittstelle an das
Roboter – Modul senden. Ein RT-Treiber für die serielle Schnittstelle ist
bereits vorhanden und heißt rt_com. Das
Roboter – Modul: Das
Roboter – Modul liest einfach regelmäßig Datenpakete von der seriellen
Schnittstelle und berechnet anhand der übergebenen Geschwindigkeiten die
Positionen der einzelnen Roboterachsen. Diese
werden dann in einem speziellen Format über eine 2. serielle Schnittstelle
an den Roboter übergeben. Zusätzlich wird vom Roboter – Modul verhindert,
dass sich die berechnete Position innerhalb von bestimmten, nicht erlaubten
Bereichen befindet, in denen sich der Roboter selbst beschädigen würde. Ein
weiterer Sicherheitsmechanismus kontrolliert ob die Datenpakete vom
Joystick – Modul in regelmäßigen Abständen gesendet werden. Falls ein
Datenpaket ausfällt, wird das Roboter – Modul gestoppt, um zu verhindern,
dass im Falle einer unterbrochenen Verbindung der Roboter nicht mehr
gestoppt werden kann und sich somit mit der alten Geschwindigkeit
weiterbewegt. bewegen.
Die ersten beiden Module sind für die Steuerung des Roboters zuständig und
müssen deshalb echtzeitfähig sein. Die nächsten beiden Module sind für die
Visualisierung der Roboter – Position verantwortlich. Sie sind nicht
echtzeitfähig, da sonst die Realisierung sehr aufwendig gewesen wäre und da
es eigentlich nicht notwendig ist, dass das Bild des Roboters in regelmäßigen
Abständen angezeigt wird. Das 3. Modul übernimmt die Visualisierung des
Roboters mittels eines OpenGL Modells. Dafür wird ihm die aktuelle Position
des Roboters vom Roboter – Modul übergeben. Zusätzlich wird ein Bild des
Roboters vom 4. Modul angezeigt. Es wird von den Webcams über USB
eingelesen und über eine Netzwerkverbindung an die Visualisierung
geschickt. Das
Joystick – Modul: Das
Joystick - Modul basiert auf dem Linux Joystick - Treiber für Logitech
Joysticks. Sobald das Modul eingefügt wird, wird zuerst die Soundkarte
initialisiert und der Gameport aktiviert. Anschließende wird der Joystick
initialisiert. Der verwendete Logitech Joystick unterstützt 2 verschiedene
Betriebsarten: analog Modus: Es wird ein normaler analog Joystick
emuliert. Es werden 2 Achsen und 2 Buttons unterstützt, die jeweils über
eine eigene Leitung mit dem Gameport verbunden sind. digital Modus: Die Position des Joysticks wird digital über
die zwei Button – Leitungen übertragen. Vorteile dieses Modus sind die
höhere Genauigkeit und beliebige Anzahl von Achsen bzw. Buttons. Bild 3: Aufbau