>> Sourcecode
Unsere Code setzt die Vorteile einer Subsumptionarchitektur ein. Damit kann man
Systeme schnell und effizient regeln. Das Grundgerüst sieht folgendermaßen aus:
if ( kein Hinderniss )
if ( Ball in der Führung )
if ( Tor gerade voraus )
then fahre auf das Tor
else suche das Tor
else suche den Ball
else weiche aus
Viele Funktionen, die oft gebraucht werden, z.B. für die Motorsteuerung, haben wir
in Headerdatein gepackt, um mehr Übersichtlichkeit im Code zu haben. Desweiteren haben wir
über die Dip-Schalter am Aksenboard den auszuführenden Codeteil wählbar gemacht, damit z.B.
für einen einfachen Motortest nicht neu geflasht werden muß.
Der Ausweichalgorithmus vergleicht die Werte beider Seitenabstandssensoren, normiert sie
und lässt den Roboter in die Richtung mit dem meisten Platz fahren.
Um einem Oszillieren in den Ecken entgegenzuwirken, messen wir das Verhältnis zwischen Dreh-
und Geradeausfahren. Erkennt er ein Feststecken, fährt er zurück und dreht sich.
Dies erkennt allerdings nicht, ob der Roboter irgendwo festhängt und sich deswegen nicht
bewegt. Am effektivsten und zuverlässigsten ließe sich das mit einer Lichtschranke messen,
die am Antriebsrad sitzt. Leider ließ sich das bei uns nicht so einfach nachrüsten, weswegen
wir eine Softwarelösung wählten. Hierbei prüfen wir, ob die Sensorwerte längere Zeit
größtenteils unverändert bleiben und versuchen in eine zufällig gewählte Richtung auszuweichen.
|