Die Klasse Fahrzeug

Die Attribute der Klasse Fahrzeug sind in folgender Abbildung eines stilisierten Auto dargestellt:

Die Position x,y,psi beziehen sich auf den Punkt in der Mitte der Hinterachse. Die Geschwindigkeit ist nicht in dem Bild dargestellt. Darauf wird später eigegangen. Die Skalierung und die Rückfuehrungen werden später behandelt.
public class Fahrzeug {
  double x; // x-Position
  double y;// y-Position
  double psi;// Gierwinkel
  double delta;// Lenkwinkel
  double v;// Geschwindigkeit

  double skal = 40;// Skalierungfaktor
  double kr; //Rückführung des Abstandes zur Sollbahn
  double kpsi; // Rückführung des Winkels zur Sollbahn
}

Das Fahrzeug hat eine Geschwindigkeit und eine Änderung des Gierwinkels:

Die Geschwindigkeiten werden zu einer Positionsäderung aufintegriert. Der Radabstand ist l:
Gerade:

Kreis:

Diese Berechnung findet in der Methode fahren statt:
public void fahre(double t){
  double l=1.8;
  double psi0;
  if ((delta < 0.001)&&(delta > -0.001)){ // Gerade fahren
    x = x + v * Math.cos(psi)*t;
    y = y - v * Math.sin(psi)*t;
  }
  else{ //Kreisfahrt
    psi0=psi;
    psi = v*t/l*Math.tan(delta)+psi0;
    x = (l/Math.tan(delta))*(Math.sin(psi)-Math.sin(psi0))+x;
    y = (l/Math.tan(delta))*(Math.cos(psi)-Math.cos(psi0))+y;
  }
}
Für die Regelung gibt es auch eine Methode:
  public void regle(double abstandsfehler, double winkelfehler){
    delta = -(kr*abstandsfehler+kpsi * winkelfehler);
    if(delta>(60.0/180.0*Math.PI)){
      delta = 60.0/180.0*Math.PI;
    }
    if(delta<(-60.0/180.0*Math.PI)){
      delta = -60.0/180.0*Math.PI;
    }
  }
Das Applet zum Downloaden: