## c't-Projekte - Mailinglisten

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

### AW: [ct-bot] Stackimplementation und Verhalten bot_drive_stack

Absender: Frank Menzel
Datum: So, 16.12.2007 11:48:06
In-reply-to: <CD26B958-21F4-40E7-94A2-319F8E58F3A4@xxxxxxxxxxxxxxx>

    Hallo,
    die Stackimplementation als Array hatte ich auch schon angedacht.
    Allerdings liegt doch hier die Begrenzung des Arrays von Anfang an fest
    oder ? Und ich wollte ja nicht gleich von Anfang an Platz fuer 100 x-
    und Y-Koordinaten reservieren. Und die 100 koentnen ja auch mal
    ueberschritten werden. Oder gibt es ein dynamisches Array ? Wie ist hier
    die Denkweise ?

    Gruß, Frank

    -----Ursprüngliche Nachricht-----
    Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
    [mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Timo
    Sandmann
    Gesendet: Samstag, 15. Dezember 2007 18:40
    An: Entwicklung rund um den c't-bot
    Betreff: Re: [ct-bot] Stackimplementation und Verhalten bot_drive_stack

    Hallo,

    ein Stack für die Bot-Positionen ist auf jeden Fall eine gute Sache.
    Aber warum ist der Stack denn als verkettete Liste implementiert? Mit
    einem einfachen Array liegen push() und pop() doch auch schon in O(1).
    Außerdem haben malloc() und free() auf dem echten Bot viel zu viel
    Overhead, zumal das in diesem Fall auch gar keinen Vorteil bringt, oder?
    Das Speichern / Laden einer Position vom Stack braucht IMHO auch kein
    eigenes Verhalten zu sein, es müssen ja nur einmal die Werte
    gespeichert oder zurückgegeben werden und fertig.
    Wenn man bot_set_stackpos(0,0) aufruft, wird die aktuelle Bot-Position
    gespeichert, aber was ist, wenn ich die Position (0,0) auf den Stack
    pushen will? Da fände ich eine zusätzliche inline-Funktion wie
    push_actual_pos() besser, die einfach bot_set_stackpos(pos_x, pos_y)
    "aufruft" eleganter.

    Alles was "stack" heißt, vielleicht besser in "pos_stack" umbenennen,
    das ist ja nicht der einzige Stack im System. Außerdem wäre es ganz
    gut, die übliche Namenkonvention einzuhalten, also eigene Datentypen
    enden auf _t usw.

    Wäre es nicht auch sinnvoll, die Positionen automatisch zu speichern,
    sobald ein Wechseln von Verhalten A zu Verhalten B auftritt? Wenn man
    jetzt noch die ID des jeweiligen Verhaltens speichert (und 0 für
    selbst gesetzte Positionen z.B.), wäre recht leicht nachzuvollziehen,
    welches Verhalten was veranlasst hat. Das ist vor allem interessant,
    wenn ein Notfallverhalten aktiv wurde. Oder für ein Rollback von
    Verhalten. Mal so als Erweiterungsidee...

    Gruß Timo

    Am 14.12.2007 um 20:47 schrieb Frank Menzel:
    > Hallo,
    > anbei mal ein Patch zur Implementation eines Stacks. Es können
    > Int16-Punktkoordinaten abgespeichert werden mittels push_pos oder von
    > dort mittels pop_pos wieder entnommen werden.
    > Ein kleines Verhalten bot_drive_stack fährt die vom Stack entnommenen
    > Punkte der Reihe nach wieder an mittels dem relativ neuen Verhalten
    > behaviour_goto_pos (Taste 4 auf dem neuen Screen). Wenn der Bot durch
    > die Gegend gefahren wird, so können mittels der Taste 3 die
    > Botpositionen jeweils auf dem Stack gebracht werden. Die Wegstrecke
    > wird
    > somit rückwärts wieder abgefahren. Das Ganze funktioniert bei mir auch
    > bestens mit dem echten bot. Da behaviour_goto_pos nur mit der
    > Motorregelung funktioniert, so muß dies auch eingeschaltet werden.
    > Das Setzen der Koordinaten als auch das Abfahren der Stackpunkte
    > wurden
    > als kleine Verhalten geschrieben und sind somit via Remotecall
    > aufrufbar.
    > Somit kann der Punkt aus der todo-Liste gestrichen werden.
    > Bin schon dabei, den Stack für ein anderes Verhalten zu benutzen, aber
    > dazu in wenigen Wochen...
    >
    > Gruß, Frank Menzel
    > <patch_drive_stack.txt>_______________________________________________
    > ct-bot-entwickler Mailingliste
    > ct-bot-entwickler@xxxxxxxxxxxxxxxxx
    > http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler

    _______________________________________________
    ct-bot-entwickler Mailingliste
    ct-bot-entwickler@xxxxxxxxxxxxxxxxx
    http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler

- Antworten:
  - Re: AW: [ct-bot] Stackimplementation und Verhalten bot_drive_stack
    - From: Timo Sandmann

- Referenzen:
  - Re: [ct-bot] Stackimplementation und Verhalten bot_drive_stack
    - From: Timo Sandmann

- Voriger (Datum): Re: [ct-bot] Stackimplementation und Verhalten bot_drive_stack, Frank Menzel
- Nächster (Datum): Re: [ct-bot] Stackimplementation und Verhalten bot_drive_stack, Timo Sandmann
- Voriger (Thread): Re: [ct-bot] Stackimplementation und Verhalten bot_drive_stack, Timo Sandmann
- Nächster (Thread): Re: AW: [ct-bot] Stackimplementation und Verhalten bot_drive_stack, Timo Sandmann
- Indizes:
  - Datum
  - Thread