c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Frank Menzel
Datum: Mi, 02.05.2007 20:31:38
In-reply-to:
<AC9ED9BF-8958-4285-8D79-907715197774@xxxxxxxxxxxxxxx>
Hallo Timo,
wie heißt denn genau das Standard-Lab im Sim ?
Die Potenzialfeldmethode hat grundsätzlich das Problem, in einem lokalen
Minimum steckenzubleiben wegen der anziehenden und abstoßenden
Potenziale (siehe Literatur). Ohne dynamische Liste ist dies so nicht zu
lösen, die ich auch nicht zur Verfügung habe. Wenn dann noch die hohe
Auflösung und 12m Breite da sind, ist dies Problem schon nicht mehr
lösbar. Ich habe versucht, das Problem mit Auffüllen mit
Hindernispotenziale zu lösen, was aber nicht immer funktioniert.
Irgendwann bei einem bestimmten Maximum breche ich ab und der bot fährt
dann die bereits markierten Pfadpunkte an, die aber irgendow enden und
eigentlich nicht den richtigen Weg darstellen. Dann kommt auch oft noch
dazu, besonders nach Hängenbleiben, dass der Bot denkt, er wäre schon
ganz woanders und dann stimmt die Map überhaupt nicht mehr. Daher gibt's
die Show_labmap, die genau die Hindernissituation der Map darstellt,
auch mit den Potenzialwerten (geht nur sinnvol bei geringer
MCU-Auflösung).
Paremter zum Drehen gibt's viele, schon das Hindernisumfeld in der
Map-Datei kann bei zu großem Wert kleine Durchgänge unmöglich machen
oder Hänger bei zu kleinem Wert verursachen.
Die ifdef's sind von meinen echten Botversuchen übriggeblieben. Habe
versucht, möglichst viel anderes zu deaktivieren wegen dem Platz und die
beiden Defs unten gingen irgendwie nicht einzeln zu deaktivieren-so
gings jedenfalls.
Wie gesagt, die besten Ergebnisse liefert die kleine MCU-Auflösung von
8, da braucht nicht mit Umkreisfeldern grechnet werden sondern direkt
mit dem Nachbarfeld links/ rechts...
Für die vielen anderen Fragen brauche ich erst mal ein bischen Zeit...
Gruß, Frank Menzel
-----Ursprüngliche Nachricht-----
Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
[mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Timo
Sandmann
Gesendet: Mittwoch, 2. Mai 2007 18:55
An: Entwicklung rund um den c't-bot
Betreff: Re: [ct-bot] neues Pfadplanungs-Verhalten nach der Map
Hallo,
Am 30.04.2007 um 21:25 schrieb Frank Menzel:
> Hallo Allerseits,
> lange hat's gedauert und nun ist's soweit: das neue
> Pfadplanungs-Verhalten ! Grundsätzlich stimmt das bereits unten
> Gesagte,
> jedoch gibt's keine dynamische Liste mehr. Die Pfadplanung erfolgt nur
> auf der bereits vorhandenen Karte. Ganz ohne Zugriff auf die Sensoren
> komme ich nun nicht mehr aus und einen eigenen Screen, von dem aus nur
> die Routinen aufgerufen werden können (Tasten 3/4/6), habe ich auch
> definiert. Um auf der vorhandenen Map operieren zu können, habe ich
> den
> Wertebereich der online-Aktualisierung eingeschränkt, so dass der
> hoechste Wert +127 für die Markierung der Pfadpunkte benutzt werden
> kann
> ohne durch die ständige Freiaktualisierung überschrieben zu werden.
> Und
> die "nur" 2cm für das Hindernisumfeld habe ich auch erhöhen müssen,
> damit Abstand gehalten wird. Die Pfadplanung und das Fahren
> funktionieren auch bei hoher Auflösung. Auf dem echten bot klappt's
> auch
> ganz passabel.
> Als Anhang mal der Patch nach den geltenden Richtlinien zum
> Selbstschauen und Staunen :-)
> Hoffe nix übersehen zu haben...
> Gruß, Frank Menzel
ich habe auch noch ein paar Anmerkungen:
Das Verhalten ist eine sehr interessante Sache und ein erster Test im
Sim lieferte auch ein gutes Ergebnis!
Dann habe ich mal folgendes probiert: Das Standard-Lab im Sim,
solve_maze() ausgeführt, als der Bot links unten in der Ecke war, auf
3 gedrückt (Zielpunkt markieren), dann solve_maze() weiterlaufen
lassen, bis der Bot in der oberen Lab-Hälfte ganz links an der Mauer
ist, die die hellere von der dunkleren Hälfte trennt, dort maze
gestoppt und 4 gedrückt. Nun fährt der Bot die nähere Umgebung um
seinen Standort ab, kommt aber aus der Ecke nicht heraus und bleibt
irgendwann einfach stehen, ziemlich in der Ecke, also weit vom per 3
definierten Zielpunkt entfernt. Muss man da vielleicht noch
irgendwelche Parameter im Verhalten anpassen, oder was ist bei dem
Vorgehen falsch / gibt es Randbedingungen, die ich nicht beachtet habe?
Weiterhin hat mich interessiert, wie häufig auf die Map zugegriffen
wird, weil diese auf dem realen Bot auf einer MMC liegen soll und
Zugriffe auf verschiedene Map-(=Speicher-)Positionen dann Pagefaults
auslösen können, deren Auflösung relativ viel Zeit kostet. Erstes
Ergebnis (bei dem o.a. Szenario im Sim mit emulierter MMC gemessen):
Groesse des Caches: 2560 Byte
Auslastung des Caches: 100 %
Seitenzugriffe: 59449077
Seiteneinlagerungen: 1765328
Seitenauslagerungen: 1765323
Seitenzugriffe / s: 265397
Seiteneinlagerungen / s: 7880
Seitenauslagerungen / s: 7880
Cache-Hit-Rate: 97.030521 %
Das sieht sehr nach Seitenflattern aus und erscheint mir zu heftig zu
sein für den realen Bot (wenn es denn repräsentativ ist), aber
vielleicht lässt sich das noch optimieren, indem man mehr auf die
Lokalität achtet beim Map-Zugriff.
Zum Code / Patch habe ich auch noch eine Frage:
Warum "#ifdef PC" bei
#ifdef PC
#define LOG_CTSIM_AVAILABLE /*!< Logging ueber das ct-Sim
(PC und
MCU) */
#endif
und
#ifdef PC
#define DISPLAY_REMOTE_AVAILABLE /*!< Sende LCD Anzeigedaten an
den Simulator */
#endif
? Ist das von eigenen Testfällen aus Versehen übrig geblieben, oder
Absicht?
Ein Hinweis noch, falls man das Verhalten oder die Map allgemein im
Sim benutzt: In der derzeitigen Standard-Einstellung beträgt die
Kantenlänge der Map 4 m, das reicht für das Standard-Lab im Sim nicht
aus, es ist also empfehlenswert, die Map-Größe in include/map.h per
"#define MAP_SIZE 12" auf 12 m zu setzen, dann ist man immer auf der
sicheren Seite.
So weit von mir dazu, intensiver konnte ich mich mit dem Verhalten
leider noch nicht beschäftigen, obwohl es das zweifellos verdient
hätte. :-)
Viele Grüße,
Timo
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler