User manual

RP6 ROBOT SYSTEM - 4. Programmierung des RP6
An diesem Beispiel sieht man, wie die beiden Funktionen benutzt werden können:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase();
setLEDs(0b111111);
mSleep(1500);
powerON(); // Encoder und Motorstromsensoren anschalten!
while(true)
{
setLEDs(0b100100);
move(60, FWD, DIST_MM(300), true); // 30cm Vorwärts fahren
setLEDs(0b100000);
rotate(50, LEFT, 180, true); // um 180° nach links drehen
setLEDs(0b100100);
move(60, FWD, DIST_MM(300), true); // 30cm Vorwärts fahren
setLEDs(0b000100);
rotate(50, RIGHT, 180, true); // um 180° nach rechts drehen
}
return 0;
}
Hier fährt der Roboter zunächst 30cm Vorwärts, dreht dann um 180° nach links, fährt
die 30cm zurück, dreht um 180° nach rechts und das Spiel beginnt von neuem. Wür-
de man den blocking Parameter von allen Funktionen false anstatt true setzen, würde
das Programm überhaupt nicht funktionieren, da aus der Main Funktion nicht die
task_motionControl Funktion aufgerufen wird und alle Funktionsaufrufe direkt hinter-
einander stehen. Ändert man auch nur einen der blocking Parameter in false um, wird
das Programm ebenfalls nicht mehr wie gewünscht funktionieren es wird dann eine
der Bewegungsphasen komplett übersprungen.
Für solche rein sequentiellen Abläufe muss man den blocking Parameter also immer
auf true setzen!
Man kann sogar rudimentär auf Hindernisse und andere Dinge reagieren wenn der
blocking Parameter auf true gesetzt ist nämlich über die Event Handler. Diese wer-
den trotzdem aufgerufen! Das klappt aber nicht unbedingt für komplexere Problem-
stellungen.
Allgemein sollte man wenn man Hindernissen ausweichen, Befehle von einem Master
Controller interpretieren oder ähnliche Dinge erledigen will, den non-blocking Modus
verwenden, den Parameter also auf false setzen.
Wie oben schon erwähnt, regeln die move/rotate Funktionen dann unabhängig vom
restlichen Programmablauf die Fahrt des Roboters.
Auf der CD finden sich einige umfangreichere Beispiele zu diesen Funktionen.
- 104 -