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
Lesezeichen