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 alsofinde ich zu wenig.Code:int x[100][100];
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
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/viewto...t=6746&p=68087
Geändert von HaWe (01.09.2016 um 20:47 Uhr)
Lesezeichen