PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino Mega als Roboter für Map Erstellung



toto1975
01.09.2016, 16:18
Hallo in die Runde,

ich würde gerne meinen Arduino nutzen um einen Roboter frei in der Wohnung fahren zu lassen. Der Arduino soll im Prinzip zu erst verschiedene Werte (Temperatur, Luftfeuchtigkeit, usw) messen und an mein Openhab System per Funk senden. Dies habe ich auch schon mit festen Messpunkten realisiert. Jetzt mein größtes Problem was mir bei der Planung am meisten Kopfschmerzen bereitet. Wie kann ich den Roboter von Punkt A nach Punkt B fahren lassen?

Ich habe hier auch schon viele Ideen gelesen allerdings fehlt mir der Ansatz bzw. wie fange ich an.

Ein zweidimensionales Array also
int x[100][100]; finde ich zu wenig.

Ich habe es mir so vorgestellt: Startpunkt ist immer x=0 und y=0 mit US-Sensor soll dann erst mal der Raum gescannt werden. Jetzt muss das Raster bzw Array um die gescannte Fläche vergrößert werden und alle Hindernisse in das Array eingetragen werden aber wie? Ich kann mit meinen Arduino nur ein Array in der Größe von int x[122][122] erzeugen bei größeren Zeigt mir die IDE einen Fehler.

Wie kann ich mit US-Sensoren eine Map erzeugen und auf die Daten wieder zurück greifen? Ist der Arduino dafür überhaupt geeignet?

Ich könnte auch die Daten per Funk an einen PC senden der so oder so 24/7 läuft. Hier aber auch die Frage wie? Muss der PC dann den Arduino "steuern"?

Also noch viele Fragen :-)

Gibt es irgendwo ein gut dokumentiertes Projekt? Also welcher Motor, welche eventuelle Zusatzsoftware gibt es?

Ich bin für jeden Tipp dankbar

Viele Grüße
Torsten

HaWe
01.09.2016, 18:11
der Mega hat dafür viel zu wenig Speicher. rechne doch mal kurz mit:
int x [100][100] hat je 16 bit, also 2 bytes.
heißt:
100*2*100*2 = 4x10000 = 40 kByte

Der Mega hat aber nur 8 kByte RAM. Selbst wenn du pro Speicherzelle nur 1 Byte statt 1 Int nimmst, sind 100x100 = 10000 =10 kByte immer noch zuviel, und dein Navigations-Code braucht ja auch noch etwas Platz im RAM!

Da musst du entweder den array viel kleiner machen oder einen DUE stattdessen verwenden, denn der hat 92 kByte RAM und kann auch 16x so schnell rechnen, was für map+explore wegen der dann viel benutzten Float-Arithmetik sehr wichtig ist.
Wenn du noch größere Maps brauchst, dann musst du wohl einen Raspberry Pi oder einen Beaglebone Blue/Black nehmen, der hat 1GB bzw. 500 MB RAM.

Die Map kannst du zwischendurch auf einer SD Karte im Arduino speichern (gibt es als Zubehör, 2-3 EUR für den SD-Slot, 5-10 EUR für die SD), das ist kein Hexenwerk. Im Raspi steckt sie immer schon mit drin.

ps,
US-Sensoren allein reichen ntl nicht, du brauchst irgendwelche Referenz-Baken oder Odometrie und/oder ein IMU-/Gyro-Sensor o.ä. um die Position und die Bewegung zu erfassen.
hier habe ich mal so etwas gemacht, erst mit einem NXT, dann mit einem Arduino, aber damals noch ohne Karte:

http://www.mindstormsforum.de/viewtopic.php?f=70&t=6746&p=68087