Echtzeitbetriebssystem?

Unser Programm ist in letzter Zeit extrem gewachsen, besonders die Zeilenkamera bereitet uns ein paar Timingprobleme. Unsere Software hat keine wirkliche zeitliche Ordnung, das meiste wird in der Hauptschleife gemacht (bis auf Geschwindigkeitsmessung und die Timer). Besonders für Regelungen (Geschwindigkeit, Abstand…) ist eine geordnete zeitliche Reihenfolge aber sehr wichtig. Wir haben uns nun dazu entschieden, uns etwas in Echtzeitbetriebssysteme einzuarbeiten.

Echtzeitbetriebssysteme arbeiten, wie der Name schon erahnen lässt, in Echtzeit. Wenn also an einem bestimmten Zeitpunkt im Programm ein Ereignis erkannt wird, wird direkt darauf reagiert (wenn es so erwünscht isr). Im Gegensatz zu Betriebssystemen wie Linux oder Windows (beides keine Echtzeitbetriebssysteme, eng. Real Time Operation System, deshalb auch oft abgekürzt als RTOS) ist das Verhalten der Software dabei wesentlich besser vorhersehbar.

Eigentlich brauchen wir nur einen Scheduler, der unsere Prozesse einteilt. In Hinsicht auf einfache Erweiterbarkeit wollen wir aber doch etwas nutzen, was man ohne viel Aufwand auf andere Prozessorarchitekturen portieren kann. Genauer angesehen haben wir uns bis jetzt FreeRTOS. FreeRTOS ist eigentlich kein richtiges Betriebssystem, nur der Kernel mit Scheduler und Management der Tasks, also genau richtig für uns. Des Weitereren ist es sehr klein und optimiert auf unsere geringen Ressourcen.
Das Anlegen der Tasks sieht recht einfach aus, mal sehen, ob es wirklich so toll funktioniert (Zeit haben wir ja jetzt genug, es dauert noch 5 Monate bis zum Wettbewerb). Vielleicht entscheiden wir uns aber auch noch für etwas anderes…
Hier eine kleine aktuelle Zeitplanung:

 September  Einarbeitung in RTOS’
 Oktober  Implementierung von RTOS auf unsere Hardware und Anpassung unserer Treiber
 November  Roboter ist jetzt auf Stand von vor Implementierung → Tests und Debugging
 Dezember Implementierung weiterer Algorithmen
 Januar  Testen/Debuggen
 Februar Testen/Debuggen
 März  Testen/Debuggen/Wettbewerb

Zusammen mit einem Echtzeitbetriebssystem wollen wir auch eventuell auf eine IDE umsteigen (bis jetzt haben wir alles mit einem Texteditor und Syntaxhighlighting gemacht), da wir sonst wahrscheinlich irgendwann den Überblick verlieren. Da ziehen wir Eclipse in Betracht.

Soweit die Theorie. Mal sehen, was daraus wird, aber wir sind sehr zuversichtlich, da der Zeitplan auch EXTREM großzügig dimensioniert ist (evtl. verschiebt sich einiges um einen Monat nach hinten, schaffen werden wir es also zeitlich auf jeden Fall). Unsere Navigation und Kartenerstellung funktioniert ja außerdem schon einwandfrei, lediglich die Fahranweisungen (wie 30cm geradeaus oder 90° drehen) müssen noch perfektioniert werden. Dann natürlich noch einen Algorithmus, der es uns ermöglicht, den Roboter nach einem Lack of Progress per Tastendruck an einen beliebigen Punkt in der Arena zu stellen. Das ist aber das kleinste Problem. 😉