Diplomarbeit - Labor für künstliche Intelligenz - Fachhochschule ...
Diplomarbeit - Labor für künstliche Intelligenz - Fachhochschule ...
Diplomarbeit - Labor für künstliche Intelligenz - Fachhochschule ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
4 Roboterprogrammierung<br />
Die Funktionen gehören zur AKSEN-Bibliothek und können in den Tabellen 4.1, 4.2<br />
und 4.3 nachgeschlagen werden. Prozesse müssen entweder in einer Endlosschleife laufen<br />
oder beendet werden. Da der Main-Prozess keine weiteren Aufgaben zu erledigen hat,<br />
wird er in der Zeile 8 beendet.<br />
Der Prozess motor command in Zeile 2 ist dazu da, die globale Variable command zu<br />
überwachen und die Motoren, je nach Inhalt der Variablen, anzusteuern.<br />
1 int command;<br />
2<br />
3 void motor_command(void){<br />
4 while(1){<br />
5 switch(command){<br />
6 case Anweisung1: motor_pwm(0,10);<br />
7 motor_pwm(1,10);<br />
8 break;<br />
9 case Anweisung2: motor_pwm(0,10);<br />
10 motor_pwm(1,0);<br />
11 break;<br />
12 case Anweisung3: motor_pwm(0,0);<br />
13 motor_pwm(1,0);<br />
14 break;<br />
15 }<br />
16 }<br />
17 }<br />
Der Prozess arbitrate in Zeile 6 der Main-Funktion dient, wie aus dem Namen hervorgeht,<br />
zum Schlichten. Das bedeutet, Meldungen der anderen Prozesse zu empfangen und<br />
je nach Priorität einer konkreten Anweisung zuzuordnen.<br />
1 void arbitrate(void){<br />
2 while(1){<br />
3 if(verhalten1_flag == 1)command = command_Anweisung1;<br />
4 if(verhalten2_flag == 1)command = command_Anweisung2;<br />
5 if(verhalten3_flag == 1)command = command_Anweisung3;<br />
6 }<br />
7 }<br />
Die Verhaltensstruktur ist mit einer Folge von If-Anweisungen dargestellt. Je tiefer sich<br />
die Anweisung befindet, desto höher ist die Priorität. Die globale Variable command<br />
wird entsprechend überschrieben.<br />
24