Projektidee Gruppe 42 TKP: Projektidee Gruppe 42

Datum: 21.06.1995
Gruppe 42

Autoren:

Stichworte:


Zusammenfassung:

Die Projektidee zur Rollstuhlnavigation und Hindernisvermeidung wird vorgestellt.


Ausgangssituation

In unseren Versuchen mit dem Nehmzow-Alogrithmus haben wir gesehen, daß taktile Sensoren für eine brauchbare Hinderniserkennung- und Vermeidung ungeeignet sind. Insgesamt scheinen die uns zur Verfügung stehenden Sensoren keine ausreichende Qualität zu haben, um allein auf ihrer Basis eine Navigation zustande zu bringen. Wir haben uns daher dafür entschieden, kartenbasiert zu arbeiten und für's Erste anzunehmen, daß uns sowohl eine Karte als auch eine hinreichend genaue Position in dieser Karte zur Verfügung stehen. Wir sind uns dabei der Tatsache bewußt, das Problem der schlechten Sensorik eigentlich nur ausgeklammert zu haben, da es jetzt mehr oder weniger auf die Positionsbestimmung zurückfällt. Später kann man eventuell dazu übergehen, mit Sensoren entsprechender Güte die Karte in einem Vorlauf oder sogar in Echtzeit selbst aufzubauen.

Was wollen wir überhaupt ?

Was ist eigentlich unser Ziel ? Es soll ein Rollstuhl mit Hard- und Software bestückt werden, die es ermöglicht, in einer rollstuhlgerechten Umgebung sicher, komfortabel und möglichst benutzerfreundlich von einem Punkt A zu einem anderen Punkt B zu fahren. Rollstuhlgerecht heißt dabei, daß der Rollstuhl ausreichend viel Platz haben soll, um auch vernünftig agieren zu können, es sollen hinreichend viele markante Punke vorhanden sein, die eine Positionsbestimmung mit Hilfe von Sensoren möglichst geringer Güte ermöglichen und falls Türen vorhanden sind, so sollen diese selbstöffnend oder immer offen sein. Sicher heißt, daß der Rollstuhl auf seinem Weg von A nach B nirgends anstößt, und komfortabel soll heißen, daß die Fahrgeschwindigkeit umso kleiner ist, je näher der Rollstuhl an Gegenständen vorbeifährt und daß Kurven möglichst weich sind und mit einer angemessenen Geschwindigkeit gefahren werden. Schließlich heißt benutzerfreundlich, daß man seine Ziele als Benutzer möglichst frei aber dennoch übersichtlich und einfach eingeben kann, z.B., indem man sein Ziel aus einem Menü aussucht oder noch besser in einer Kartendarstellung direkt anwählt.

Und was nun ?

Wir arbeiten in einer Gruppe von rund 20 Leuten, die alle beschäftigt sein wollen und müssen, damit wir unser Ziel erreichen können. Es ist eine nicht unerhebliche Menge an Soft- und Hardware zu erstellen bzw. anzubringen und zu testen. Wir müssen also darauf achten, daß wir die anliegenden Aufgaben vernünftig verteilen. Im Hinblick auf die Realisierung unseres Ziels heißt das unter anderem, daß wir zumindest die Software so modular schreiben müssen, daß jeder Beteiligte seinen klar umrissenen Aufgabenbereich zugewiesen bekommt, den er zu erledigen hat. Solche Module müssen später zusammengefügt werden, damit die Gesamtsoftware auch lauffähig wird. Wir müssen also einen Lösungsansatz finden, der sich leicht in klar definierte Module aufteilen läßt.

Der Lösungsansatz

Unsere Idee beruht auf den oben beschriebenen Gedanken. Wie schon erwähnt, planen wir, mit einer Karte zu arbeiten und setzen voraus, daß wir jederzeit unsere Position in dieser Karte kennen oder zumindest bestimmen können. Auf welche Weise das geschieht, ist für unsere Planung nicht von Bedeutung. Wir haben also eine Karte, und wir wissen, an welchem Punkt der Karte wir uns befinden. Da die Karte eine Darstellung der Umgebung ist, in der wir agieren, kennen wir also auch unsere Position in der Realität. Nun brauchen wir nur noch eine Aufgabe. Der Benutzer gebe uns ein Ziel innerhalb der Karte an, das er anfahren will. Was ist nun zu tun ? Es muß ein Weg zu dem Ziel berechnet und nachgefahren werden. Auf der Fahrt muß auf Hindernisfreiheit geachtet werden und möglichst gleichmäßig beschleunigt und gefahren werden. Wir brauchen also zunächst eine Einheit, die in der Karte einen Weg findet, der von unserer jetzigen Position (oder von einem beliebigen aber festen Punkt A) zur gewählten Zielposition (Punkt B) führt. Zudem muß dieser Weg auch fahrbar sein, also an die hardwareseitigen Beschränkungen angepaßt sein. Schließlich müssen Motorsignale generiert werden, die geeignet sind, den Weg auch tatsächlich zu fahren. Während der Fahrt muß fortlaufend die aktuelle Position bestimmt werden, und es muß gegebenenfalls der Weg jeweils neu berechnet werden. Zudem muß während der Fahrt darauf geachtet werden, daß keine Hindernisse den Weg versperren, die in der Karte nicht verzeichnet sind. In einem solchen Falle ist das erkannte Hindernis zu berücksichtigen (z.B. durch einen möglicherweise temporären Eintrag in die Karte) und ein neuer Weg zu berechnen. Versuchen wir die bisherigen Ergebnisse doch einmal mit einer kleinen Grafik zu veranschaulichen. (Abbildung: idschema ) Wie man der Grafik entnehmen kann, haben wir den eigentlichen Wegfinder als ein Modul geplant, das einfach nur eine Folge von geraden Strecken aneinanderreiht. Ein solches Konstrukt kann sicher mit dem uns zur Verfügung stehenden Rollstuhl nicht nachgefahren werden. Daher schließt sich an den Wegfinder ein Wegbereiniger an, der aus der zackigen Ausgabe des Wegfinders einen fahrbaren Graphen berechnet, der an die Hardware des Rollstuhls angepaßt ist. Man erkennt in der Grafik die Hinderniserkennung als eine Art eigenen Prozeß, der mit dem Wegfinder einseitig über die Karte kommuniziert, indem er erkannte Hindernisse in die Karte einträgt, oder eventuell auch nicht mehr vorhandene Hindernisse aus der Karte löscht. Auch die Positionsbestimmung ist als eigenständiger Prozeß gedacht, der die ganze Zeit nur damit beschäftigt ist, die aktuelle Position zu bestimmen. Der Wegfinder nimmt diese als Eingabe und kann somit immer auch auf Fahrfehler reagieren. Es ist dies das Feedback, das der Wegfinder braucht, um nicht blind von A nach B zu fahren. Man kann sich aber auch vorstellen, daß der Wegfinder jeweils eine Positionsbestimmung initiiert, wenn z.B. eine bestimmte Zeit vergangen ist oder ein bestimmter Weg zurückgelegt worden ist. Im folgenden werden die einzelnen Komponenten noch einmal genauer dargestellt.

Die Karte

Die Karte stellt die Welt, in der sich der Rollstuhl bewegt, dar. Sie muß Informationen über anfahrbare Stellen enthalten und flexibel nutzbar sein, d.h., man muß sie während des späteren Betriebs leicht lesen und ändern können. Sie sollte über Nachbarschaftsbeziehungen von Räumen aufklären können.

Die Positionsbestimmung

Die Positionsbestimmung soll uns jederzeit über unsere Position in der Welt informieren können. Sie bekommt als Eingabe die mitgerechnete ungefähre Position und die Karte. Die Genauigkeit der bestimmten Position sollte so groß wie möglich sein. Es hat aber keinen Sinn, sie größer als die maximale Auflösung der Karte zu machen. Sofern die Genauigkeit nicht an jeder Position in der Welt gleich groß sein kann, sollte die maximale Genauigkeit an Engstellen in der Welt, also z.B. in der Nähe von Türen sein. Wir stellen uns eine Positionsbestimmung mittels Kamera und Landmarken vor, es kann sich aber auch um beliebige andere Sensoren handeln oder um Kombinationen von Sensoren.

Zackig und direkt: der Wegfinder

Der Wegfinder bekommt als Eingaben eine Karte, sowie einen Startpunkt A und einen Zielpunkt B in dieser Karte. Seine Aufgabe ist es, in der Karte einen Weg von A nach B zu finden. Seine Ausgabe besteht schließlich aus einer Folge von Punkten in der Karte, die nacheinander geradeaus angefahren werden könnten, wenn das fahrende Vehikel auf der Stelle drehen könnte. Aber der Wegfinder arbeitet nicht völlig unabhängig von der Rollstuhlhardware: Wir stellen uns zwei Arten von Rangierbereichen vor, die die Rangierfreiheit des Rollstuhls gewährleisten sollen und innerhalb derer der Wegfinder nur planen darf. Die erste Art Rangierbereich sind Türrangierbereiche, die jeweils vor und hinter Türen zu anderen Zimmern liegen. Es handelt sich hier um fest in der Karte verankerte rechteckige Bereiche, die schon bei der Erstellung der Karte vermerkt wurden. Jede Fahrt durch eine Tür von einem Raum in einen anderen führt über zwei solcher Rangierbereiche (einer vor und der andere hinter der Tür), es gehören also quasi jeweils zwei Türrangierbereiche zusammen, und die Bereiche sind so zu definieren, daß eine Seite des Rangierbereichs parallel zur Türöffung liegt und daß der Rollstuhl von der Mitte der der Tür zugewandten Seite des ersten Rangierbereichs geradeaus zur Mitte des der Tür zugewandten Seite des gegenüberliegenden Bereichs fahren kann, ohne anzustoßen. Jeder Türrangierbereich hat eine Mitte, die vom Wegfinder anvisiert wird. Der andere Rangierbereich ist globaler Art. Er definiert einfach nur alle Punkte in der Karte, die der Rollstuhl anfahren kann und an denen er sich noch vollständig drehen kann. Der Wegfinder plant also nur innerhalb der Rangierbereiche, und seine Aufgabe ist es, eine Folge von Punkten zu finden, die nacheinander geradeaus angefahren werden können, wobei kein berechneter Punkt und auch kein Punkt auf der Verbindungsstrecke zweier benachbarter berechneter Punkte außerhalb der Rangierbereiche liegen darf. Liegt der Anfangspunkt außerhalb der Rangierbereiche, so muß zunächst dafür gesorgt werden, daß der Rollstuhl in einen Rangierbereich hineinfährt. Liegt der Endpunkt außerhalb der Rangierbereiche, so muß in der Liste der Ausgabepunkte der letzte Punkt innerhalb eines Rangierbereichs der letzte sein. Ein spezielles Modul muß sich dann um die Fahrt außerhalb von Rangierbereichen kümmern.

Sanft und sauber: der Wegbereiniger

Aufgabe des Wegbereinigers ist es, die Folge von Punkten des Wegfinders entgegenzunehmen und sich daran zu orientieren, um Motorsignale zu erzeugen, so daß man vom ersten zum letzten Punkt gelangt. Auch der Wegbereiniger arbeitet mit der Karte. Die Orientierung an den Punkten des Wegfinders ist folgendermaßen zu verstehen: Wie schon erwähnt gehen wir davon aus, daß der Rollstuhl nicht auf der Stelle drehen kann, also kann die vom Wegbereiniger errechnete Strecke nicht genau nachgefahren werden, weil sich in ihr scharfe Winkel befinden. Der Wegbereiniger soll jetzt möglichst nah am vom Wegfinder vorgezeichnetet Weg bleiben, während er die Winkel abflacht. Dabei darf er auch Wege fahren, die außerhalb des globalen Rangierbereichs liegen. Jedoch sollte in solchen Fällen im Sinne des Fahrkomforts die Geschwindigkeit entsprechend der Nähe zu Hindernissen gedrosselt werden. Eine kleine Besonderheit stellen wieder die Türrangierbereiche dar: Der Wegbereiniger muß dafür sorgen, daß der Austrittspunkt aus einem Türrangierbereich vor einer Tür in der Mitte der der Tür zugewandten Seite des Rangierbereichs liegt, daß die Ausrichtung des Rollstuhls senkrecht zu dieser Seite liegt und daß die Lenkräder gerade stehen.

Die Hinderniserkennung

Wie schon erwähnt, ist die Hinderniserkennung als eigenständiger Prozeß geplant, dessen Aufgabe es ist, Hindernisse zu erkennen und den Wegfinder darüber zu informieren. Dies könnte z.B. durch einen Eintrag des Hindernisses in die Karte erreicht werden. Die Hinderniserkennung braucht die aktuelle Position in der Karte, um erkannte Hindernisse an der richtigen Stelle in der Karte eintragen zu können. Sinn der Hinderniserkennung ist es somit, die Karte den aktuellen Verhältnissen anzupassen. Neu erkannte Hindernisse werden eingetragen, nicht mehr erkannte gelöscht. Man sollte dabei nach einer Sicherheitstaktik arbeiten: Ein neu erkanntes Hindernis könnte z.B. mit einer bestimmten (höchsten) Wertigkeit eingetragen werden. Wird es später nicht mehr erkannt, so wird diese Wertigkeit in der Karte verringert, so daß Hindernisse, die nicht mehr existieren also langsam aus der Karte gelöscht werden. Man darf sie nicht gleich löschen, wenn sie nicht mehr erkannt wurden, weil eventuell nur die Sensoren gerade fehlerhafte Daten liefern. Und die Taktik sollte daher lauten: lieber einen kleinen Umweg um ein nicht vorhandenes Hindernis fahren als eine Kollision oder eine tote Katze riskieren. Die Hinderniserkennung darf natürlich auf keinen Fall feste Hindernisse wie Wände löschen. Dieser Fall dürfte zwar normalerweise wegen der Sicherheitstaktik nicht auftreten, aber dennoch sind in der Karte nichtlöschbare Gegenstände vorzusehen.