c't

c't-Projekte - Mailinglisten


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

[ct-bot] bot_drive_area()-Frage

Absender: Timo Sandmann
Datum: So, 15.02.2009 19:37:37


Hallo,

inzwischen ist es auch möglich, den Bot Linien zu Debugging-Zwecken in die Map-Anzeige des Sim einzeichnen zu lassen. Eine Beispielimplementierung hierzu gibt es für die Funktionen map_way_free() und map_get_ratio(). Wenn DEBUG_GET_RATIO in map.c eingeschaltet ist, werden die von map_way_free() überprüften Bereiche farbig gekennzeichnet: Grün, falls der Bereich komplett frei oder rot, falls er mindestens teilweise belegt ist.

Lässt man das Verhalten bot_drive_area() laufen, sieht man sehr schön, welche Bereiche überprüft werden und wie der Bot je nach Ergebnis von map_way_free() eine Entscheidung trifft, wohin er als nächstes fährt:
http://www.heise.de/ct/projekte/machmit/ctbot/browser/galery/drive_area_way_free.mov?rev=1547&format=raw

Dabei fällt aber auf (besonders bei langen Bahnen), dass am Ende einer Bahn zunächst der kurze Weg quer rüber zur nächsten Bahn überprüft wird und anschließend der Weg vom Ende der letzten Bahn zum voraussichtlichen Ende der nächsten (parallelen) Bahn, was so einen schrägen Bereich ergibt. Wofür ist die Überprüfung, ob dieser Weg frei ist? Der überprüfte Weg überdeckt zum Teil den zuletzt gefahrenen Weg (der eh frei gewesen sein muss) und nur zum Teil den voraussichtlichen neuen Weg (dessen Ende noch gar nicht bekannt ist).

Übrigens war im Code von get_ratio() ein Bug, so dass map_way_free() teilweise falsche Bereiche überprüft hat. Ist jetzt jetzt korrigiert.

Grüße,
Timo