Jump to content

Autonomer Roboter mit Linienverfolgung usw.


Recommended Posts

Hallo Tinkerforge-Gemeinde!

 

wollte euch mal kurz mein anstehendes Projekt für meine Seminarfacharbeit zeigen.

 

Thema ist: "Planung, Bau und Programmierung eines C# gesteuerten autonomen Roboters mit Hilfe von Tinkerforge"

 

Ich bin bis jetzt auch gut vorangekommen, hätte nun aber ein paar Fragen zur Linienerkennung.

Habe (wie man hoffentlich auf den Bildern erkennen kann) 3 Line-Sensors auf der Unterseite des Fahrgestells montiert, und lasse diese jetzt mit Hilfe des Threshold-Callbacks auslesen.. Nun habe ich aber nur eine einfach if Abfrage programmiert. Bei der, der Rover ziemlich "unflüssig" die Linie entlangfährt (leider per WLAN auch nur mit halber Geschwindigkeit, da sonst die Befehle nicht sofort verarbeitet werden, Besserung erhoffe ich dann durch den RED-Brick! ;) ). Und nun währe die erste Frage ob ihr eine Formel kennt, welche die Differenz oä. von den Line-Sensors auswertet und eine "flüssige" Erkennung der Linie liefert.

 

Verbaut sind bisher:

1 Step-Down-Power-Supply

2 Master-Bricks

2 DC-Bricks

1 WIFI-Extension

3 Line-Sensors

 

 

Hier mein bisheriger Code:

public static void Linie()

    {

 

      short zahl = ipcon.GetConnectionState();

      if (zahl !=1)  ipcon.Connect(HOST, PORT);

 

      line_left.SetDebouncePeriod(100);

      line_middle.SetDebouncePeriod(100);

      line_right.SetDebouncePeriod(100);

           

      line_left.ReflectivityReached +=line_left_ReflectivityReached;

      line_middle.ReflectivityReached += line_middle_ReflectivityReached;

      line_right.ReflectivityReached += line_right_ReflectivityReached;

 

      line_left.SetReflectivityCallbackThreshold('<', 1300, 0);

      line_middle.SetReflectivityCallbackThreshold('<', 1300, 0);

      line_right.SetReflectivityCallbackThreshold('<', 1300, 0);           

        }

 

private static void line_middle_ReflectivityReached(BrickletLine sender, int reflectivity)

        {

            if (reflectivity < 100)

            {

                movement.stop();

                return;

            }

            movement.forward(25000, 0, 3000);

        }

 

private static void line_right_ReflectivityReached(BrickletLine sender, int reflectivity)

        {

            if (reflectivity < 100)

            {

                movement.stop();

                return;

            }

            movement.left(25000, 0, 3000);

        }

 

private static void line_left_ReflectivityReached(BrickletLine sender, int reflectivity)

        {

            if (reflectivity < 100)

            {

                movement.stop();

                return;

            }

            movement.right(25000, 0, 3000);

        }

 

Später soll dann auch noch die Umgebung per IR-Sensorik abgetastet werden, vllt. gibt es dafür ja eine ähnliche Lösung.

 

Vielen Dank schonmal im Vorraus ;)

bild001.jpg.65be0c0269b2fcc2d1fe07a96c8eec3a.jpg

bild002.jpg.d01454007997083457589c66d010cb76.jpg

bild003.jpg.b6fa3b492d18b2be490cd4443a8c937d.jpg

Link zu diesem Kommentar
Share on other sites

Hallo knotti2010,

 

ich kann dir glaube ich jetzt nicht weiterhelfen, aber ich habe ein paar Fragen:

 

- Wo hast du das "Grundteil" also den Unterbau mit den Ketten her und was kostet der?

- Warum packst du nicht einfache ein Raspberry Pi mit auf das Gerät? Dann musst du es nicht mehr mit WLAN ansprechen und hast so einen Ausfallfaktor weniger.

 

Wegen der Umgebungsabtastung mit IR-Sensorik schau mal hier nach.

 

Gruß,

Nemo

Link zu diesem Kommentar
Share on other sites

http://www.conrad.de/ce/de/product/191152/Arexx-Fahrgestell-Robby-RP5RP6-Roboter?ref=searchDetail

Sieht mir sehr nach diesen unterbau aus. Ich verwende auch diesen Unterbau und mir ist leider der Raspi auf dem Roboter zu "schwer", da ich dann größere Akkus darauf Packen müsste und dass gestell sich nicht mehr bewegen wollte.

 

@knotti2010

Welche Akkus verwendest du außer die Normalen AAA zum Motorberieb?

Link zu diesem Kommentar
Share on other sites

Den Unterbau habt ihr ja schon gefunden. Kostet ca. 30-40 Euro.

Das einzigste was mich vom Pi abhält ist eigentlich die Tatsache das ich mich damit nur sehr gering auskenne und auch nur die Programmiersprache C# kann.

Ein nächstes Problem damit wäre dann wohl die Windows Anwendung welche ja den Roboter steuern soll und die Daten der Sensoren (zB Temperatur o. Umgebungshelligkeit) auslesen soll.

 

Zu der Problematik Akku hab ich mir auch schon einen Kopf gemacht ich schwanke noch zwischen 6 AA Akkus mit ca. 2600 mAh oder einen Akku Pack wie es auch im Modellbau eingesetzt wird.

 

Link zu diesem Kommentar
Share on other sites

kleiner Hinweis, du kannst C# auch auf dem Pi mittels Mono (http://www.mono-project.com/) verwenden. Mono ist als Debian-Paket verfügbar und kann mit

apt-get

installiert werden. Bei mir läuft z.B. die Erfassung von Wetterdaten auch mit C# auf dem Pi.

 

Probleme hatte ich anfangs mit der Hard Float Version von Raspbian. Mit der Soft-Float Installation läuft jedoch alles problemlos.

Link zu diesem Kommentar
Share on other sites

@m0d  Achtung aktuell ist mono auf dem Pi irgendwie nicht frunktionsfähig zumindest bei Oberflächen wirft Mono Fehler. Als Tipp wird immer wieder gesagt man sollte Arch Mono (?) verwenden dass hat den Bug nicht.

Ich hab dann nicht viel weitergeforscht, falls jemand das Arch benützt oder mono zum laufen bekommt würde ich mich über eine Info wie er es geschafft hat freuen ^^

Link zu diesem Kommentar
Share on other sites

Wie bereits erwähnt gibt es Probleme mit Hard Float, bzw. der HF-Version von Mono. Diese äussern sich auf dem Pi z.B. durch die Ausgabe eines falschen Datums und können wie folgt reproduziert werden:

csharp> Console.WriteLine(DateTime.Now);   
0/735308/0001 8:18:48 PM
csharp> 

 

Bei der Soft Float Version von Raspbian konnte ich bisher keine Probleme feststellen.

 

Mittlerweile gibt es jedoch auch eine funktionsfähige HF-Version von Mono http://www.raspberrypi.org/phpBB3/viewtopic.php?f=34&t=62496

 

--m0d

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...