kramann.info
© Guido Kramann

Login: Passwort:










10.2 Umsetzung des autonomen Hackenporsche mit Scilab

10.2 (EN google-translate)

10.2 (PL google-translate)

Zunächst werden als Antrieb konstante Kräfte gesetzt:

l=1.0;
b=0.6;
c=0.5*b;
m=10.0;
J=(1/12)*m*(l*l+b*b);
D=1;

global l,b,c,m,J,D;

function f = rechteSeite(t,y)
//Reihenfolge y: xx,vxx,yy,vyy,phi,omega
    xx    = y(1,1); //Schwerpunt in I
    vxx   = y(2,1);
    yy    = y(3,1); //Schwerpunt in I
    vyy   = y(4,1);
    phi   = y(5,1); //Drehung von Quader in I
    omega = y(6,1);

    TT = [cos(phi),-sin(phi);sin(phi),cos(phi)];
    dTT = [-omega*sin(phi),-omega*cos(phi);omega*cos(phi),-omega*sin(phi)];

    oPPstrich = [0;c];
    oQQstrich = [0;-c];

    oPP = [xx;yy] + TT*oPPstrich; //Ortsvektor nach Punkt P in I
    oQQ = [xx;yy] + TT*oQQstrich; //Ortsvektor nach Punkt Q in I

    voPP = [vxx;vyy] + dTT*oPPstrich; //Ortsvektor-Geschw. von Punkt P in I
    voQQ = [vxx;vyy] + dTT*oQQstrich; //Ortsvektor-Geschw. von Punkt Q in I

    rPP = TT*oPPstrich; //Verbindungsvektor von Punkt S nach P in I
    rQQ = TT*oQQstrich; //Verbindungsvektor von Punkt S nach Q in I


//Vorwärts in X-Richtung:
//    skalarF1 = 10;
//    skalarF2 = 10;

//Drehen:
    skalarF1 = -10;
    skalarF2 = 10;

    F1 = TT*[skalarF1;0];
    F2 = TT*[skalarF2;0];

    FR1 = -D*voPP;
    FR2 = -D*voQQ;

    M1 = rPP(1,1)*F1(2,1) - rPP(2,1)*F1(1,1); //rPP x F1
    M2 = rQQ(1,1)*F2(2,1) - rQQ(2,1)*F2(1,1); //rQQ x F2

    MR1 = rPP(1,1)*FR1(2,1) - rPP(2,1)*FR1(1,1); //rPP x FR1
    MR2 = rQQ(1,1)*FR2(2,1) - rQQ(2,1)*FR2(1,1); //rQQ x FR2

    f(1,1) =  vxx;
    f(2,1) =  ( F1(1,1) + F2(1,1) + FR1(1,1) + FR2(1,1) )/m ;
    f(3,1) =  vyy;
    f(4,1) =  ( F1(2,1) + F2(2,1) + FR1(2,1) + FR2(2,1) )/m ;
    f(5,1) =  omega;
    f(6,1) =  ( M1 + M2 + MR1 + MR2 )/J ;
endfunction

t = 0:0.01:30;
y0 = [0,0,0,0,0,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

//plot(t,y(2,:)');
//plot(t,y(1,:)');
//plot(y(1,:)',y(3,:)');

plot(t,y(6,:)');

Code 10.2-1: Scilab-Code

Übung
simulation015_data.zip - ergänzendes Material (16.05.2012).

hackenporsche_optimiert_save.zip - ergänzendes Material (20.05.2012).

Aufgabe 1

  • Bauen Sie in das Modell einen PID-Regler für die Geschwindigkeit in X-Richtung ein.
  • Auf die Möglichkeit, in der zweidimensionalen Ebene zu fahren wird hier zunächst verzeichtet.

Aufgabe 2

  • Implementieren Sie nun den Markerpunkt MP, der dem Fahrzeug vorausfahren soll.
  • Der Markerpunkt MP soll eine Kreisfahrt von 1m Radius mit einer Geschwindigkeit von 2m pro Sekunde um den Koordinatenursprung vollführen.
  • Entwickeln Sie nun ein Regelungskonzept, bei dem das Fahrzeug dem Markerpunkt versucht in 0,1m Abstand zu folgen.

Aufgabe 3

  • Versuchen Sie zu Aufgabe 1 einen Zustansregler umzusetzen.
  • Dazu muß das Modell linearisiert werden.

Aufgabe 4

  • Läßt sich auch zu dem Konzept aus Aufgabe 2 alternativ ein Zustandsregler realisieren?

Aufgabe 5

  • Übertragen Sie eines der Regelungskonzepte nach Java und lassen Sie den Regler automatisch optimieren.

Aufgabe 6

  • Schreiben Sie mit einer Programmiersprache Ihrer Wahl ein Animationsprogramm für den "autonomen Hackenporsche".