c't

c't-Projekte - Mailinglisten


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

[ct-bot] Verfeinerung des c't-Sim

Absender: Peter König
Datum: Mi, 22.03.2006 11:47:14


Hallo zusammen,

es ist geplant, den c't-Sim im Detail realistischer zu modellieren. Wir würden in dieses Arbeitspaket gerne so viel praktische Erfahrung wie möglich mit einfließen lassen, die Sie bereits mit Ihrem c't-Bot gesammelt haben.

Die folgenden Gedanken sollen eine erste Diskussionsgrundlage liefern, anhand derer wir gemeinsam die wichtigsten Baustellen im c't-Sim identifizieren können. Über Vorschläge, Anregungen, Wünsche, Fragen und Ideen freuen wir uns ebenso wie über Erfahrungsberichte, Listen von Beispielmessdaten und Patches, die Lösungen für einzelne Aspekte umsetzen (wie sie bereits schon über diese Liste geschickt wurden).

1. Die Welt:

Je nach Material der Wand oder der Farbe des Bodens liefern Distanz- oder Liniensensoren des c't-Bot unterschiedliche Werte zurück. Um den Simulator an die Situation der echten Welt anzupassen, sollten wir uns auf eine Referenzumgebung einigen, deren Eigenheiten im Simulator nachgebildet werden. Dabei sollen nicht nur die Sensor-gerechten Eigenschaften der Materialien eine Rollen spielen, sondern auch der Preis und der Aufwand, der betrieben werden muss, um die Referenzwelt nachzubauen. Hier sind Ihre eigenen Erfahrungen besonders wichtig: In welcher Umgebung lassen Sie Ihren Bot frei laufen? Wo sind Sie auf Schwierigkeiten gestoßen, wo fühlte sich der Bot zu Hause?

Unser Vorschlag für eine Standardwelt:

* Die Wände bestehen aus brauner Wellpappe. Die ist leicht und billig zu besorgen (Verpackungskartons), zu Wandelementen zu falten und aufzustellen. Darüber hinaus reflektiert die Oberfläche nicht ganz so viel Licht wie weißes Papier, was die Lichtsensoren wieder stören könnte.

* Der Boden besteht aus roher Spanplatte. Diese hat einen einigermaßen einheitlichen hellen Ton, ist preiswert zu besorgen und ausreichend glatt und eben, um dem Bot ein bequemes Fortkommen zu erlauben. Größere Böden können aus mehreren Platten zusammengesetzt werden. Alternative: Der Boden könnte noch dazu in einer festgelegten Farbe gestrichen werden (mit RAL-Nummer o.Ä.), oder bedeutet das zu viel Aufwand?

* Löcher bestehen aus schwarzem Tonpapier -- die lassen sich damit ohne viel Aufwand dem Boden hinzufügen und sind auch nicht so gefährlich für den Bot wie echte Lücken.

* Linien auf dem Boden kann man mit schwarzem Klebeband oder aus schwarzen bzw. weißen Papierstreifen aufkleben.

* Die genormten Lichtquellen könnten aus nackten 15-Watt-Glühbirnen mit Milchglas bestehen -- sie strahlen in alle Richtungen gleichermaßen und sind nicht so grell, dass sie zu sehr blenden würden, wenn man direkt hineinblickt. Allerdings sind sie auf Netzspannung angewiesen und müssen daher per Kabel mit Strom versorgt werden. Für Hinweise auf preiswerte, einheitliche Lichtquellen mit Batteriespannung, die ebenfalls rundum Licht ausstrahlen, sind wird dankbar. Denkbar ist hier auch eine Eigenbau-Lösung, für die wir gerne eine genaue Bauanleitung veröffentlichen würden.

* Das größte Problem für die Lichtsensoren: Wie ist die Umgebung des Parcours zu gestalten? Alles, was nicht matt und schwarz ist (Wände, Möbel, Fenster, Spiegel....), erzeugt Reflektionen, die das Licht weiter streuen. Am günstigsten wäre natürlich, wenn der gesamte Raum um den Parcours dunkel und auch noch schwarz gestrichen oder mit dunklem Stoff abgehängt wird -- ein Aufwand, der für Bot-Testläufe in der Praxis aber kaum vertretbar sein wird. Oder?

2. Die Sensoren:

Im c't-Sim sorgen die virtuellen Sensoren für stabile Werte (die Distanzsensoren arbeiten beispielsweise bis auf den Millimeter präzise), viele der Sensoren des echten c't-Bot liefern dagegen Meßwerte, die in schneller Folge zwischen gewissen Grenzen schwanken. Ein echter Bot muss daher auf jeden Fall mit Hilfe einer Filter- oder Glättungsfunktion einen praktikablen Mittelwert herausrechnen -- Vorschläge hierfür gab es ja bereits auf dieser Liste zu lesen.

Für den Simulator gibt es hier zwei Möglichkeiten:
1. Entweder man produziert im Simulator ebenfalls künstlich schwankende Meßwerte, dann kann man auch die Glättung im Simulator testen (dies erfordert allerdings eine Menge Aufwand, da das Rauschen in den Signalen ziemlich getreu dem der realen Welt entsprechen muss). 2. Oder der Simulator liefert weiter die idealen Werte -- die Glättungsfunktionen sollten diese schließlich weitgehend unbeeinflusst lassen. Dann wird allerdings ein Steuerungscode ohne Glättung im Simulator bestens funktionieren, der auf einem echten Bot hingegen wegen des schwankenden Signals problematisch ist.

Aspekte einzelner Sensoren:

* Distanzsensoren: Hier scheint es durchaus Unterschiede zu geben (je nach Kalibrierung und Material der Wand), ab welcher minimalen Entfernung zu einem Hindernis die Distanzmessung nicht mehr zuverlässig ist. Hier wären Tabellen von Ihrer Seite interessant, welche Werte die Sensoren bei welchem Abstand von der Wand anzeigen (vor allem im Bereich von 20 - 0 Zentimetern Distanz). Anschließend sollen die virtuellen Sensoren im Simulator eine entsprechende Kennlinie erhalten.

* Linien- & Abgrundsensoren: Deren Werte sind von diversen Faktoren abhängig, zwei davon sind die Farbe und die Distanz des Untergrunds. Hier erfordert die aktuelle Näherungslösung im c't-Sim noch einige Korrekturen, deren Basis wiederum echte Meßwerte sein sollten -- zum Beispiel bei rein schwarzem und rein weißem Untergrund (weißes und schwarzes Tonpapier) und auf dem genormten (Spanplatten-)Boden; alles gemessen, wenn der Bot auf dem Boden steht, und wenn er 1, 2, und 3 cm darüber schwebt (gerne auch in feineren Schritten). Allerdings scheint auch die Umgebungsbeleuchtung die Meßwerte zu beeinflussen -- sie sollte daher möglichst nur aus einer Handvoll der Norm-Lichtquellen bestehen.

* Lichtsensoren: Der c't-Sim verfügt, wie im c't-Artikel in Heft 5/06 beschrieben, über kein echtes Lichtmodell. Java3D benutzt so etwas zwar zur Darstellung der 3D-Welt; wie viel Licht auf einzelne Objekte des Szenegraphen fällt, lässt sich innerhalb der virtuellen Welt allerdings nicht wieder auslesen (Java3D übergibt die Position und Intensität der Lichtquellen an OpenGL bzw. DirectX und überlässt den Rest der Beleuchtung diesen Bibliotheken -- Licht existiert nur in der Darstellung, nicht in der Modellierung). Im c't-Sim wird daher bislang nur direktes Licht berücksichtigt. Diese starke Vereinfachung hat Auswirkungen auf alle Verhaltensweisen, die mit den Lichtsensoren zu tun haben; gleichzeitig sind beim Nachbau der Musterwelt hier nur ganz besonders schwer perfekte Bedingungen zu erreichen. Diese Probleme bei der Modellierung von Licht und Lichtsensorik sind erheblich grundlegender als die notwendigen Detaillierungen der anderen Sensortypen; an dieser Stelle sind wir auch offen für Ideen, die eventuell größere Umbauten des Simulators nach sich ziehen würden. Aber auch schon mit ein paar beispielhaften Meßwerten bei genauer Beschreibung der Lichtsituation ist uns geholfen.

Wir freuen uns auf eine lebhafte und konstruktive Diskussion!

Mit freundlichen Grüßen,

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