Absender: Benjamin Benz
Datum: Mi, 05.04.2006 10:28:28
In-reply-to:
<001801c6587f$741ebc20$0100a8c0@muetze>
References:
<001801c6587f$741ebc20$0100a8c0@muetze>
Hallo, ich denke, wir werden diesen Patch auf der Leser-Patches-Seite anbieten. Für das nächste größere c't-Sim-Release haben wir eine generische Lösung vorbereitet, die einen Parcours aus einem ASCII-Textdatei einliest. MfG Benjamin Benz Johannes Dörnte wrote: > 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 > > > ------------------------------------------------------------------------ > > _______________________________________________ > ct-bot-entwickler Mailingliste > ct-bot-entwickler@xxxxxxxxxxxxxxxxx > http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler -- Benjamin Benz Heise Zeitschriften Verlag Redaktion c't eMail: bbe@xxxxxxxx WWW : http://www.heise.de