|
 |
 |
 |
|
|
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: Timo Sandmann
Datum: Mi, 02.05.2007 18:55:42
In-reply-to:
<000001c78b5d$62de6570$fe78a8c0@mexpnew>
References:
<000001c78b5d$62de6570$fe78a8c0@mexpnew>
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
|
|
|