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 einer while-Schleife wiederholt ausgeführt wird, so kann ein Roboter umso besser auf seine Umwelt reagieren und seine Aufgaben erfüllen, je kürzer ein Durchlauf dieser while-Schleife dauert.

Während der Ausführung des Programmcodes darf dieser innerhalb der while-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 EVC-Programms für einen autonomen Roboter zu sehen. Damit der Programmcode innerhalb der while-Schleife 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 weiteren 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

  1. Einlesen der aktuellen Werte der Sensoren
    Zu Beginn werden die aktuellen Werte aller Sensoren ermittelt.
  2. Informationsverarbeitung
    Ausgehend von den Informationen der Sensoren werden diese analysiert und Entscheidungen für folgende Aktionen getroffen.
  3. Ansteuern der Aktoren
    Basierend auf den nächsten ermittelten Schritten werden die Aktoren angesteuert.
Programmbeispiel - Grundstruktur eines EVC Programms für autonome Roboter
#include "evclibrary.h"
int main()
{
// 1. Konfiguration der angeschlossenen Sensoren und Motoren
// 2. Initialisierung des EV3 Brick
EVC_INIT();
// 3. Steuerung des Roboters
while (NOTEXITBUTTON)
{
// Einlesen der aktuellen Werte der Sensoren
...
// Informationsverarbeitung
...
// Ansteuern der Aktoren
...
}
// 4. Programmende
EVC_CLOSE();
return 0;
}
Erklärungen zu diesem Programmbeispiel
Zeile 10-15:

Innerhalb dieses Codeblocks muss gewährleistet sein, dass dieser so schnell wie möglich und ohne Unterbrechungen ausgeführt wird. Die Funktion SLEEP() darf hier nicht verwendet werden.