c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Johannes Dörnte
Datum: Mi, 05.04.2006 09:06:28
Hi,
mit meinem Patch kann man in world.java zwischen zwei Welten wählen.
Welt 1 ist das Labyrinth aus der ct05,
Welt 2 ist der Hindernis-Parcours aus der ct07.
Dafür habe ich eine Konstante WORLDCHANGER eingeführt, die man von Hand im
Programmcode entweder auf 1 oder 2 setzt. Während des Programmablaufes
unterscheidet eine switch-Anweisung zwischen den beiden Welten.
Die switch-Anweisung steht an zwei Stellen: bei der Erzeugung der Lampen und
bei der Erzeugung der Hindernisse.
Weiterhin habe ich den - in meinen Augen - unübersichtlichen Code in
world.java leicht umsortiert. Das Erstellen und Verschieben der Hindernisse
(speziell das der Randmauer) habe ich räumlich zusammengefasst (wie bei
anderen Hindernissen auch bereits vorhanden). Dafür musste der Codeblock
// Zuerst werden sie gemeinsam so verschoben, dass ihre
Unterkante genau
// buendig mit der Unterkante des Bodens ist:
translate.set(new Vector3d(0d, 0d, 0.2d -
PLAYGROUND_THICKNESS));
TransformGroup tgO = new TransformGroup(translate);
tgO.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
tgO.setPickable(true);
sceneLight.getObstBG().addChild(tgO);
vor die Erzeugung der Randmauern verschoben werden.
Weiterhin habe ich Kommentarzeilen der Form
//
// Lichtquellen
*****************************************************
//
eingefügt, die kenntlich machen, wo die Erzeugung der Lichtquellen, Boden,
Linien und Hindernisse erfolgt. Neulinge wie ich finden sich damit besser im
Code zurecht.
Einige wenige weitere Kommentarzeilen ergänzen den Code.
Herzliche Grüße
Johannes Dörnte
CHANGELOG fuer c't-Sim
======================
2006-04-05 Johannes Dörnte (doernte@xxxxxx)
Waehlen der Welt in world.java ueber eine Konstante.
Man kann zwischen dem Labyrinth aus der ct05 und dem Hindernis-Parcours aus der ct07 wechseln.
2006-03-20 Markus Lang (lang@xxxxxxxxxx)
Kontrollfenster und World-Fenster mittels einer SplitPane zu einem
grossen c't-Sim Hauptfenster zusammengefügt. Weniger Fensterwald :)
2006-03-19 Benjamin Benz (bbe@xxxxxxxx) updatelcdText in botsimtest verschoben
2006-03-16 Peter Koenig (pek@xxxxxxxx)
Lampen vergroessert (verbessert die Erkennung der Saeulen)
2006-03-16 Peter Koenig (pek@xxxxxxxx)
Umlaute entfernt, Kommentare ergaenzt und Formatierungen geaendert
2006-03-16 Stefan Geuken (mail@xxxxxxxxxxxxxxxx)
- Bugfix: Einer der CtBot-Konstruktoren hat bisher das Display nicht initialisiert
- Der integrierte Testbot zeigt seine Daten auf dem Display an
2006-03-12 Peter Koenig (pek@xxxxxxxx) Bugfix in World.sensGroundReflectionCross (Zeile 1096):
Der Wert von absorption wird nicht neu gesetzt, sondern zum alten dazuaddiert
('absorption += ...' statt 'absorption = ...')
2006-03-12 Benjamin Benz (bbe@xxxxxxxx) ParcoursLoader begonnen
2006-03-12 Benjamin Benz (bbe@xxxxxxxx) Grosse Aufraeumaktion zwischen World, WorldView und Controller.
World braucht keine Referenz auf WorldView mehr. Alles vorbereitet, damit Views auch extern laufen koennen.
2006-03-12 Benjamin Benz (bbe@xxxxxxxx) CommConnection wieder entfernt
2006-03-12 Benjamin Benz (bbe@xxxxxxxx) Button fuer Screenshots wieder entfernt
2006-03-09 Benjamin Benz (bbe@xxxxxxxx) Reale TCPBots eingefuehrt, Connections umstrukturiert
2006-03-03 Heinrich Peters (Heinrich-Peters@xxxxxxx)
- LCD-Ausgabe ueberarbeitet
- LEDs werden jetzt im Simulator angezeigt
- die 4 Farbtasten hinzugefuegt
2006-02.22 Peter Koenig (pek@xxxxxxxx), Benjamin Benz (bbe@xxxxxxxx) Bugfix in watchObstacle():
Abstandssensoren haben gelegentlich die Huelle des Bot als naechstes
Hindernis detektiert haben, Messwert fiel regelmaessig auf 0. Jetzt ist die Huelle nicht pickable,
sobald der Bot seinen Peilstrahl losschickt.
2006-02-18 Rolf Ebert (Rolf.Ebert@xxxxxxx) LCD-Ausgabe kann nun auch im Simulator erscheinen
2006-02-21 Peter Koenig (pek@xxxxxxxxxxxx)
- Code ist jetzt auf Java 5.0 umgestellt (List bots in World ist eine List<Bot>); auch das build.xml ist darauf vorbereitet.
2006-02-18 Benjamin Benz (bbe@xxxxxxxx) Einen Button fuer Screenshots eingefuegt
2006-02-13 Christoph Grimmer (c.grimmer@xxxxxxxxxx)
- Sim lauscht jetzt dauerhaft auf TCP-Verbindungen und nimmt diese an, auch wenn schon simulierte Bots unterwegs sind
- Erweiterung von TcpConnection
- Code Makeup
2006-02-01 Lasse Schwarten (lasse@xxxxxxxxxxxxx)
- neue Lichtquelle im rechten Durchgang
- Die Bots aendern nun ihre Farbe, wenn sie einen Unfall haben.
-> rote Bots sind "gesund"
-> blaue Bots sind gerade gegen ein Hindernis gefahren
-> gruene Bots haben den Boden unter ihren Raedern verloren
- Code Makeup
- Abfrage hinzugefuegt, ob ein oder drei Bots ausgesetzt werden sollen.
2006-02-01 Peter K�nig (pek@xxxxxxxxxxxx)
- XML- und howto-Dateien fuer Ant Build von Dominik Kalb (dominik@xxxxxxxxx)
hinzugefuegt.
2006-02-01 Lasse Schwarten (lasse@xxxxxxxxxxxxx)
- Bugfix eines Nebenlaeufigkeitsproblems
-> Sensor- und Kollisionsabfragen verstecken Teile des Szenengraphen.
Bei mehr als einem Bot muss das Picking synchronisiert werden.
2006-02-01 Lasse Schwarten (lasse@xxxxxxxxxxxxx)
- Positions-Slider auf dem CtControlPanel werden jetzt dynamisch an die Groesse des
Spielfeldes angepasst.
- Die Lichtsensoren wurden implementiert.
-> Mit World.LIGHT_SOURCE_REACH laesst sich die Reichweite/Intensitaet des
Lichtes bestimmen.
-> CtBot.SENS_LDR_HEADING bestimmt, ob die Lichtsensoren nach vorne oder
oben zeigen.
- Die Lichtquelle in der nordoestlichen Ecke hat ein winziges 3D-Objekt
bekommen, damit die Lichtsensoren arbeiten koennen.
- Dem CtControlPanel wurden die noetigen Sensoranzeigen hinzugefuegt und
das Layout gefixt.
- Die Anfangsposition von CtBots, die ueber TCP angeschlossen sind, wurde
an die neue Welt angepasst.
2006-01-31 Lasse Schwarten (lasse@xxxxxxxxxxxxx)
- Es wurden Lichtquellen hinzugefuegt.
- Die Liniensensoren wurden implementiert.
- Die Abgrundsensoren wurden implementiert.
- Bots werden nun unter die obstBG BranchGroup gehaengt.
- Die Objekte haben Materialangaben bekommen.
- Die Kamara stellt sich zu Beginn nun automatisch so ein, dass das gesamte
Spielfeld des Bots zu sehen ist.
- Die Flaeche der Welt wurde vergroessert und es gibt jetzt einen weiteren Raum im Sueden.
- Die Box, die den Boden dargestellt hat, wurde durch einen neuen Boden
mit einem Loch im suedlichen Bereich ersetzt.
- Linien auf dem Boden hinzugefuegt.
- Hindernis im suedlichen Raum.
- ueberfluessige (float)-Casts in World entfernt.
- Bot-Steuerung angepasst.
2006-01-30 Peter Koenig (pek@xxxxxxxx)
- Die Welt hat im Szenegraphen direkt unter obstBG eine neue Transformationsgruppe
tgO hinzugefuegt bekommen. Damit ist es moeglich, alle vier Randhindernisse der Welt
(north, south, ... ) gemeinsam zu verschieben. Diese Aenderung erfolgte zwecks
besserer Darstellbarkeit des Szenegraph-Konzepts im Artikel.
2006-01-29 Lasse Schwarten (lasse@xxxxxxxxxxxxx)
- Die Welt wurde ein wenig abgeaendert.
-> Die suedliche Wand wurde entfernt.
-> Der Boden wurde abgesenkt, so dass er nun bei z=0 liegt.
- Der Bodenkontakt der beiden Raeder und des Schleifsporns wird nun ueberprueft.
Wenn einer der drei Punkte keinen Boden mehr unter sich hat, wird der Bot
gestoppt.
- Der Maussensor wurde implementiert. Er sitzt mittig 15 mm hinter der Achse
unter dem ct-Bot. Es werden DeltaX und DeltaY berechnet.
-> Die Groessen werden in Dots pro Simulationsschritt angegeben.
-> Die Konstante CtBot.SENS_MOUSE_DPI = 400 legt die Aufloesung des Sensors
fest und bestimmt wie viele Dots pro Inch ausgegeben werden.
-> DeltaX gibt die in Fahrtrichtung zurueckgelegte Strecke an.
-> DeltaY hingegen die seitliche Verschiebung, die der Maussensor bei einer
Rotation des Bots abfaehrt. Bei einer 360-Grad-Wendung die innerhalb nur eines
Simulationsschrittes absolviert wird, wuerde DeltaY 1484 dots betragen.
---
2*Pi*1,5cm = 9,42cm
9,42cm/2,54cm/in = 3,71in
3,71in * 400DPI = 1484 dots
---
-> Dreht sich der Bot nach links, ist DeltaY negativ. Dreht er sich hingegen
nach rechts, ist DeltaY positiv.
- Damit das Kontrollfenster auch weiterhin auf Bildschirmen mit einer
vertikalen Aufloesung von nur 800 Pixeln komplett zu sehen ist, wurde eine
zweite Spalte hinzugefuegt. Diese enthaelt bis jetzt nur die neuen Maussensor-
daten.
2006-01-26 Zeitlupen Modus:
Werner Pirkl (Morpheus.the.real@xxxxxx) hat einen Modus hinzugefuegt, um den Bot in Zeitlupe zu bewegen.
Man kann nun ueber einen Schieberegler den Faktor der Realzeit einstellen. Dabei bedeutet:
1 -- keine Zeitlupe
10 -- 10fache Zeitverzoegerung.
Intern wird Wert von "baseTimeReal" bei 10-facher Zeitlupe 10 mal hoeher
gesetzt als der Wert der Simulatorzeit "baseTimeVirtual".
2006-01-24 Lasse Schwarten (lasse@xxxxxxxxxxxxx)
- Die Bots sind jetzt "pickable" und erkennen sich so gegenseitig als
Hindernisse. Damit ein Bot sich nicht faelschlich selber findet, wird
sein Koerper versteckt, waehrend seine Kollisionsabfrage durchgefuehrt
wird. (Der ct-Sim ist somit nun multi-Bot-faehig.)
- Die ViewPlatform laesst sich nun durch die Maus im Raum verschieben.
Dazu muss in das 3D-Fenster geklickt werden und die Grafik in eine
gewuenschte Richtung gezogen werden.
-> Die linke Maustaste dreht die Kamera um sich selbst.
-> Die rechte Maustaste verschiebt die Kamera parallel zu ihrer Position
-> Die mittlere Maustaste(oder die linke + ALT) verschiebt die Kamera
nach vorne und hinten
(Anmerkung: Diese Navigation ist bei weitem nicht perfekt und muss
ueberarbeitet werden. Ich habe das Paket
org.j3d.ui.navigation ausprobiert, konnte aber keine
besseren Ergebnisse erzielen. Der Code hierfuer ist noch
im Source enthalten und lediglich auskommentiert.)
- Der Bot hat einen neuen Koerper bekommen, der aus einzelnen Polygonen
zusammengebaut wird und eine echtes Fach hat.
2006-01-24 Benjamin Benz (bbe@xxxxxxxx) Schreibweise des Changelogs nochmal veraendert