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