Hi Harato

Ja das siehst du komplett richtig. Der Roboter muß immer genau wissen wo er sich befindet und in welche Richtung er fährt. Aber das Problem hat man leider bei jedem Kartenbasiertem Ansatz. Falls du eine idee hast, wie man SLAM mit einem Microcontroler ordentlich implementieren kann dann her damit. Ich glaube aber auch, dass es genau daran scheitert.

Eins hast du aber schlecht verstanden. Die Methode bringt immer etwas auch wenn man mehrere Räume hat... macht ja kein Unterschied zu anderen Methoden. Es ist einfach nur eine inteligente Methode eine Rasterkerte effektiv abzuspeichern. Aber da hat harato wieder recht, dass es nicht mehr ganz so viel bringt wie beim staubsaugen, weil du die Hindernisse im Raum nicht dazu br.ingen kannst quadratisch zu sein Aber sobald man irgendwie größere Flächen hat, die als belegt gelten bringt es wieder ein kleines bischen speicherersparniss.

Also für dein Problem gilt, dass du 2 Unterschiedliche Sachen speicher möchtest. Zum einen wo der Roboter war und zum einem wo die Wände / Hindernisse sind um diese seperat abzuspeichern. Naja die einfache methode währe es einfach 2 solcher Baumstrukturen zu haben (eine für den Raum/Hindernisse und eine für wo der Robo schonmal war).... eine andere währe es, dass du in den Ästen abspeicherst ob es sich um eine Wand oder um ein Hinderniss handelt. Dann wird es besser aber für dich sicherlich schwer zu programieren sein, was in den Knoten passiert. In jedem Knoten kann jetzt drinstehen, dass ein Quadrat :
-Völlig frei
-Völlig besetzt
-Komplett abgefahren
-teilweise besetzt und teilweise abgefahren
-teilweise frei teilweise abgefahren
-teilweise frei, teilweise abgefahren, teilweise besetzt
und alle weitere kombinationen ist..

Damit kannst du dann erreichen, dass du weniger Prozessorleistung benötigst um zu gucken, wo der Roboter den noch hinmuss, weil du bei teilweise besetzt und teilweise abgefahren weißt, dass du durch dieses Feld zwar durchfahren kannst, es aber nicht mehr durchsuchen mußt, wenn du prüfst wo du noch nicht gesaugt hast. Und trotzdem könntest du später beim abspeicher wissen wo dein roboter die Hindernisse gefunden hat und diese seperat abspeichern und beim nähsten mal wiederverwenden.

Wenn du die Hindernisse und die Information wo du warst einfach seperat abspeicherst hättest du aber deutlich weniger programieraufwand und es würde auch funktionieren, wenn auch etwas langsamer und etwas speicheraufwendiger.


Meine Frage ist, wie willst du den Roboter so genau im Raum lokalisieren? Du weißt hoffentlich, dass man sich auf die Mechanische odometrie nicht verlassen kann... besonders bei Drehungen (Kompas würde schon was helfen). Und GPS ist sicherlich zu grob für dich. Ich schätze du kommst bei einem Microkontroller nicht drum herum ihm irgendwelche markierungen auf den boden zu legen um die odometrieabweichungen zu kompensieren.

Tompcat