## c't-Projekte - Mailinglisten

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

### Re: [ct-bot] neues Verhalten bot_drive_line_shortest_way...

Absender: Timo Sandmann
Datum: Mo, 05.01.2009 23:31:10
In-reply-to: <000001c965ae$2c0f39c0$0300a8c0@mexpnew>
References: <000001c965ae$2c0f39c0$0300a8c0@mexpnew>

    Hi,

    Am 24.12.2008 um 10:58 schrieb Frank Menzel:

>     Hallo,

> `in letzter Zeit ist es etwas scheinbar etwas ruhiger in der` `Mailingliste`

>     geworden.

`ja, ich wollte eigentlich noch vor dem Weihnachtsurlaub ein Verhalten` `vorstellen, das die CPU-Auslastung des Bots während der Ausführung` `eines anderen Verhaltens misst / ausgibt und außerdem auch die Live-` `Map-Anzeige für den echten Bot fertigstellen, da hat aber leider die` `Zeit nicht ganz gereicht. Das kommt dann demnächst.`

>     So möchte ich pünktlich zu Weihnachten diese Ruhe etwas stören
>     und mein neues Verhalten bot_drive_line_shortest_way vorstellen.
>     Hier die Beschreibung laut Programmtext:
>     /*!
>     * @file    behaviour_drive_line_shortest_way.c
>     * @brief   Linienverfolger, der an Kreuzungen eine bestimmte
>     Vorzugsrichtung einschlaegt (links) und diesen Weg weiterverfolgt, bis
>     das Ziel

> `* (gruenes Feld an Wand) gefunden ist; Linien muessen immer` `an`

>     einem gruenen Feld ohne Hindernis enden, damit der botein Ende erkennt
>     und
>     *          umdrehen kann

`Hier wäre es schön, wenn das auch ohne die grünen Felder ginge, also` `dass der Bot selbst erkennt, wenn er sich im 360 Grad gedreht hat.`

>     *          Die Kreuzungen und der eingeschlagene Weg werden auf dem
>     Stack vermerkt, Wege die nicht zum Ziel fuehren vergessen; Am Ziel
>     angekommen
>     *          steht im Stack der kuerzeste Weg; Es kann nun via Display

> `auf dem kuezesten Weg zum Ausgangspunkt zurueckgefahren werden oder` `der`

>     Bot wieder
>     *          manuell an den Start gestellt werden und das Ziel auf
>     kuerzestem Weg angefahren werden
>     * @author Frank Menzel (Menzelfr@xxxxxx)
>     * @date    21.12.2008
>     */

`Sehr cooles Verhalten :-) Werde ich morgen mal ausprobieren und` `genauer anschauen!`

>     Anbei auch der Parcour, mit dem das Verhalten funktioniert.

`Finde ich den nicht, oder ist der irgendwo in den Weiten des Internets` `hängengeblieben?`

>     Auf dem zum
>     Verhalten gehörenden Screen kann mit Taste 5 (GoLine) das Verhalten
>     gestartet werden, der Bot fährt vorwärts zur Linie und weiter via

> `Linienverfolger. An einer Kreuzung angekommen schlägt er den linken` `Weg` `ein und erforscht so alle Wege und Möglichkeiten zum Ziel zu kommen.` `Das`

>     Ziel ist das rechte grüne Feld an der Wand (Zieldefinition Grün vor
>     Wand). Eine Linie endet an einem grünen Feld, wo der bot dann umkehrt
>     und zur Kreuzung zurückfährt und dann wieder den linken Weg nimmt. Die
>     Kreuzungen und die relativen Pfadabbiegungen werden auf den Stack
>     gespeichert. Eine Kreuzung, wo alle Wege ins Nichts führen, wird
>     vergessen, da diese irrelevant ist zur Zielfindung. So am Ziel
>     angekommen stehen im Stack nur noch alle Kreuzungen und Richtungen
>     direkt zum Ziel, der kürzeste Weg ist somit gefunden.

`Ich habe jetzt noch nicht in den Code geschaut oder das Verhalten` `ausprobiert, aber nur mal nach der Beschreibung hier: Warum sollte das` `der kürzeste Weg sein? Ich meinte z.B. in folgendem Parcours:`

    Ziel
         |
    ----
    |    |
    ----
         |
    Start

`Wenn ich die Beschreibung richtig verstehe, fährt der Bot jetzt` `linksherum den "Umweg" zum Ziel. Das ist aber doch dann nicht der` `kürzeste Weg?`

>     Falls auf dem Weg

> `dorthin die Linie verloren wird, kann der Bot manuell wieder richtig` `auf`

>     die Linie gesetzt werden und mit Taste 6 (Continue) das Verhalten an
>     dieser Stelle weitergeführt werden.
>     Am Ziel kann der Bot den nun feststehenden kürzesten Weg wieder zum
>     Ausgangspunkt zurückfahren via Taste 9 oder man stellt den Bot manuell
>     wieder an den Ausgangspunkt und mit Taste 8 geht’s direkt wieder zum
>     Ziel, d.h. an den Kreuzungen wird in die richtige Richtung direkt zum
>     Ziel abgebogen.
>     Ich habe Grün im Programm festgelegt, weil diese Farbe gut im Simu
>     darstellbar ist, kann aber auf die eigene gewünschte Farbe im Prog
>     festgelegt werden. Als Ziel gilt diese Farbe und dahinter Wand.

> `Als Erweiterungen könnte man später auch die die T-Kreuzungen` `erkennen,`

    Das wäre auf jeden Fall sehr sinnvoll :-)

>     würde aber hier erst einmal höheren Aufwand bedeuten. Auch könnte man

> `den kürzesten Weg, der sich ja bei Zielankunft im Stack befindet,` `einem` `2. Bot senden via bot2bot-Kommunikation (wenn dies mal so möglich` `ist),` `der sich am Startpunkt des 1. Bots befindet und nun den Weg des 1.` `Bots`

>     abfährt.

    Gute Idee.

>     Nach Abfahren des Stacks (vorwärts oder rückwärts) ist hier der

> `Stack wieder leer, so könnte man auch verlustlos den abfahren um` `diesen`

>     zu erhalten bzw. die Kreuzungen einfach erneut pushen.

`Vielleicht wäre eine Funktion zum Klonen eines Positionsstacks hier` `praktisch? Einfach eine Kopie erstellen, die dann den Weg nicht` `vergisst, weil sie nicht benutzt wird. Will man noch mal fahren, macht` `man wieder eine Kopie usw.`

    Grüße,
    Timo

- Referenzen:
  - [ct-bot] neues Verhalten bot_drive_line_shortest_way...
    - From: Frank Menzel

- Voriger (Datum): [ct-bot] neues Verhalten bot_drive_line_shortest_way..., Frank Menzel
- Nächster (Datum): Re: [ct-bot] neues Verhalten bot_drive_line_shortest_way..., Timo Sandmann
- Voriger (Thread): [ct-bot] neues Verhalten bot_drive_line_shortest_way..., Frank Menzel
- Nächster (Thread): Re: [ct-bot] neues Verhalten bot_drive_line_shortest_way..., Timo Sandmann
- Indizes:
  - Datum
  - Thread