## 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: Timo Sandmann
Datum: Mo, 08.09.2008 15:37:49
In-reply-to: <48C139945BA47F4DB4DE05DF62CD57AA03C51C0CFC@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <000001c91025$ac75b780$0200a8c0@mexpnew> <1A701016-4860-4F34-A1BE-A8BF5D776141@xxxxxxxxxxxxxxx> <48C139945BA47F4DB4DE05DF62CD57AA03C51C0CFC@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>

    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

- Antworten:
  - RE: AW: [ct-bot] bot_drive_area() -> überarbeitet
    - From: Menzel, Frank IT-OO4

- 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

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