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()

Geht man von einer Grundstruktur aus, in welcher der gesamte Programmcode eines Roboters innerhalb der Funktion loop() wiederholt ausgeführt wird, so kann ein Roboter umso besser auf seine Umwelt reagieren und seine Aufgaben erfüllen, je kürzer ein Durchlauf des gesamten Codes in dieser Funktion dauert.

Während der Ausführung des Programmcodes darf dieser innerhalb der Funktion loop() 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 Programms für einen autonomen Roboter zu sehen. Damit der Programmcode innerhalb der Funktion loop() so schnell wie möglich ausgeführt wird, darf darin die Ausführung auf keinen Fall mit der Funktion SLEEP() angehalten werden.

Auch muss unbedingt vermieden werden z. B. mit einer while-Schleife, 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 Programms für einen autonomen Roboter
#include "KeplerOpenBOT.h"

void setup()
{
KeplerOpenBOT_INIT();
}

void loop()
{
// Einlesen der aktuellen Werte der Sensoren
// Informationsverarbeitung
// Ansteuern der Aktoren
}