Anwendungsbeispiel

Anwendung Abstandsmessung bei einem Roboter

Zunächst betrachten wir wieder das Roboter-Beispiel, das Sie aus Vorlesungen und Praktikum bereits kennen. Ein autonom fahrender Roboter braucht eine Kollisionserkennung, damit er nicht gegen Hindernisse fährt. Diese Aufgabe wird u. A. durch Abstandssensoren gelöst. Ein Abstandssensor gibt eine Zahl aus, die dem Abstand zum nächsten Hindernis angibt, das sich in „Blickrichtung“ des Sensors befindet. Ein wichtiges Ereignis tritt z. b. auf, wenn der Roboter gegen eine Wand zu fahren droht.

Wenn sich ein Hindernis zu nah am Roboter befindet, soll er sofort anhalten. Für diese Kollisionserkennung setzen wir einen weiteren Abstandssensor für den Nahbereich ein.

Der Roboter sollte zusätzlich den Abstand zu Objekten in Fahrtrichtung in regelmäßigen zeitlichen Abständen messen. Die Messergebnisse gehen in einen Algorithmus zur Ermittlung der Fahrtrichtung ein. Für diese Abstandsmessung setzen wir einen Abstandssensor mit hoher Reichweite ein.

Der Roboter hat parallel auch noch anderes zu tun als sich um eine Kollisionserkennung oder die optimale Fahrtrichtung zu kümmern. Er beobachtet über eine Kamera die Umgebung, sendet z. B. Bilddaten an ein Smartphone oder er saugt Staub oder mäht den Rasen. Wie stellen wir sicher, dass alle Aufgaben zur richtigen Zeit ausgeführt werden? Wir definieren einige Aufgabe als „Hauptprogramm“, die nacheinander abgearbeitet werden. Dazu zählen Staubsaugen oder Rasen mähen. Andere Aufgaben werden als Ereignisse behandelt und entsprechend mit Interrupts gelöst.

Wenn regelmäßig zu festen Zeitpunkten Abstandsmessungen durchgeführt werden sollen, dann triggern wir die Messung mit einem Timer-Interrupt. Wir erarbeiten in der Vorlesung, wie Timer-Interrupts programmiert werden. Bitte wiederholen Sie das Kapitel „Timer“ (das es nicht gibt, weil dies nur eine Probevorlesung ist) vor der nächsten Vorlesung. In der Vorlesung werden Sie einen Timer-Interrupt selbst programmieren.

Sobald ein Objekt zu nah ist, brauchen wir einen Interrupt, der den Roboter sofort stoppt. Er darf dann nicht erst den Rasen zu Ende mähen, sondern er muss sofort bremsen. Hier ist ein Interrupt erforderlich, um die Hauptaufgabe unmittelbar zu unterbrechen. In der Vorlesung werde ich präsentieren, wie so ein Interrupt programmiert wird.

Weiter