Absender: Timo Sandmann
Datum: Do, 17.09.2009 01:05:55
Hallo,es gibt im Devel-Zweig des SVNs jetzt einige Neuerungen, die eine Lokalisierung des Bots (im Sim und beim echten Bot) ermöglichen:
* ct-Sim:- Zwei neue Parameter in config/ct-sim.xml: 1.) <parameter name="LightSensors" value="true"/> schaltet die Lichtsensoren ein (true) oder aus (false) 2.) <parameter name="BPSSensors" value="false"/> schaltet die Sensoren zur Bot-Lokalisierung (s.u.) ein (true) oder aus (false) Deaktiviert man die Lichtsensoren (sie werden ja kaum benutzt), läuft der Sim spürbar schneller.
- Bugfix für Distanzsensoren.- Neues Parcours-Objekt "IR-Bake": Repräsentiert eine Landmarke, die ständig ihre Position innerhalb der Welt "blinkt", dadurch kann sich der Bot lokalisieren, wenn er mindestens drei solcher Baken sieht. Special-Features der Sim-Baken (im Gegensatz zu ihren realen Kollegen): Ihr IR-Licht strahlt durch Wände, sie haben keine Masse - der Bot kann durch sie hindurchfahren - und ihr optisches Erscheinungsbild fällt recht bescheiden aus. - Neuer Parcours "test_localization.xml", in dem bereits drei Baken eingebaut sind.
* ct-Bot:- Neuer Sensor zur o.a. Lokalisierung (BPS_AVAILABLE in ct-Bot.h): Es kann zwei solcher Sensoren geben, die nichts weiter sind als einfache IR-Empfänger (wie für die Fernbedienung), einer zeigt nach vorn und einer nach hinten. Derzeit wird nur der Vordere ausgewertet. Beim echten Bot werden die Sensoren an die Pins für die Lichtsensoren angeschlossen, diese entfallen dann ersatzlos. Damit jene als Peilvorrichtung funktionieren, ist vor dem IR-Empfänger eine dünne Röhre erforderlich, Details s.u. Im Sim übermittelt der Sensor direkt die Position einer erkannten Bake, beim realen Bot wird nur eine ID empfangen. - Neues Verhalten bot_scan_beacons() (BEHAVIOUR_SCAN_BEACONS_AVAILABLE in include/bot-logic/ available_behaviours.h): Das Verhalten dreht den Bot um maximal 360 Grad und sucht dabei mit den o.a. Sensoren nach Landmarken. Wurden drei Landmarken gefunden, wird daraus die aktuelle Bot-Position in der Welt sowie seine Ausrichtung errechnet. Setzt man den Parameter "position_update" auf 1, wird die neu errechnete Position als aktuelle Bot-Position gespeichert, ansonsten wird sie nur per LOG ausgegeben. Heading wird derzeit noch nicht gespeichert, weil die Berechnung noch zu ungenau ist.
Insbesondere der Bot-Code ist noch experimentell! Wer keine Experimente mag, sollte deshalb einfach den Code aus dem Stable-Zweig verwenden, außer der neuen Bot-Lokalisierung (und der RemoteCall- Kommandozeilensteuerung) gibt es dort keine Rückstände. Das Verhalten zur Lokalisierung ist außerdem eine absolute Minimalversion, hier sind noch viele Verbesserungen möglich. Wenn jemand Interesse hat, das Ganze auch für den realen Bot zu verwenden, kann ich gern noch weiter erläutern, wie man den Sensor und die (sehr einfachen) IR-Baken bauen kann. Im Moment ist alles noch ziemlich experimentell, funktioniert bei mir aber schon ganz gut. Auch konnte ich bisher noch nicht alle Abhängigkeiten des neues Bot-Codes überprüfen, insbesondere beim Fernbedienungscode hat sich Vieles geändert - Feedback ist natürlich gern willkommen, Bug-Reports ebenso.
Viele Grüße, Timo