## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### AW: [ct-bot] neues Pfadplanungs-Verhalten nach der Map

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

- Antworten:
  - Re: AW: [ct-bot] neues Pfadplanungs-Verhalten nach der Map
    - From: Timo Sandmann

- Referenzen:
  - Re: [ct-bot] neues Pfadplanungs-Verhalten nach der Map
    - From: Timo Sandmann

- Voriger (Datum): Re: [ct-bot] neues Pfadplanungs-Verhalten nach der Map, Timo Sandmann
- Nächster (Datum): AW: [ct-bot] neues Pfadplanungs-Verhalten nach der Map, Frank Menzel
- Voriger (Thread): Re: [ct-bot] neues Pfadplanungs-Verhalten nach der Map, Timo Sandmann
- Nächster (Thread): Re: AW: [ct-bot] neues Pfadplanungs-Verhalten nach der Map, Timo Sandmann
- Indizes:
  - Datum
  - Thread