## c't-Projekte - Mailinglisten

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

### RE: AW: [ct-bot] bot_drive_area() -> überarbeitet

Absender: Menzel, Frank IT-OO4
Datum: Mo, 08.09.2008 16:06:21
In-reply-to: <6EDABE0C-5D49-4387-BCB0-222642293CE8@xxxxxxxxxxxxxxx>
References: <000001c91025$ac75b780$0200a8c0@mexpnew> <1A701016-4860-4F34-A1BE-A8BF5D776141@xxxxxxxxxxxxxxx> <48C139945BA47F4DB4DE05DF62CD57AA03C51C0CFC@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <6EDABE0C-5D49-4387-BCB0-222642293CE8@xxxxxxxxxxxxxxx>

    Hallo Timo,

    zu dem Punkt: "dass er ganz plötzlich um 10 Grad
    schräg fährt"
    ist wohl nicht ganz so angekommen wie gewollt: Das ist kein Fehler, sondern er richtet sich auf die kleine Strecke links oben aus und will diese anfahren, da dies die letzte Strecke des Stacks ist, die er sich gemerkt hatte. Er fährt via obstacle und erkennt mit den Sensoren nicht die Wand, da der Winkel zu schräg ist. Und die Map wird auf eine solche lange Strecke voraus nicht geprüft auf Wegfreiheit.

    Mit freundlichen Grüßen / best regards
    Frank Menzel

    -----Original Message-----
    From: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx [mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] On Behalf Of Timo Sandmann
    Sent: Monday, September 08, 2008 3:38 PM
    To: Entwicklung rund um den c't-bot
    Subject: Re: AW: [ct-bot] bot_drive_area() -> überarbeitet

    Hi,

    Am 08.09.2008 um 08:21 schrieb Menzel, Frank IT-OO4:
    > Hallo Timo,
    > testbots_home ist mit der schwierigste Parcours an sich für dieses
    > Verhalten, den man sich denken kann. Als Demoparcours ungeeignet,

    nun ja, gerade darum hatte ich den zum Testen ausgewählt... Also mir
    ist schon klar, dass nicht die ganze Freifläche des Parcours
    abgefahren werden kann, aber zumindest aus seiner Startplatz-Ecke
    sollte der Bot doch herauskommen können.

    > Vielleicht sollte man mal ein eigenes machen, welches konkret die
    > Vorzüge des Verhaltens sichtbar macht. Er fährt ja erst hier nach
    > rechts an der langen Wand lang ohne diese zu kennen bis rechts zur
    > Wand (auf Stack wird sich die Strecke links vom Startpunkt bis zur
    > Wand gemerkt, die ja eigentlich Wand ist). Wegen Vorzugsrichtung
    > rechts dreht er sich dort und nimmt die Spur rechts daneben und
    > fährt zurück, neben dem Startpunkt vorbei, bis zur Wand links. Beim
    > Vorbeifahren am Startpunkt bis zur Wand merkt er sich diese rechte
    > Strecke als noch anzufahren auf dem Stack nach dem Merken der
    > gesamten Spur links. An der Wand selbst holt er sich den letzten
    > Stackeintrag, also die kleine Strecke rechts bis zum Startpunkt und
    > dreht sich zum Punkt rechts. Dann wird sich zum Punkt2 der Strecke
    > via bot_turn gedreht und via goto_obstacle gefahren, auch am
    > eigentlichen Zielpunkt drüber bis zum nächsten Hindernis. Hier wird
    > sich wieder die Strecke links gemerkt, soweit diese nicht schon laut
    > Map als Hindernis erkannt wurde. Diese will er dann wieder anfahren
    > und ist schon so nah an der Wand, dass er diese nicht unbedingt
    > immer noch als zu nah von den Sensoren erkannt wird. Auch laut Map
    > ist der Weg frei, so dass er diesen Weg anfährt und sich öfters
    > festfrißt. Was tun, wenn laut Sensoren und Map alles frei ist...

    Also bei mir fährt er immer schräg in die Wand und dann wird diese
    auch von mindestens einem Distanzsensor schon vorher erkannt.

    > Wenn laut Map erkannt ist, dass ein Weg versperrt ist, dann fährt er
    > den nächsten an (falls frei) und legt die jetzt nicht anfahrbare
    > Strecke auf den Stack, vielleicht ist sie ja nächste Runde
    > anfahrbar. Und schafft der bot es nicht, den kleinen Weg links oben
    > anzufahren, kann er sich auch niemals die Strecke daneben merken und
    > der Weg zum Rest der Welt ist nicht erreichbar. Soweit zur
    > Schwierigkeit des Parcours selbst. Aber Frage war ja die
    > Unterschiedlichkeit der Ergebnisse, wo ich nur vermuten kann. Meine
    > Vermutung liegt in bot_turn, wo sich nicht immer ganz genau um den
    > Winkel gedreht wird. Denn wenn ich dort die Logausgaben ausgebe,
    > zeigt er nach dem Drehen, also dem Ausrichten auf den Zielpunkt,
    > unterschiedliche Werte an : Fehler 1 Grad, Fehler 1.5 Grad... Und
    > wenn sich der Bot auf einen Punkt ausrichtet, der nicht weit vom
    > Startpunkt entfernt liegt und dann dorthin und noch viel weiter
    > fährt, machen sich die kleinen Drehabweichungen weit entfernt
    > sichtbar als wenn er sich nach einem weit entfernten Punkt
    > ausrichtet. Hoffe, Du verstehst was ich meine.

    Na ja, der "Fehler", den die Fahrverhalten ausgeben, ist dem Bot ja
    bekannt. Also damit ist nicht der Odometrie-Fehler (gibt im Sim mit
    Maussensor nahezu keinen) gemeint, sondern die Tatsache, dass der Bot
    nicht bremsen kann und daher bereits etwas vor dem Ziel anhält, um die
    restliche Strecke / Drehung durch die Massenträgheit zurückzulegen.
    Braucht man im Sim eigentlich nicht, aber der Code ist dort halt
    genauso wie für den echten Bot. Trotzdem _weiß_ der Bot aber ja, dass
    seine Ausrichtung / Position nicht exakt die ist, die er anfahren
    wollte, kann das also durchaus berücksichtigen. Im Sim ist der Fehler
    aber ohnehin vernachlässigbar klein, wenn der Bot noch nicht ewig
    gefahren ist. Was ich meinte ist, dass er ganz plötzlich um 10 Grad
    schräg fährt. Zum Beispiel hier:

    http://www.cety.de/ctbot/drive_area_sim.html

    > Weg versperrt kommt, wenn der Bot nach Ausrichten auf den
    > Bahnzielpunkt geradeaus fahren will via obstacle aber laut Map der
    > Weg voraus nicht frei ist. Das hatte ich auch mehrfach obwohl keine
    > Hindernis voraus zu sehen war.

    Vielleicht ist da ja auch noch ein Bug im Map-Code, am besten wäre es,
    wenn das Verhalten die Daten, anhand derer es entscheidet, per Log
    ausgibt. Also "ich bin grad hier, map_way_free() sagt ..." usw. Es ist
    sonst sehr schwer zu debuggen, ob das Verhalten irgendwie einen Fehler
    hat / einen Fall nicht korrekt berücksichtigt, der Map-Code verbuggt
    ist, die Position nicht stimmt o.a.

    Btw: Der Sim bräuchte eine Replay-Funktion... Gab es das damals beim
    Wettbewerb nicht? Ich glaube es wäre zum Debuggen und auch Vergleichen
    von Ergebnissen sehr hilfreich. Dann müsste man nicht immer
    umständlich in Worten beschreiben, was wo auftritt, sondern könnte
    einfach ein aufgezeichnetes Trace-Log mitschicken.

    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] bot_drive_area() -> überarbeitet
    - From: Timo Sandmann

- Referenzen:
  - AW: [ct-bot] bot_drive_area() [war: MAP-Verhalten nur fuer Sim ?-> Patch fuerVerhalten] -> überarbeitet
    - From: Frank Menzel
  - Re: AW: [ct-bot] bot_drive_area() -> überarbeitet
    - From: Timo Sandmann
  - RE: AW: [ct-bot] bot_drive_area() -> überarbeitet
    - From: Menzel, Frank IT-OO4
  - Re: AW: [ct-bot] bot_drive_area() -> überarbeitet
    - From: Timo Sandmann

- Voriger (Datum): Re: AW: [ct-bot] bot_drive_area() -> überarbeitet, Timo Sandmann
- Nächster (Datum): RE: AW: [ct-bot] bot_drive_area() -> überarbeitet, Menzel, Frank IT-OO4
- Voriger (Thread): Re: AW: [ct-bot] bot_drive_area() -> überarbeitet, Timo Sandmann
- Nächster (Thread): Re: AW: [ct-bot] bot_drive_area() -> überarbeitet, Timo Sandmann
- Indizes:
  - Datum
  - Thread