Simulator

Der USARSim Simulator

Für viele Aufgaben werden Daten von realen Robotern, oder alternativ aus einer Robotersimulator benötigt. Eine Möglichkeit dazu ist USARSim (engl: Unified System for Automation and Robot Simulation). Dieser Simulator ist kostenlos und basier auf den Computerspielen der Unreal Tournament Serie. Zunächst muss das Unreal Development Kit (UDK) installiert werden, bevor die Änderungen des eigentliche USARSim eingespielt werden. Anschließend kann man sich über eine TCP/IP-Schnittstelle mit beispeilsweise einem C/C++/Python/...-Programm mit dem Simulator verbinden, Roboter steuern und simulierte Sensordaten erhalten. Der Simulator läuft nicht nur, aber am besten unter Windows. Die Roboterkontrollprogramme können selbstverständlich unter jedem betriebssystem ausgeführt werden. Im Folgenden beschreiben wir die Schritte, die dazu nötig sind.

Installation

  1. Laden und installieren Sie UDK Dec-2011 (http://www.udk.com/). Verwenden Sie zum Installieren ein Verzeichnis mit dem Namen UDK\UDK-yyyy-mm, wobei yyyy für das Jahr des UDK Release und mm für den Monat steht.
  2. Laden Sie sich die letzte Version (USARSimFull_UDKV1.2.zip) von der Webseite http://sourceforge.net/projects/usarsim/ herunter.
  3. Entpacken Sie alle Dateien in das in Schritt 1 spezifizierte Verzeichnis.

Starten des Simulators

  1. Führen Sie make.bat aus. Dieser Schritt erfordert Systemadministratorrechte, um korrekt ausgeführt zu werden.
  2. Starten Sie nun USARSim durch das Ausführen einer Batch-Datei, die die zu verwendende Umgebung spezifiziert, z.B. VMAC2011.bat.

Die Server-Adresse ist localhost, falls Usar.exe auf dem selben Rechner ausgeführt wird. Der Port ist standardmässig 3000. Klicken Sie connect, um sich zum Unreal-Server zu verbinden, und führen Sie folgenden Befehl aus:

INIT {ClassName USARBot.KR6} {Location .4, .4, 1.8}

um einen Roboter zu erzeugen. Wenn alles funktioniert hat, sollten Sie einen KUKA KR6 Roboter in der Ansicht sehen.

Spawning a KR6
(click to enlarge)

Nun sollten Sie sich zunächst die IP-Adresse des Computer (oder virtuellen Maschine) mit dem Unreal-Servers notieren und den Server mit VMAC2011.bat starten. Evtl. müssen Sie die Firewall der beteiligten Rechner entsprechend konfigurieren. Anschließend können Sie von einem UNIX-Rechner folgende Befehle ausprobieren.

telnet 192.168.1.180 3000
INIT {ClassName USARBot.ROBOT} {Location .4, .4, 1.8}

Nun können Sie ein C/C++-Programm schreiben, was sich mit dem Unreal-Server verbindet und einen Roboter initialisiert, indem das INIT-Kommando gesendet wird. Stellen Sie sicher, dass die Verbindung danach aufrechterhalten wird, da der Roboer verschwindet, sobald sie abbricht. Selbstversändlich können Sie auch mehrere Roboter gleichzeitig steuern.

USARSim und ROS

Zunächst machen Sie sich bitte mit ROS vertraut und arbeiten die Tutorial durch. Um mit ROS (engl.: Robot Operating System) einen Roboter in USARSim zu steuern, laden Sie sich bitte folgende Datei herunter: ros_usarsim.zip. Entpacken Sie das zip-File und modifizieren Sie die Datei src/usarsim.cpp, indem Sie die IP-Adresse des USARSim-Servers eintragen. Platzieren Sie nun das ROS package in den ROS Pfad und übersetzen Sie es. Nun können Sie folgendes Kommando ausführen:

rosrun usarsim usarsim x y z RobotName

x, y, z sind wiederum die Startkoordinaten des Roboters (vgl. 0.4, 0.4, 1.4 oben). Wählen Sie einen eindeutigen Namen für Ihren Roboter. Das ROS-Programm

Beispiel

Das folgende Video zeigt die USARSim Simulation. P3AT Roboter, ausgestattet mit SICK LMS200 Laserscannern, verwenden die Freiraumnavigation mit Spurfahrt, wie sie in Kapitel 7.3.1 auf Seite 266ff beschrieben ist, um ohne Kollisionen herumzufahren. Dies ist eine Musterlösung zu Übung 7.2.