Absender: Timo Sandmann
Datum: Di, 07.09.2010 20:51:07
In-reply-to:
<20100907173631.63750@xxxxxxx>
References:
<AEC150FE-E322-4CBE-A1B5-47666F5BC251@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33A5FD1D9B3@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33D3F0510D7@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <681CE81A-8241-4207-BC75-36F15F444089@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33D47499098@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <630E0098-34A8-4C3D-B4B7-6ED89C60E710@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33D474992E7@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <B88AF856-B9EF-4454-8D15-5BC8DD6380D8@xxxxxxxxxxxxxxx> <20100907173631.63750@xxxxxxx>
Hallo Frank, Am 07.09.2010 um 19:36 schrieb Frank Menzel: > Hallo Timo, > muss doch noch mal was rückfragen, da die Doku nicht recht dazu was sagt: Mit dem einen Parameter kann man steuern, ob die normalen Positionswerte x_pos, y_pos mit den globalen Koordinatenwerten überschrieben werden. OK, und was dann? Diese Werte liefert doch nur das Scan-Verhalten selbst. D.h. wenn der Bot weiterfährt, sind in diesen Variablen doch wieder die normalen lokalen Positionen zu finden, wie der Encoder bzw. Maussensor diese liefert. nein, das Verhalten überschreibt x_pos, y_pos, heading, x_enc, y_enc, heading_enc, x_mou, y_mou und heading_mou (schau mal in den Code des Verhaltens ab Zeile 253). Dadurch rechnet der Odometrie-Code (sensor_update()) ab jetzt mit der neuen Position: fährt der Bot beispielsweise nun ein Stück vorwärts, wird die entsprechende Strecke zur Position addiert, so dass x_pos, y_pos usw. jetzt letzte Lokalisierungsposition + gefahrene Strecke ist. > Erst nach Aufruf des Scanverhaltens werden diese wieder mit den globalen überschrieben-oder täusche ich mich? Eigentlich müßte nach Einschalten des Parameters zum Überschreiben alles über die globalen Positionswerte laufen bzw. dann eine Konverterroutine diese umwandeln oder bin ich (wieder) auf dem Holzweg? Was meinst du mit "globalen Positionswerten"? x_pos, y_pos usw. sind einfach globale Variablen, die vom Verhalten aktualisiert werden mit der berechneten Position. > Gibt es schon eine Konverterroutine? Wenn ich via bot_goto_pos die Koordinaten des globalen Koordsystems anfahren will, bräuchte ich doch eine solche oder? Warum, was willst Du hier konvertieren? Nach einem Scan kennt der Bot seine Weltkoordinaten und verwendet diese. Natürlich wird die Position dann wieder ungenauer, je weiter der Bot fährt (Koppelnavigation). Sobald aber ein neuer Landmarken-Scan gemacht wird, ist die Position wieder genauer bekannt. Jetzt fährt der Bot wieder irgendwo hin, berechnet dabei die Position wieder nur mit den Radencodern / Mauswerten, dabei wird sie wieder ungenauer und immer so weiter. Das einzige Problem, was ich da noch sehe, betrifft die Map: Wenn man nicht laufend neu lokalisiert, um die Position anzupassen, kann man die Karte vergessen, weil nach einem Positionsupdate nichts mehr zusammen passt, falls die korrigierte Position stark von der Bisherigen abweicht. Ebenso darf man erst mit der Kartierung beginnen, wenn mindestens einmal das Lokalisierungsverhalten gelaufen ist, um die globale Position zu ermitteln. Gruß, Timo