Echtzeit Roboter Steuerung aus Hollabrunn

Ein Bericht von Florian Bruckner über eine Diplomarbeit der R-Abteilung in Zusammenarbeit mit Opentech.at


Textfeld:  
Bild 1: Projektteam

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.

Der Joystick wird durch das Senden einer Trigger – Sequenz im digital Modus initialisiert. Danach wird ein ID
 

Bild 3: Aufbau

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Textfeld:  
Bild 2: Blockdiagramm