Verhalten
Übersicht aller verfügbaren Verhalten für den c't-Bot
Stand: Code-Version 1874
Die Verhalten werden jeweils in available_behaviours.h ein- oder ausgeschaltet. Eingeschaltete Verhalten müssen dann zur Laufzeit noch aktiviert werden, eine detaillierte Erklärung zum Verhaltenssystem befindet sich hier.
Nähere Informationen zu den jeweiligen Verhalten findet man in den zugehörigen Source-Code-Dateien im Unterverzeichnis bot-logic.
Demo-Verhalten
Diese kleinen Verhalten sind ideal zum Einstieg oder um den Bot ganz einfache Dinge vorführen zu lassen.
- BEHAVIOUR_SIMPLE_AVAILABLE: Zwei sehr einfache Beispielverhalten, die für den Einstieg gedacht sind. In behaviour_simple.c findet man genauere Infos.
- BEHAVIOUR_DRIVE_SQUARE_AVAILABLE: Ein weiteres sehr einfaches Verhalten, das den Bot endlos im Quadrat fahren lässt. Eine nette kleine Demo, aber auch geeignet um die Genauigkeit von Drehungen und Geradeausfahrten zu überprüfen.
Notfall-Verhalten
Diese Verhalten greifen nur ein, wenn ein Notfall erkannt wird, z.B. ein Abgrund oder Hindernis voraus.
- BEHAVIOUR_AVOID_BORDER_AVAILABLE: Sobald ein Abgrund erkannt wird, fährt der Bot rückwärts, um nicht in den Abgrund zu stürzen. Es müssen auf jeden Fall die Abgrundsensoren korrekt kalibiert sein, damit das auch zuverlässig funktioniert!
- BEHAVIOUR_AVOID_COL_AVAILABLE: Wird mit den Distanzsensoren ein Hindernis in Fahrtrichtung erkannt, dreht dieses Verhalten den Bot und versucht am Hindernis vorbeizufahren. Damit das auch klappt, müssen die Distanzsensoren korrekt kalibriert sein!
- BEHAVIOUR_HANG_ON_AVAILABLE: Mit Hilfe des Maussensors kann dieses Verhalten ein Hängenbleiben des Bots erkennen und Gegenmaßnahmen einleiten (z.B. rückwärts fahren). Der Maussensor muss dafür natürlich korrekt kalibriert sein!
Positionierungs-Verhalten
Die folgenden Verhalten habe die Aufgabe den Bot an einen anderen Ort zu befördern oder ihn zu drehen. Sie kapseln somit die low-level-Funktionen zur Bewegung und ermöglichen den Anwendungs-Verhalten einen abstrakten und einfachen Zugriff auf die Positionierung des Bots.
- BEHAVIOUR_GOTO_AVAILABLE: Eines der ersten Positionierungsverhalten, das den Bot eine anzugebene Anzahl an Schritten fahren lässt. Inzwischen ist es aber nicht mehr up-to-date, man sollte lieber drive_distance() / goto_dist() oder goto_pos() benutzen.
- BEHAVIOUR_DRIVE_DISTANCE_AVAILABLE: Dieses Verhalten lässt den Bot eine in cm vorgegebene Distanz fahren. Dabei lässt sich optional auch eine Krümmung vorgeben, falls der Bot nicht geradeaus fahren soll. Ebenso kann man die Geschwindigkeit vorgeben.
- BEHAVIOUR_GOTOXY_AVAILABLE: Um den Bot an die Koordinaten (x|y) seines System zu bringen, verwendet man dieses Verhalten. Zunächst wird der Bot in die Zielrichtung gedreht und anschließend die Strecke zum Ziel abgefahren.
- BEHAVIOUR_TURN_AVAILABLE: Dieses Verhalten dreht den Bot um die gewünschte Gradzahl (im mathematischen Drehsinn gerechnet => positive Zahlen bewirken eine Drehung gegen den Uhrzeigersinn).
- BEHAVIOUR_TURN_TEST_AVAILABLE: Ein kleines Testverhalten für bot_turn(), das einige Drehungen ausführt und dabei Debug-Infos per Log ausgibt, so dass sich die Genauigkeit der Drehungen überprüfen lässt.
- BEHAVIOUR_GOTO_POS_AVAILABLE: Ein Verhalten zum Anfahren einer Position ähnlich wie GotoXY, das aber auch Kurven fahren kann, um die Genauigkeit zu erhöhen. Außerdem werden Fehler on-the-fly korrigiert, indem die Bahn periodisch neu berechnet wird.
- BEHAVIOUR_GOTO_OBSTACLE_AVAILABLE: Ein auf goto_pos() basierendes Verhalten, das ein mit den Distanzsensoren erkanntes Objekt verfolgt oder auf dieses zufährt.
- BEHAVIOUR_DRIVE_STACK_AVAILABLE: Dieses Verhalten fährt alle auf dem Positionsstack gesicherten Positionen in umgekehrter Reihenfolge (last in - first out) an.
- BEHAVIOUR_TEST_ENCODER_AVAILABLE: Verhalten zum Testen der Encoder-Genauigkeit, indem der Bot nach einer zufällig gefahrenen Strecke die Richtung wechselt.
Anwendungs-Verhalten
Die Anwendungs-Verhalten befinden sich auf der höchsten Schicht des Verhaltenssystems und lassen den Bot komplexe Aufgaben ausführen. In ihnen steckt die meiste Intelligenz des Bots.
- BEHAVIOUR_SOLVE_MAZE_AVAILABLE: Löst ein Labyrinth mit der Wandfolger-Methode. Das Labyrinth muss ein paar Voraussetzungen erfüllen, damit das funktioniert, weitere Infos finden sich hier.
- BEHAVIOUR_FOLLOW_LINE_AVAILABLE: Mit diesem Verhalten folgt der Bot einer Linie auf dem Untergrund. Natürlich müssen die Liniensensoren korrekt kalibriert sein!
- BEHAVIOUR_FOLLOW_LINE_ENHANCED_AVAILABLE : Erweiterter Linienfolger, der auch mit Linienunterbrechungen und Hindernissen klarkommt.
- BEHAVIOUR_PATHPLANING_AVAILABLE: Wenn die Kartographie aktiv ist, steuer dieses Verhalten den Bot zum angegeben Ziel und beachtet dabei die Hindernisse in der Karte (zur Dokumentation).
- BEHAVIOUR_OLYMPIC_AVAILABLE: Dieses Verhalten sucht eine Lichtquelle, fährt auf sie zu und anschließend im Slalom um weitere Lichtquellen. Eine detaillierte Beschreibung gibt es hier.
- BEHAVIOUR_CATCH_PILLAR_AVAILABLE: Ein Verhalten, das mit den Distanzsensoren in der näheren Umgebung nach einer Dose sucht und sie in das Transportfach lädt. Es gibt auch ein weiteres Verhalten, das die Dose wieder auslädt (bot_unload_pillar()).
- BEHAVIOUR_CLASSIFY_OBJECTS_AVAILABLE: Ähnlich wie bot_catch_pillar() sammelt dieses Verhalten Dosen / Objekte ein und transportiert sie in Abhängigkeit ihrer Farbe an unterschiedliche Ablagepositionen, so dass z.B. helle von dunklen Dosen getrennt werden.
- BEHAVIOUR_TRANSPORT_PILLAR_AVAILABLE: Transport-Pillar Verhalten, das den Bot einen Gegenstand transportieren lässt, Start- und Zielposition sind individuell einstellbar.
- BEHAVIOUR_FOLLOW_OBJECT_AVAILABLE: Mit diesem Verhalten verfolgt der ein (bewegliches) Objekt, solange es sich im Blickfeld befindet.
- BEHAVIOUR_FOLLOW_WALL_AVAILABLE: Ein Verhalten, das den Bot eine Wand suchen lässt, indem er auf sie zu fährt. Anschließend erfolgt eine kleine Drehung und das Spiel beginnt von vorn. Alternativ lässt sich auch eine Abbruchfunktion angeben, die das Verhalten beendet, sobald sie True liefert.
- BEHAVIOUR_DRIVE_AREA_AVAILABLE: Fährt eine bisher unbefahrene Fläche komplett ab und setzt voraus, dass die Kartographie-Option aktiviert ist. Ein typischer Anwendungsfall ist das automatische und vollständige Staubsaugen der Umgebung, wie in der Dokumentation beschrieben.
- BEHAVIOUR_LINE_SHORTEST_WAY_AVAILABLE : Löst ein Linien-Labyrinth, weitere Infos in der Dokumentation.
- BEHAVIOUR_DRIVE_CHESS_AVAILABLE: Lässt den Bot Schach spielen, indem er als Computergegner auftritt und die Züge auf einem Schachbrett nachfährt.
- BEHAVIOUR_SCAN_BEACONS_AVAILABLE: Sucht (IR-)Landmarken in einem 360 Grad Scan und berechnet aus den gemessenen Winkeln die aktuelle Position des Bots. Siehe auch Lokalisierung des ct-Bots.
- BEHAVIOUR_UBASIC_AVAILABLE: Ermöglicht die Ausführung von Basic-Programmen, die auf der SD-Karte abgelegt sind. Im Zusammenhang mit ct-Sim lassen sich Basic-Programme zur Bot-Laufzeit auf den Bot übertragen (per USB-2-Bot oder (W)LAN) und können dort gestartet und beendet werden. Die Dokumentation des Basic-Interpreters befindet sich im Unterverzeichnis Documentation/avrbasic des Bot-Codes.
- BEHAVIOUR_ABL_AVAILABLE: Ermöglicht die Ausführung von einfachen Skript-Programmen, die auf der SD-Karte abgelegt sind. Im Zusammenhang mit ct-Sim lassen sich diese Programme zur Bot-Laufzeit auf den Bot übertragen (per USB-2-Bot oder (W)LAN) und können dort gestartet und beendet werden.
Kalibrierungs-Verhalten
Die Kalibrierungs-Verhalten vereinfachen die Einstellung einiger Parameter, die für die jeweiligen Bots unterschiedlich sein können. Normalerweise führt man sie nach der Inbetriebnahme einmalig aus und braucht die ermittelten Parameter später nicht mehr zu ändern.
- BEHAVIOUR_CALIBRATE_PID_AVAILABLE: Dieses Verhalten kalibriert die Motorregelung automatisch durch systematisches Probieren von Parametern. Achtung, lange Laufzeit (Restlaufzeit wird im Display angezeigt).
- BEHAVIOUR_CALIBRATE_SHARPS_AVAILABLE: Diese Verhalten kalibriert die Distanzsensoren halbautomatisch, indem man den Bot fortlaufend auf die im Disply angezeigte Entfernung stellt und anschließend eine Taste drückt. Anschließend werden die ermittelten Daten im EEPROM abgelegt.
System-Verhalten
Die System-Verhalten sind auf der untersten Schicht des Verhaltenssystems angesiedelt und arbeiten sehr direkt mit den Grundfunktionen des Bot-Frameworks zusammen. Sie lösen keine komplizierten Aufgaben, sondern bieten einen einfachen Zugriff auf systemnahme Funktionen.
- BEHAVIOUR_SCAN_AVAILABLE: Um die nähere Umgebung in die Karte einzutragen, aktualisiert dieses Verhalten die Karte bei Bewegungen automatisch.
- BEHAVIOUR_SERVO_AVAILABLE: Mit diesem Verhalten lassen sich bis zu zwei Servos ansteuern. Es sorgt dafür, dass die Servos nach Erreichen ihrer Zielposition wieder abgeschaltet werden, um Strom zu sparen.
- BEHAVIOUR_REMOTECALL_AVAILABLE: Umfangreiches Verhalten, über das andere Verhalten aus der Ferne aktiviert und auch wieder abgebrochen werden können. Dazu muss der Bot entweder per USB-2-Bot-Adapter oder (W)LAN mit einem PC verbunden sein. Der ct-Sim oder das Applet für den WiPort ermöglichen dann eine einfache Steuerung von Verhalten und sogar Verhaltensfolgen. Sozusagen der große Bruder der IR-Fernbedienung. In der Dokumentation befinden sich weitere Erklärungen. Außerdem stellt das Verhalten ein Display zur Verfügung, über das Verhalten mit der IR-Fernbedienung gestartet und beendet werden können.
- BEHAVIOUR_MEASURE_DISTANCE_AVAILABLE: Ein Hilfsverhalten, dass die Messwerte der Distanzsensoren abfragt und jene erst dann zurückliefert, wenn sie auch stabil (gleichbleibend) sind.
- BEHAVIOUR_DELAY_AVAILABLE: Ein Hilfsverhalten, dass aktive Verhalten (mit Ausnahme der Notfall-Verhalten) unterbricht, bis eine gewünschte Zeitspanne angelaufen ist.
- BEHAVIOUR_CANCEL_BEHAVIOUR_AVAILABLE: Ein Hilfsverhalten, das ein anderes Verhalten deaktiviert, sobald eine Bedingung erfüll ist.
- BEHAVIOUR_GET_UTILIZATION_AVAILABLE: Ein Verhalten, das die CPU-Auslastung eines anderen Verhaltens misst und diese per LOG ausgibt. Dazu übergibt man dem Verhalten beim Start die Priorität des zu überwachenden Verhaltens.
- BEHAVIOUR_HW_TEST_AVAILABLE: Dieses Verhalten implementiert die drei Test-Programme Analog-, Digital- und Motor-Test (siehe Inbetriebnahme-Artikel)
