c't

c't-Projekte - Mailinglisten


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

Re: [ct-bot] Neue Codeversionen

Absender: Stefan Geuken
Datum: Fr, 17.03.2006 18:33:12
In-reply-to: <441AE254.5050702@xxxxxxxxxxxx>
References: <441AE254.5050702@xxxxxxxxxxxx>


Hallo,

obwohl ich auf Java 5 umgestellt habe, wird bei mir das Paket jd2xx, das in der Klasse ctSim.JD2xxConnection benutzt wird, nicht gefunden. Muß dieses Paket vielleicht extra installiert werden?

Gruß
Stefan Geuken

Peter König schrieb:
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
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler

__________ NOD32 1.1444 (20060315) Information __________

Diese E-Mail wurde vom NOD32 antivirus system gepr�ft
http://www.nod32.com