c't

c't-Projekte - Mailinglisten


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

[ct-bot] Patch für ct-Sim

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