LBotics.at

Damit ein autonomes System optimal auf seine Umwelt und Änderungen von Situationen reagieren kann, genügt es nicht nur ein solches mit einer Vielzahl von Sensoren auszustatten. Vielmehr muss auch die Software, welche die Informationen verarbeitet in der Lage sein, alle diese Daten so schnell wie möglich auszuwerten, um daraus brauchbare und verlässliche Informationen für Entscheidungsprozesse zu erhalten. Dies setzt auch voraus, dass die Ausführung des Programmcodes an keiner Stelle angehalten werden darf.

Es muss gewährleistet sein, dass die Informationen jedes Sensors zu jeder Zeit aktuell zur Verfügung stehen und daraus umgehend Entscheidungen für die nächsten Aktionen getroffen werden - unabhängig davon, welche Aktionen das System gerade ausführt.

Verzicht auf die Verwendung der Funktion sleep()

Zunächst sich in einem Skript, dass kontinuierlich laufen soll, eine Schleife befinden, innerhalb derer der gesamte Code steht, der wiederholt ausgeführt werden soll. Dabei ist zu beachten, dass ein Roboter umso besser auf seine Umwelt reagieren und seine Aufgaben erfüllen, je kürzer ein Durchlauf des Codes innerhalb der Schleife.

Während der Ausführung des Codes darf dieser innerhalb der Schleife also zu keiner Zeit angehalten werden, auch wenn es erforderlich ist, den Roboter zeitgesteuerte Abläufe ausführen zu lassen.

Im folgenden Codebeispiel ist die Grundstruktur eines Skripts für einen autonomen Roboter zu sehen. Damit der Programmcode innerhalb der Schleife so schnell wie möglich ausgeführt wird, darf darin die Ausführung auf keinen Fall mit der Funktion time.sleep() angehalten werden!

Auch muss unbedingt vermieden werden z. B. mit einer weiteren while-Schleife innerhalb der Hauptschleife, mit deren Bedingung auf einen bestimmten Wert eines Sensors gewartet wird, die Ausführung des Programmcodes so lange anzuhalten, bis dieses Ereignis eintrifft. Aktuelle Informationen anderer Sensoren würden in dieser Zeit nicht abgefragt und neue Informationen auch nicht ausgewertet werden!

Grundsätzlich gliedert sich der Programmcode in drei Abschnitte: Einlesen der aktuellen Werte der Sensoren, Informationsverarbeitung und Ansteuern der Aktoren

  • Einlesen der aktuellen Werte der Sensoren
    Zu Beginn werden die aktuellen Werte aller Sensoren ermittelt.
  • Informationsverarbeitung
    Ausgehend von den Informationen der Sensoren werden diese analysiert und Entscheidungen für folgende Aktionen getroffen.
  • Ansteuern der Aktoren
    Basierend auf den nächsten ermittelten Schritten werden die Aktoren angesteuert
Grundstruktur eines Skripts für einen autonomen Roboter
import cyberpi, mbot2, mbuild

while True:
# Einlesen der aktuellen Werte der Sensoren
...
# Informationsverarbeitung
...
# Ansteuern der Aktoren
...