01.12.2012 Aufrufe

Diplomarbeit - Labor für künstliche Intelligenz - Fachhochschule ...

Diplomarbeit - Labor für künstliche Intelligenz - Fachhochschule ...

Diplomarbeit - Labor für künstliche Intelligenz - Fachhochschule ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!