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 to post
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 to post
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 to post
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 to post
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 to post
Share on other sites

Danke m0d,

 

Nach sowas habe ich schon lange gesucht ;)

Werde ich nachher mal ausprobieren. Mal schauen ob ich das zum laufen bekomme.

Stellt sich dann nur noch die Frage wie ich dann die Oberfläche auf einem normalen PC auswerte usw.

 

Da muss doch der Pi dann als Server konfiguriert werden, oder?

Link to post
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 to post
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 to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...