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
        • Aufbau
        • Probleme
      • Verwendete Software
        • Entwicklung
        • Probleme
    • Teil II
      • Programmablauf
      • Umsetzung der Konzepte
    • Teil III
      • Ausnahmebehandlung

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
    • RCX kommt nicht mehr mit

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?
        • Dann fertig
      • 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