TU BRAUNSCHWEIG
| Carl-Friedrich-Gauß-Faculty | Computer Science
Informatikzentrum

SEP'08 Lastenheft
Softwareentwicklungspraktikum - kooperative Steuerung von Modellversuchsfahrzeugen

Version

Datum Autor Änderung Version
07.04.2008 Kai Homeier Initiale Version 1.0

Einleitung

Auf den bestehenden Modellversuchsfahrzeuge des IBR soll ein kooperativer, intelligenter Fahrentscheider entwickelt werden. Für ein auf dem Fahrzeug installiertes mini-ITX Board müssen Bildverarbeitung, Ortung und Fahrstrategie implementiert werden.

In einem unbekannten Labyrinth sollen kamerabasiert Objekte gefunden werden (z.B. ein Ball). Zur Orientierung ist es notwendig vorhandene Baken anzupeilen.

Organisatorisches

Das Programm ist wahlweise in der Programmiersprache C++ oder Java zu erstellen. Die Wahl der Programmiersprache ist dabei gruppeneinheitlich zu treffen.

Für die einzelnen Phasen des Praktikums gibt es pro Gruppe jeweils einen Phasenverantwortlichen, der für das Erreichen des Phasenziels verantwortlich ist.

Aufgaben

Dieses Dokument beschreibt die kooperative Steuerung von Modellversuchsfahrzeugen, die als Aufgabe des Softwareentwicklungspraktikums im Sommersemester 2008 durchgeführt wird. Die zu implementierenden Fähigkeiten des Programms werden in den nachfolgenden Abschnitten beschrieben.

Die Aufgabe wird von allen Gruppen parallel bearbeitet.

Da nicht jede Gruppe permanenten Zugriff auf das Fahrzeug haben kann, wird die Entwicklung an stationären Rechnern im CIP-Pool (Raum G40) unter Mac OS X durchgeführt. Die entwickelte Software muss jedoch regelmäßig auch auf den Fahrzeugen erprobt und getestet werden, die unter Linux laufen. Aus diesem Grund wird der Remote-Zugang zu Linux Servern zum Testen des eigenen Programms während des gesamten Praktikums gegeben sein.

Ortung

Das Fahrzeug soll sich von einer beliebigen Startposition aus Orientieren können. Hierzu sind Baken zu entwerfen, die an dem Fahrzeug bekannten Positionen aufgestellt werden und die möglichst gut durch das Kamerasystem erkannt und unterschieden werden können. Wurden die Startposition und -orientierung festgestellt, kann die aktuelle Position nach Fahrmanövern geschätzt werden. Die geschätzte Position muss regelmäßig überprüft und korrigiert werden.

Bildverarbeitung

Um die zu findenden Objekte (bspw. den Ball) und die Baken im Kamerabild zu identifizieren müssen geeignete Operatoren ausgewählt, entwickelt und auf die Kamerabilder angewendet werden. Denkbar ist eine Analyse der Bilder über den Farbraum, durch Kandenfindung (zB. Canny-Algorithmus) und mittels Hough-Transformationen (auch für Kreise)...
Eine Kalibrierung der Kamera ist hierfür notwendig um gefunden Objekte aus dem Bildraum in ein Weltkoordinatensystem umzurechnen. Auch hier bietet zB. openCV gute Hilfestellungen.

Fahrzeugansteuerung

Die Fahrzeugansteuerung wird über die Klasse Robot des bereitgestellten Frameworks ermöglicht. Beispiel:

  • Robot.drive( float distance, unsigned int speed )
  • Robot.turn( float angle, unsigned int speed )

Die Kalibrierung des Fahrzeugs ist in Robot.h zu finden und ggf. zu verfeinern.

Sensorik

Die Kamera kann unter C++ durch die open-Source Bibliothek openCV angebunden werden. OpenCV enthält weiterhin viele Grafik-Routinen die genutzt werden können.
Auch hier bietet das Framework Einstiegshilfen:

  • Robot.getCamera()->getImage()

Abstandssensorik: TBD


last changed 2008-04-08, 09:10 by Kai Homeier
printemailtop