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.
6.6 Linienverfolgung<br />
6 Tutorial Teil 2: Programmierung eines AMS<br />
Besitzt der Roboter entsprechende Sensoren zum Erkennen einer Linie, soll das folgende<br />
Programm ihn dazu veranlassen, dieser zu folgen.<br />
1 void follow_line()<br />
2 {<br />
3 unsigned int SCHWELLE = 180;<br />
4<br />
5 while(1)<br />
6 {<br />
7 unsigned int links = analog(5);<br />
8 unsigned int mitte = analog(6);<br />
9 unsigned int rechts = analog(7);<br />
10<br />
11 if(mitte > SCHWELLE) command = MOVE; //beide Motoren an<br />
12 else if(links > SCHWELLE) command = LINKS; //nur Motor links an<br />
13 else if(rechts > SCHWELLE) command = RECHTS; //nur Motor rechts an<br />
14 //trifft nichts zu, behalte letzte Kommando bei<br />
15 }<br />
16 }<br />
6.7 Verhalten avoid collision<br />
In diesem Abschnitt soll der Quellcode vorgestellt werden der festlegt, wie das Verhalten<br />
avoid collision implementiert ist. Wieder ist zu sehen, dass konkrete Konfigurationsbefehle<br />
herangezogen werden, hinter denen die entsprechende Belegung des AKSEN-Boards<br />
steht.<br />
void avoid_collision(void){<br />
unsigned char SCHWELLE = 80;<br />
unsigned char motor_links = get_motor_links();<br />
unsigned char motor_rechts = get_motor_rechts();<br />
unsigned char wand1 = get_wand1(); //erster Wandsensor<br />
unsigned char wandN = get_wandN(); //Anzahl der Wandsensoren<br />
unsigned char i;<br />
while(1){<br />
60