heise online
  • c't
  • iX
  • Technology Review
  • Mac & i
  • mobil
  • Security
  • Netze
  • Open Source
  • Developer
  • c't-TV
  • Download
  • Telepolis
  • Resale
  • Foto
  • Autos
  • Preisvergleich
  • Stellenmarkt
  • Abo
  • weitere Angebote
    • Shop
    • Artikel-Archiv
    • Veranstaltungen
    • Whitepapers
    • heise-marktplatz
    • IT-Markt
    • Tarifrechner
    • Jobs bei Heise

c't Magazin
  • Startseite
  • Artikel
  • c't-Projekte
  • Hotline & FAQ
  • Treiber & mehr
  • Kolumnen
Software zu Projekten Allgemeine Hinweise
Archiv-Suche Newsletter RSS-FeedRSS

c't › c't-Projekte

Trac
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Back to Patches

Patches: ct-sim_07.patch

File ct-sim_07.patch, 4.8 KB (added by ip, 5 years ago)
  • Changelog.txt

    RCS file: /ctbot/ct-Sim/Changelog.txt,v
    retrieving revision 1.23
    diff -u -r1.23 Changelog.txt
     
    11CHANGELOG fuer c't-Sim 
    22====================== 
     32006-06-21 Achim Pankalla (achim.pankalla@gmx.de) 
     4                   Die neue Funktion "watchGP2D12Obstacle" eingefuehrt, sie sorgt dafuer, das 
     5                   der Simulator nun nicht mehr Abstandswerte in Meter, sondern Analogwert, wie der 
     6                   richtige ct-bot sie von den GP2D12 Sensoren bekommt, liefert. 
     7 
    382006-06-14 Benjamin Benz (bbe@heise.de) DTD und xml-files angepasst 
    49 
    5102006-05-12 Benjamin Benz (bbe@heise.de) Kommentare aktualisiert 
  • ctSim/ctSim/Model/World.java

    RCS file: /ctbot/ct-Sim/ctSim/ctSim/Model/World.java,v
    retrieving revision 1.13
    diff -u -r1.13 World.java
     
    5656 * @author Lasse Schwarten (lasse@schwarten.org) 
    5757 * @author Christoph Grimmer (c.grimmer@futurio.de) 
    5858 * @author Werner Pirkl (morpheus.the.real@gmx.de) 
     59 * @author Achim Pankalla (achim.pankalla@gmx.de) 
    5960 */ 
    6061public class World extends Thread { 
    6162 
    … …  
    391392                System.out.println(botName + " hatte einen Unfall!"); 
    392393                return false; 
    393394        } 
     395        /** 
     396         * Liefert die Distanz als Analogwert eines simulierten IR Sensors GP2D12 zum  
     397         * naechesten Objekt zurueck, das man sieht, wenn man von der uebergebenen Position  
     398         * aus in Richtung des uebergebenen Vektors schaut. 
     399         * Die Kurve des simulierten Sensor wird getrennt links und rechts ueber die Parameter 
     400         * a + b gesteuert (siehe ct 6 2006). Dabei wurde eine real aufgenohmene Sensorkennlinie 
     401         * zur Parameterbestimmung herangezogen. 
     402         * Um es noch realer zu machen, wird noch ein Zufallswert eingebracht. 
     403         *  
     404         * @param pos 
     405         *            Die Position, von der aus der Seh-Strahl verfolgt wird 
     406         * @param heading 
     407         *            Die Blickrichtung 
     408         * @param openingAngle 
     409         *            Der Oeffnungswinkel des Blickstrahls 
     410         * @param botBody 
     411         *            Der Koerper des Roboter, der anfragt 
     412         * @return Die Distanz zum naechsten Objekt in Metern 
     413         */ 
     414        public double watchGP2D12Obstacle(char side, Point3d pos, Vector3d heading, 
     415                        double openingAngle, Shape3D botBody) { 
     416                double distanz; //Ergebnis der Messung in m 
     417                double a = 0, b = 0; //Variablen der Berechungsformel 
     418                int i = 0; //Laufvariable 
     419                double [] aLeft = {-398.4, 3354.67, 4354.62, 5028.00, 0.0}; //a Werte fuer die linken Hyperbeln  
     420                double [] bLeft = {585.4, 111.67, 52.85, 28.4, 0.0}; //b Werte fuer die linken Hyperbeln 
     421                double [] mpLeft = {0.08, 0.17, 0.30, 999.0, -0.1};//Messgrenzpunkte fuer die linken Kurvenveraenderungen 
     422                double [] aRight = {-404.57, 3339.56, 4550.77, 5136.0, 0.0}; //a Werte fuer die rechten Hyperbeln  
     423                double [] bRight = {574.57, 106.56, 35.31, 15.8, 0.0}; //b Werte fuer die rechten Hyperbeln 
     424                double [] mpRight = {0.08, 0.17, 0.30, 999.0, -0.1};//Messgrenzpunkte fuer die rechten Kurvenveraenderungen 
     425                 
     426                //Vom simulierten Sensor, den Messwert holen 
     427                distanz = watchObstacle(pos, heading, openingAngle, botBody); 
     428                 
     429                //Abhaengig von der Position mit einer realen Sensorkurve Analogwert errechnen.  
     430                if (side == 'L') { 
     431                        for (i = 0; mpLeft[i] > 0.0; i++) 
     432                                if(distanz <= mpLeft[i]){ 
     433                                        a = aLeft[i]; 
     434                                        b = bLeft[i]; 
     435                                        break; 
     436                                } 
     437                } 
     438                else{ 
     439                        for (i = 0; mpRight[i] > 0.0; i++) 
     440                                if(distanz <= mpRight[i]){ 
     441                                        a = aRight[i]; 
     442                                        b = bRight[i]; 
     443                                        break; 
     444                                } 
     445                } 
     446//              System.out.println("Seite=" + side + " Distanz="+ distanz+" i="+ i + " a="+ a +" b="+ b + "\n"); 
     447                return ((a /(distanz * 100) + b)/1000.0) + (Math.random()*5/1000); 
     448        } 
     449 
    394450 
    395451        /** 
    396452         * Liefert die Distanz in Metern zum naechesten Objekt zurueck, das man 
  • ctSim/ctSim/Model/Bots/CtBotSim.java

    RCS file: /ctbot/ct-Sim/ctSim/ctSim/Model/Bots/CtBotSim.java,v
    retrieving revision 1.4
    diff -u -r1.4 CtBotSim.java
     
    319319                 
    320320                // IR-Abstandssensoren aktualisieren 
    321321                if (updateSensIr) { 
    322                         this.setSensIrL(getWorld().watchObstacle(getSensIRPosition('L'), 
     322                        this.setSensIrL(getWorld().watchGP2D12Obstacle('L', getSensIRPosition('L'), 
    323323                                        new Vector3d(newHeading), SENS_IR_ANGLE, (Shape3D)getNodeReference(BOTBODY))); 
    324                         this.setSensIrR(getWorld().watchObstacle(getSensIRPosition('R'), 
     324                        this.setSensIrR(getWorld().watchGP2D12Obstacle('R', getSensIRPosition('R'), 
    325325                                        new Vector3d(newHeading), SENS_IR_ANGLE, (Shape3D)getNodeReference(BOTBODY))); 
    326326                } 
    327327 

Download in other formats:

  • Original Format

Trac Powered

Powered by Trac 0.11.7
By Edgewall Software.

http://www.ctmagazin.de/
http://www.ctmagazin.de/projekte/

  • Datenschutzhinweis
  • Impressum
  • Kritik, Anregungen bitte an c't-WWW
  • Mediadaten
  • Copyright © 2011 Heise Zeitschriften Verlag
  • International: The H, The H Security, The H Open Source