kramann.info
© Guido Kramann

Login: Passwort:










Regelungssysteme
1 day_by_day
2 Heizregelkreis
3 Verzoegerungsglieder
4 Laplace
..4.1 Eigenwerte
..4.2 PT1
..4.3 PRegler
..4.4 Scilab
5 Regleroptimierung
..5.1 Guetefunktion
..5.2 Heuristiken
..5.3 Scilab
..5.4 Gradientenverfahren
..5.5 ModifizierteG
..5.6 Gleichstrommotor
..5.7 Stoerverhalten
6 Javaanwendung
..6.1 PIDgeregelterAntrieb
..6.2 RungeKuttaIntegrator
..6.3 Gradientenverfahren
7 Einstellregeln
..7.1 Totzeit
..7.2 Methode1
..7.3 Methode2
..7.4 Scilab
..7.5 Daempfungsgrad
..7.6 Uebung
8 Polvorgabe
9 Beobachter
10 AutonomerHackenprosche
..10.1 Herleitung
..10.2 Scilab
..10.3 Modellerweiterung
..10.4 Scilab
..10.5 Modellgueltigkeit
..10.6 java
11 Stabilitaet
..11.1 Beispiele
..11.2 Nyqusitkriterium
..11.3 Windup
..11.4 Bode
12 Adaptiv
..12.1 Definition
..12.2 Einachser
..12.3 Auswertung
..12.4 Identifikation
..12.5 Regleroptimierung
..12.6 Zustandsregler
..12.7 Beobachter
13 Analyse
..13.1 Linear
..13.2 Nichtlinear
14 Kalmanfilter
15 Ue_04_2014
..15.1 Geschwindigkeit
..15.2 Richtung
..15.3 Gesamtsystem
..15.4 RiccatiUSW
..15.5 TdOT
16 Inverses_Pendel
17 Einachser
..17.1 Mechanik
..17.2 Uebung8
18 Fuzzy
..18.1 Fuzzylogik
..18.2 FuzzyRegler
..18.3 Uebung9
..18.5 Softwareentwicklung
....18.5.1 AgileSoftwareentwicklung
....18.5.2 FuzzyRegler
....18.5.3 Uebung
..18.6 Umsetzung
....18.6.1 FuzzyRegler
....18.6.2 Simulation
....18.6.3 Optimierung
....18.6.4 Uebung
..18.7 Haengependel
....18.7.1 Haengependel
....18.7.2 Simulation
....18.7.3 FuzzyRegler
....18.7.4 Optimierer
....18.7.5 Genetisch
..18.8 Information
..18.9 Energie
21 Beispiel1
98 day_by_day_WS2021_SoSe21
99 day_by_day_SoSe2018
kramann.info
© Guido Kramann

Login: Passwort:




Modellerweiterung des autonomen Hackenporsche mit Radeigenschaften

(EN google-translate)

(PL google-translate)

  • Umsetzung in Scilab, Zwischenstand.
clear;
clc;
clearglobal;

//Parameter festlegen
b=0.3;             //[m]
m=10.0;            //[kg]
J=(2.0/3.0)*m*b*b; //[kg*m^2]
D=0.1;             //[Nm*s/rad]

ak=[1;2];
bk=[1;2];
ck=[0;0];

function ck = kreuz(ak,bk)
    ck =  ak(1,1)*bk(2,1)-ak(2,1)*bk(1,1);
endfunction

global b,m,J,D,kreuz;

y = [0,0,0,0,0,0]';

//function f = rechteSeite(t,y)
    xx     = y(1,1);
    vx     = y(2,1);
    yy     = y(3,1);
    vy     = y(4,1);
    phi    = y(5,1);
    omega  = y(6,1);

    beta = 0.1; //beliebig gewählt hier.
    bomega = 0; //Winkelgeschw. von beta.

    FAskal = 4; //[N], später unsere Stellgröße

    //Hilfsfunktionen
    TT  = [cos(phi),-sin(phi);sin(phi),cos(phi)];
    TTR = [cos(beta),-sin(beta);sin(beta),cos(beta)];

    //Besondere Behandlung von beta für betragsm. kleine Werte:
    BETAHILF = beta;
    KLEIN    = 0.000001;
    VORZEICHEN = 1;
    if beta<0 then VORZEICHEN=-1,end
    if abs(beta)<KLEIN then BETAHILF=VORZEICHEN*KLEIN,end

    //Ausgezeichnete Punkte vorausberechnen:

    

    oS_ = [0;0];
    oH_ = [-b;0];
    oP_ = [b;0];

    oS = [xx;yy];
    oH = oS + TT*[-b;0];
    oP = oS + TT*[b;0];

    //Momentanpol oQ

    oQ_ = [-b;2*b*cos(beta)/sin(BETAHILF)];
    oQ  = oS + TT*oQ_;

    //berechenbare Kraefte bestimmen:

    //Antriebskraft:
    FA_ = TTR*[FAskal;0];    
    FA  = TT*FA_;

    //Reibkräfte
    FRH_ = -D*[2*b*omega*cos(beta)/sin(BETAHILF);0];
    FRP_ = -D*[2*b*omega*cos(beta)/sin(BETAHILF);2*b*omega];

    //...im Inertialk.:
    FRH = TT*FRH_;
    FRP = TT*FRP_;

    //Zwangsbedingungen herleiten:
    CBH = cos(beta)/sin(BETAHILF);
    OMS = omega*sin(phi);
    OMC = omega*cos(phi);
    DCBH = -bomega/(sin(BETAHILF)*sin(BETAHILF));

    //[ddot x;ddot y] = ddot phi * AAA + BBB        

    AAA = b*[-sin(phi)+2*cos(phi)*CBH;cos(phi)+2*sin(phi)*CBH];    
    BBB = b*omega*[-OMC-2*OMS*CBH + 2*cos(phi)*DCBH;-OMS+2*OMC*CBH + 2*sin(phi)*DCBH];
//alfa==ddot phi
    //Bestimmung der Zwangskräfte:
    //  [I]      [ddot x;ddot y] = FH + FP + FA + FRH + FRP
    //=>[II]     alfa * AAA + BBB = FH + FP + FA + FRH + FRP
    //
    //Euler:
    //  J*alfa=  rSH'xFH'  + rSP'x FP' + rSP'x (FA' + FRP' )
    //<=> alfa=  (rSH'xFH')/J  + (rSP'x FP')/J + (rSP'x (FA' + FRP' ))/J
    //<=> alfa=  (rSH'xFH')/J  + (rSP'x FP')/J + CCC
    //<=> [III] alfa=  ( FHskal*(-b) )/J  + ( FPskal*(b*cos(beta)) )/J + CCC
    //eingesetzt in [II] die schon ersetzte Gl. der Newton-Gl. =>
// [IV] ( ( FHskal*(-b) )/J  + ( FPskal*(b*cos(beta)) )/J + CCC ) * AAA + BBB = FH + FP + FA + FRH + FRP
// <=> FHskal*AAA*(-b/J) + FPskal*AAA*(b*cos(beta)/J) + CCC*AAA + BBB = FH + FP + FA + FRH + FRP

//<=> FHskal*AAA*(-b/J) + FPskal*AAA*(b*cos(beta)/J) -FH -FP = -CCC*AAA - BBB + FA + FRH + FRP

//FH = TT*[0;FHskal] = [cos(phi),-sin(phi);sin(phi),cos(phi)]*[0;FHskal]
//FP = TT*[-FPskal*sin(beta);FPskal*cos(beta)]

    AAAAA = [0,0;0,0];

    AAAAA(1,1) = AAA(1,1)*(-b/J) + sin(phi);
    AAAAA(1,2) = AAA(1,1)*(b*cos(beta)/J) + sin(beta)*cos(phi) +cos(beta)*sin(phi);

    AAAAA(2,1) = AAA(2,1)*(-b/J)            - cos(phi);
    AAAAA(2,2) = AAA(2,1)*(b*cos(beta)/J)   + sin(beta)*sin(phi) - cos(beta)*cos(phi);


    CCC = (  kreuz([b;0],(FA_ + FRP_))  )/J;

    bbbbb =  -CCC*AAA - BBB + FA + FRH + FRP;

    //Zangskraft bestimmen:
    Fzwang = inv(AAAAA)*bbbbb;

    FHskal = Fzwang(1,1);
    FPskal = Fzwang(2,1);

    FH_ = [0;FHskal];
    FP_ = FPskal*[-sin(beta);cos(beta)];

    FH  = TT*FH_;
    FP  = TT*FP_;

    f(1,1) = vx;
    f(2,1) = (FA(1,1)+FH(1,1)+FP(1,1)+FRH(1,1)+FRP(1,1))/m;
    f(3,1) = vy;
    f(4,1) = (FA(2,1)+FH(2,1)+FP(2,1)+FRH(2,1)+FRP(2,1))/m;
    f(5,1) = omega;
    f(6,1) = (  kreuz([-b;0],FH_) + kreuz([b;0],(FA_+FP_+FRP_))  )/J;

//endfunction

Code 0-1: Aktueller Stand zum erweiterten Simulationsmodell.