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
1 1 CHANGELOG fuer c't-Sim 2 2 ====================== 3 2006-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 3 8 2006-06-14 Benjamin Benz (bbe@heise.de) DTD und xml-files angepasst 4 9 5 10 2006-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
56 56 * @author Lasse Schwarten (lasse@schwarten.org) 57 57 * @author Christoph Grimmer (c.grimmer@futurio.de) 58 58 * @author Werner Pirkl (morpheus.the.real@gmx.de) 59 * @author Achim Pankalla (achim.pankalla@gmx.de) 59 60 */ 60 61 public class World extends Thread { 61 62 … … 391 392 System.out.println(botName + " hatte einen Unfall!"); 392 393 return false; 393 394 } 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 394 450 395 451 /** 396 452 * 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
319 319 320 320 // IR-Abstandssensoren aktualisieren 321 321 if (updateSensIr) { 322 this.setSensIrL(getWorld().watch Obstacle(getSensIRPosition('L'),322 this.setSensIrL(getWorld().watchGP2D12Obstacle('L', getSensIRPosition('L'), 323 323 new Vector3d(newHeading), SENS_IR_ANGLE, (Shape3D)getNodeReference(BOTBODY))); 324 this.setSensIrR(getWorld().watch Obstacle(getSensIRPosition('R'),324 this.setSensIrR(getWorld().watchGP2D12Obstacle('R', getSensIRPosition('R'), 325 325 new Vector3d(newHeading), SENS_IR_ANGLE, (Shape3D)getNodeReference(BOTBODY))); 326 326 } 327 327
