## c't-Projekte - Mailinglisten

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

### [ct-bot] Neue Codeversionen

Absender: Peter König
Datum: Fr, 17.03.2006 17:23:02

    Hallo zusammen,

    im Lauf der Nacht gehen wieder neue Versionen des Codes für c't-Bot

`und c't-Sim online, im CVS sind sie bereits jetzt enthalten. Das neue` `Verhalten des Bots wird in c't 7/06 beschrieben, die am Montag, den` `20.3. am Kiosk erhältlich ist.`

    Was ist neu?

    c't-Bot:

    c’t-Bots trainieren jetzt Slalomfahrten – ganz ohne vorher wissen zu
    müssen, wie der Kurs sich drehen und wenden wird. Am Beispiel dieser
    Aufgabe zeigt der neue Code für den c't-Bot, wie sich komplexes
    Verhalten in Anlehnung an das Subsumptionsprinzip des
    Robotik-Pioniers Rodney Brooks realisieren lässt.

    Der Sourcecode steht wie immer im CVS und als ZIP-Verzeichnis zum
    Download bereit. Das implementierte komplexe Verhalten stellt dabei
    keine Patentlösung eines praktischen Problems dar, sondern soll in
    erster Linie als Anregung und Beispiel für eigene Programmierungen
    dienen -- vielleicht will man seinen Bot ja lieber die dunklen Ecken
    erforschen lassen als ihn im Slalom zwischen Fackeln hindurchzujagen.
    An vielen Stellen und Parametern lässt sich noch herumschrauben, um
    das Verhalten weiter auszufeilen, zu modifizieren und an den eigenen
    echten c't-Bot anzupassen. In den Kommentaren zum Code finden sich an
    einigen Stellen Hinweise darauf, wo es sich anbietet,
    Verhaltensweisen zu erweitern und zu verbessern.

    Wie jede Simulation idealisiert (und vereinfacht) der c't-Sim die
    reale Welt. In keinem nachgebauten Parcours wird sich der Roboter
    exakt so verhalten wie im Simulator, für den der aktuelle Code im CVS
    ausgelegt ist; genausowenig wird sich der gleiche c't-Bot in zwei
    verschiedenen Slalomstrecken identisch benehmen -- schon kleine
    Unterschiede in Material und Farbe der Hindernisse können
    unterschiedliche Sensormesswerte zur Folge haben. Solche Differenzen
    zwischen Welt und Modell zu erkennen und durch eigene Experimente und
    entsprechende Code-Modifikationen zu überwinden (sowohl auf Seiten
    des Roboters wie im Simulator), macht aber gerade den besonderen Reiz
    eines Roboter-Selbstbau-Projekts mit Simulationsumgebung aus. Wer
    allerdings erwartet, dass der fertige Code von der Stange sofort 1:1
    auf dem eigenen c't-Bot funktioniert wie im Simulator, wird
    vielleicht im ersten Moment enttäuscht sein.

    Ein konkretes Beispiel: In der Simulation leuchten nur die Lampen
    selbst, Streulicht erreicht die modellierten Sensoren gar nicht.
    Deshalb darf der virtuelle Bot auch auf das kleinste Leuchten
    anspringen (seine Lichtempfindlichkeit definiert in bot-logik.c ein
    Schwellwert in der Funktion check_for_light()). Lässt man diese
    Lichtsuche aus der Codebasis unmodifiziert auf dem echten Bot laufen,
    verwirrt ihn bereits das geringste Streulicht -- sogar jenes, das von
    den eigenen LED ausgeht. Hier muss man entweder die LED abschirmen,
    außer Betrieb nehmen oder man reduziert die Lichtempfindlichkeit über
    die Software. Die passende Einstellung für den eigenen Roboter (und
    die Lichtquellen im selbstgebauten Parcours) findet man über eigene
    Experimente in der realen Umgebung. Denn echte c't-Bots lassen sich
    nicht alle über einen Kamm scheren -- je nach Kalibrierung der
    Distanzsensoren kann auch der Mindestabstand zur Wand (COL_CLOSEST in
    bot-local.h) mit den vordefinierten 10 cm schon zu gering sein, um
    noch realistische Messwerte zu bekommen. Testen kann man dies
    beispielsweise, indem man den Bot in ausgemessenem Abstand vor einem
    Hindernis aufbockt und die Daten der Entfernungssensoren auf dem
    Display mit der echten Distanz vergleicht. (Korrekturen an der
    Kennlinie der Sensoren sind auch über die Datei sensor_correction.h
    möglich.)

    Das Material der Hindernisse beeinflusst die Messdaten der
    Lichtsensoren übrigens ebenfalls: weiße Wände oder gar Kacheln
    gaukeln dem Bot Lampen vor, wo keine sind, das Streulicht macht den
    Helligkeitssensoren die gezielte Fahrt hin zur Lichtquelle schwer.
    Die Distanzsensoren wiederum erkennen selbstleuchtende Körper (wie
    bestimmte Tischlampen aus Mattglas) unter Umständen gar nicht als
    Hindernis.

    c't-Sim:

    Der Simulator hat sich in einigen wichtigen Details verändert, er
    liegt jetzt in Version 0.3 vor und ist für den Einsatz der neuen
    USB-2-Bot-Verbindung (Artikel dazu in c't 7/06) gerüstet. Weitere
    Änderungen betreffen die innere Struktur des Simulators und die
    Modellierung des Bot: So arbeiteten die vorigen Versionen des c't-Sim
    versehentlich mit der Zahl von 40 Encoder-Markierungen pro
    Radumdrehung (in der Realität sind es dagegen 30 helle und 30 dunkle
    Felder, also 60 Wechsel pro Rotation). Nach wie vor freuen wir uns
    über eingesandte Code-Patches, welche die Möglichkeiten des
    Simulators erweitern und ihn stückweise näher an die Realität rücken.
    WICHTIG: Der c't-Sim verwendet jetzt Konstrukte aus dem Java-Standard
    5.0 -- Voraussetzung für den Betrieb ist also ein JDK, das diese
    Java-Version unterstützt. In der Entwicklungsumgebung Eclipse muss
    zusätzlich im Menü Window/Preferences unter Java/Compiler/JDK
    Compliance die Standardeinstellung 1.4 auf 5.0 umgeschaltet werden.

    Viel Spaß beim Experimentieren!

    Peter König

    c't - Magazin für Computertechnik         http://www.heise.de/ct/
    Heise Zeitschriften Verlag GmbH & Co.KG   phone: 0511-5352-300
    Helstorfer Str. 7                         fax:   0511-5352-417
    D-30625 Hannover, Germany                 eMail: pek@xxxxxxxxxxxx

- Antworten:
  - Re: [ct-bot] Neue Codeversionen
    - From: Manolis John
  - Re: [ct-bot] Neue Codeversionen
    - From: Stefan Geuken

- Voriger (Datum): Re: [ct-bot] Informationen zu den Abstandssensoren, Ansgar Esztermann
- Nächster (Datum): Re: [ct-bot] Neue Codeversionen, Manolis John
- Voriger (Thread): [ct-bot] Platinen- und Bausatzlieferanten in Sammlung nützlicher Links aufnehmen, Stephan Schlosser
- Nächster (Thread): Re: [ct-bot] Neue Codeversionen, Manolis John
- Indizes:
  - Datum
  - Thread