Roboterfußball

Verfolgen einer Farbmarkierung

Mit einem C++-Programm soll ein Roboter in der Simulation so gesteuert werden, dass er eine Farbmarkierung verfolgt. Dafür sind am Roboter drei Farbsensoren angebracht, die den Farbwert eines Pixels unter dem Sensor liefern.

Herangehensweise:
  • Herunterladen des Servers und der C++-Komponenten von hier.
  • Das CPPBotExample muss mit wx-devcpp geöffnet und die Funktion onLoop mit dem Steuercode ausgestattet werden.

Inbetriebnahme:

  • Starten Sie zunächst den BotServer und öffnen Sie das beigefügte Projekt.
  • Wählen Sie danach das Tab Simulation im Ansichtsbereich.
  • In der Szenarienauswahl (Oberkannte vom Tab) muss "Linienfeld" gewählt werden.
  • Klicken Sie anschließend bei "Server" auf "Empfangen".
Wenn Sie CPPBotExample compilieren, erhalten Sie ein Windows-Programm. Dieses nimmt nach Betätigung der "Verbinden"-Tasten Kontakt zum Teamserver (Hautpanwendung) auf. Wenn Sie einen Bot angefordert und auf "fahren..." geklickt haben, begibt der Bot sich in Bewegung.

Einbau des Steuerungscodes:

Sobald der Simulationsvorgang durch den Klick auf "fahren..." gestartet wurde, wird zyklisch die Funktion onLoop ausgeführt.
Sie sollten daher keine Schleife in Ihrem Programm einsetzen, um das Programm nicht zu blockieren.!
Zur Steuerung des Roboters innerhalb der onLoop-Funktion stehen Ihnen vier wesentliche Funktionen zur Verfügung:
drive(int bot, int rightWheel, int leftWheel);
Mit dieser Funktion kann der Roboter gefahren werden. bot ist die Nummer des Roboters (die Software ermöglicht das Steuern vonbis zu 8 Robotern). Dieser Wert ist mit 0 zu belegen, wenn Sie das vorgegebene Beispiel verwenden, in dem der erste Bot zum Einsatz kommt. Die Räder lassen sich in zwölf Stufen, getrennt voneinander ansteuern. Der Funktionsaufruf:
drive(0, 1, 1);
lässt den Bot geradeaus fahren. Der Aufruf
drive(0, -1, 1);
bewirkt eine Drehung auf der Stelle.

Die Funktionen:
int getRedPhotoValue(int bot, int sensor);
int getGreenPhotoValue(int bot, int sensor);
int getBluePhotoValue(int bot, int sensor);
liefern jeweils den roten, grünen bzw. blauen Farbwert, der von einem Sensor erfasst wurde. Wieder spezifiziert "bot" die Nummer des Roboters. Mit "sensor" wird der gewünschte Sensor angesprochen. Da es drei Sensoren geben kann, wird mit 0 der 1., mit 1 der 2. und mit 2 der 3. Sensor angesprochen.
Als Rückgabewert liefern die Funktionen die Intensität des jweiligen Farbkanals in einem Wertebereich von 0-255.

Die Funktion onLoop wird so lange ausgeführt, wie sie durch return true; mit "wahr" beendet wird, andernfalls wird der Aufruf von onLoop durch die Steuerbibliothek eingestellt.
Hauptseite
Download
Anleitungen
Lehrveranstaltung
Verschiedenes
(ID: 676; 2009)