c't

c't-Projekte - Mailinglisten


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

Re: [ct-bot] bot_drive_area() [war: MAP-Verhalten nur fuer Sim ? -> Patch fuerVerhalten]

Absender: Timo Sandmann
Datum: Di, 02.09.2008 16:28:03
In-reply-to: <E3E2A7C6-F3F2-4C55-8E3E-8B08CA8AD8F1@xxxxxxxxxxxxxxx>
References: <000001c90b9c$40ced3f0$0200a8c0@mexpnew> <E3E2A7C6-F3F2-4C55-8E3E-8B08CA8AD8F1@xxxxxxxxxxxxxxx>


Hallo,

ich habe noch mal ein paar kleine Verbesserungen für bot_drive_area() auf dem echten Bot eingebaut.
Dabei sind mir ein paar Dinge aufgefallen:

- Kann es sein, dass in bot_drive_area() irgendwo Fahrverhalten wie bot_turn() & Co. mit bot_cancel_behaviour() abgewürgt werden und dass dann das nächste Fahrverhalten gestartet wird, ohne den Nachlauf der Räder abzuwarten? Das mag bot_turn() z.B. nicht.

- Manchmal beendet sich das Verhalten, aber wenn ich es dann (ohne den Bot zu bewegen) mit Taste 8 wieder starte, läuft es weiter. Warum hat es sich dann beendet?

- Auf kurzen Bahnen (< 60 cm) funktioniert das Ganze auch auf dem echten Bot gut, auf Längeren wird das Ende der Bahn irgendwie zu früh erkannt, ich weiß aber nicht, ob da vielleicht auch eine Fehlmessung der Distanzsensoren vorliegt (werde ich noch mal überprüfen).

- Die Observer-Verhalten schlagen jetzt nur noch dann zu, wenn die Map frei ist, allerdings dauern die Map-Auswertungen manchmal relativ lange (> 20 ms; Debug-Schalter gibt jetzt die Zeit aus). Hier wäre es wohl besser, das nicht in einem Stück zu machen, weil insbesondere die Fahrverhalten hierbei ungenauer werden. Da überlege ich mir mal was.

- Das bot_cancel_behaviour() muss man selbst abbrechen, wenn es nicht zugeschlagen hat, das eventuell abzubrechende Verhalten aber (normal) beendet wurde, sonst läuft der Test über die Abbruchfunktion ewig weiter und beendet dieses Verhalten, falls es inzwischen bereits neugestartet wurde. Ich habe das Beenden erstmal bei jedem Aufruf von bot_drive_area_behaviour() eingebaut (das Verhalten wird ja erst dann wieder aktiv, wenn das Unterverhalten beendet wurde), besser wäre aber, das (nur) genau dann zu machen, wenn der nächste Zustand dran ist, dessen Vorgänger cancel aktiviert hatte (ich habe nicht so ganz durchschaut, wann das immer der Fall ist).

Insgesamt ist das Fahren nach Map auf dem echten Bot aber schon sehr cool :-)

Gruß Timo