Zielfindung / Hindernisvermeidung
Achtung! Das ist nur ein HTML-Port einer frühen Version meines Vortrags,
den ich mal gemacht habe, als ich nichts zu tun hatte.
Der ganze Vortrag ist von der Hauptseite aus verlinkt!
Vortrag im Proseminar "Bildverarbeitung auf Lego Mindstorms" 2003 der Uni
Erlangen-Nürnberg
Autor: Christoph Sommer
HTML-Port der Version 2003-01-11
Deckblatt
- Erreichen eines Ziels (ohne Kamera)
- Teil II: Realisation
- Vortrag im PSBVLego
- Gruppe 3: F. Unger, C. Sommer, M. Ströbl
|
Aufgabenstellung
- Anfahren einer Lampe jenseits unbekannten Terrains
|
Anforderungen
- Autonomer Roboter
- Beliebiger Start- und Zielpunkt
- Beliebige Form und Anordnung der Hindernisse
- Unabhängigkeit von wechselnden Faktoren
- Lichtverhältnisse
- Batteriespannung
- Untergrund
|
Übersicht
- Realisation
- Teil I
- Verwendete Hardware
- Verwendete Software
- Teil II
- Programmablauf
- Umsetzung der Konzepte
- Teil III
|
Hardware: Aufbau
|
Hardware: Aufbau
- Chassis
- Vier Räder, dadurch Drehung um die eigene Achse möglich
- Genauer als Ketten oder Dreirad
- Sensoren
- Rotationssensor an linkem Rad
- Lichtsensor, fest nach vorne gerichtet
- Touchsensor an der Front
|
Hardware: Probleme: Drehungen
- Bestimmung von Drehwinkeln und Strecken per Rotationssensor
- Drehgeschwindigkeit abhängig von Batteriespannung und Untergrund
- Problem: Messen an nur einer Achse
- Durchdrehen eines Rads unvermeidbar
- Geschwindigkeitsunterschied bei Vor- und Rückwärtslauf
- Lösung: Einführen von Konstanten
- Je eine Konstante zur Umrechnung von Rad-Drehwinkel in Roboter-Drehwinkel
für Rechts- und Linksdrehung
|
Hardware: Übersetzung des Rotationssensors
- Zu langsam
- Ungenau
- Leichte Variationen beobachtet
- Zu schnell
|
Software: Entwicklung
- NQC
- Übersichtlichstes System
- Standard-Firmware
- Programm läuft vollständig im Brick
|
Software: Entwicklung
- Probleme
- Keine Verbindung zum PC
- Verhältnismäßig langsam
- Eingeschränkte Rechenleistung, insbesondere auf 16bit Integer
- Eingeschränkter Programmspeicher, Probleme mit Codegröße
|
Teil II: Der Programmablauf
- Programm
- Orientierung auf Lampe
- Orte Lampe
- Drehe dich zur Lampe
- Fahrt zur Lampe
- Lampe erreicht?
- Hindernis gefunden?
- Weiche Hindernis aus
- Orientiere dich neu auf die Lampe
|
Orte Lampe
- 360°-Schwenk (Drehwinkelmessung)
- Problem: Identifizieren der Lampe
|
Orte Lampe
- Lösung: delta-f Verfahren
- Identifiziert Lichtquelle sehr sicher
|
Kurskorrektur
- Problem: evtl. keine genaue Zielpeilung
- Lösung: regelmäßiges Scannen
|
Zielerkennung
- Methode
- Überschreitung eines Grenzwerts am Lichtsensor
- Implementierung
- Bei Vollausschlag: Ziel erreicht
- Einrichtung eines watcher-tasks
|
Hinderniserkennung
- Methode
- Erkennung durch Berührungssensor
- Implementierung
- Breiter Bumper mit Über- und Unterfahrschutz
- Sehr sensibel
- Erkennt auch schiefes Anfahren des Hindernisses
|
Hindernisvermeidung
- Theorie:
- Algorithmus „Bug2“ (Lumelsky / Stepanov)
- Inspiriert durch Beobachtung von Insekten
|
Hindernisvermeidung:
Der Algorithmus
- Folge getroffenem Hindernis
- Verlasse das Hindernis am ersten Q, für das gilt:
- Q liegt auf ST
- |QT| < |HT|
- QT kreuzt das Hindernis nicht
|
Hindernisvermeidung:
Implementierung
- Virtuelles Koordinatensystem
- Startpunkt am Hindernis ist (0,0)
- Ziel liegt auf positiver y Achse
- Verlassen des Hindernisses bei x = 0, y > 0
|
Hindernisvermeidung:
Implementierung
- Entlangfahren am Hindernis
- Entlangtasten ohne Roboter zu verdrehen gestaltet sich zu schwierig
- Deshalb: Einfach immer wieder versuchen, gegen das Hindernis zu fahren
|
Teil III: Ausnahmebehandlung
- Fehlerfälle
- Falsche Ortung der Lampe
- Hindernisse haben sich verändert
- Lampe zu weit weg oder verdeckt
|
Endlosschleifen
- Problem
- Situation
- Irrtümliche Annahme: Lampe ist hinter der Zimmerwand --> Hindernis
unendlich lang
- Hindernis verschwindet --> unendlich kurz
- Bug2 versucht dann erfolglos, dieses „Hindernis“ zu umfahren
- Lösung
- Abbruch von Bug2 nach festem Zeitintervall
|
Lampe verdeckt
- Problem
- Lampe nicht ortbar, Bug2 kann nicht starten
- Vorgehen
- Fahre in die Richtung, wo zuletzt die Lampe war
- Versuche regelmäßig, die Lampe wieder zu orten
- Bei Anstoßen an ein Hindernis: Umschalten auf alternativen Algorithmus
|
Der Pledge Algorithmus
- Hintergrund
- Gefunden von einem 12jährigen Engländer
- Findet aus jedem Labyrinth
- Funktionsweise
- Folge getroffenem Hindernis
- Verlasse Hindernis, sobald Roboter sich durch Abfahren des Hindernisses
gleich oft rechts- wie linksrum gedreht hat
|
Prinzip
- Weiche jedem Hindernis nach links aus
|
Implementierung
- Implementierung
- Einfach, da Drehungen auf 90° beschränkt
- Vorteil
- Algorithmus umfährt jede Art von Hindernis
- Durch viele Scans sind Dreh- und damit Positionsinformation ungenau
- Pledge braucht nur ungefähre Orientierung
- Nachteil
- Sucht nicht im Inneren von Räumen
|
Zusammenfassung
- Erreichen eines Ziels (ohne Kamera)
- Einsatz der Lego-Sensoren
- Orten einer punktförmigen Lichtquelle
- Ausweichen von Hindernissen
|
Text & Graphik (ausgenommen Hintergrund): (c) 2003 Christoph Sommer