heise online · c't · iX · Technology Review · Telepolis · mobil · Security · Netze · heise open · heise resale · Autos · c't-TV · Jobs · Kiosk
Zum Inhalt
c't

c't Projekte - c't-Bot und c't-Sim - Mailinglisten

c't-Bot und c't-Sim


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

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

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





Copyright © 2007 Heise Zeitschriften Verlag Kritik, Anregungen bitte an c't-WWW Datenschutzhinweis   Impressum