kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz
80 Vorlesung_2014_10_01
81 Vorlesung_2014_10_08
82 Vorlesung_2014_10_15
83 Vorlesung_2014_10_22
84 Vorlesung_2014_10_29

31 Gleiter

31 (EN google-translate)

31 (PL google-translate)

  • Wesentliche Vereinfachung gegenüber "Gleiter".
  • Ein Körper gleitet über eine Ebene und kann über eine Kraft Fx in X- bzw. Fy in Y-Richtung beschleunigt werden.
  • Er besitzt einen Sensor, der ein 7x7 Rasterbild des Bodens liefert.
  • Am Boden ist eine Bahn eingezeichnet, der entlang das Vehikel sich bewegen soll.
  • Für die Regelung und Steuerung können die Sensordaten benutzt werden.
gleiter.zip - Ausgangspunkt für die nachfolgende Übung.
clear();
clf();

XMAX=500;
YMAX=500;

figur=gcf(); // Handler der Grafik holen
figur.figure_size= [500,500];
achsen = gca();
achsen.data_bounds = [0,0;YMAX,XMAX];//Achsen-Definitionsbereich

SENSORBREITE=7;
SENSORRADIUS = round(    (SENSORBREITE-1)/2   );

plot([0,500],[0,0]);
plot([0,500],[500,500]);
plot([0,0.01],[0,0]);

plot([100,400],[100,100]);
plot([100,400],[400,400]);
plot([100,100.01],[100,400]);
plot([400,400.01],[100,400]);

plot([150,350],[150,150]);
plot([150,350],[350,350]);
plot([150,150.01],[150,350]);
plot([350,350.01],[150,350]);


bodenmatrix = zeros(YMAX,XMAX);
sensormatrix = zeros(SENSORBREITE,SENSORBREITE);

for xx=100:400
    for yy=100:400
        bodenmatrix(yy,xx)=4;
    end
end
for xx=150:350
    for yy=150:350
        bodenmatrix(yy,xx)=0;
    end
end


Matplot1(sensormatrix,[0,0,SENSORBREITE,SENSORBREITE]); //Matrix füllt ganzen Bereich aus, Default-Colormap.
grafik = gce();
grafik.rect = [0,0,SENSORBREITE*8,SENSORBREITE*8];

x=120;
y=100;
t=0;
dt=0.03;
m=1.0;
D=0.1;
vx=0.0;
vy=0.0;
Fx=0.0;
Fy=0.0;
ZX=0;
ZY=0;
for i=1:1000

    xalt = x;
    yalt = y;

    ax = (Fx - D*vx)/m;
    ay = (Fy - D*vy)/m;
    vx = vx + dt*ax;
    vy = vy + dt*ay;
     x =  x + dt*vx;
     y =  y + dt*vy;

    //Sensormatrix aktualisieren:
    ix=round(x);
    iy=YMAX - round(y);  //Umgekehrt, da Koord. von bodenmatrix umgekehrt gegenüber plot.
    for xx=1:SENSORBREITE
        for yy=1:SENSORBREITE
            xb = xx+ix-SENSORRADIUS;
            yb = yy+iy-SENSORRADIUS;
            if (xb>0 & xb<=XMAX & yb>0 & yb<=YMAX) then 
                sensormatrix(yy,xx) = bodenmatrix(yy+iy-SENSORRADIUS,xx+ix-SENSORRADIUS);
            else
                sensormatrix(yy,xx) = 0;
            end 
        end
    end

    //Konzept für die Regelung -------------------------

    gewichte = [30,20,10,0,-10,-20,-30];
    wx = gewichte*sensormatrix(4,1:7)';
    wy = -gewichte*sensormatrix(1:7,4);

    Fx =  -30*wx + ZX;
    Fy =  -30*wy + ZY;

    if (wy>0 & wx==0) then
        ZX=20;
    elseif (wy<0 & wx==0) then
        ZX=-20;
    end

    if (wy==0 & wx>0) then
        ZY=20;
    elseif (wy==0 & wx<0) then
        ZY=-20;
    end

    //ENDE Konzept für die Regelung -------------------------

    sleep(10);
    plot([xalt,x],[yalt,y],'re');
    grafik.data = sensormatrix;    
    t=t+dt;
end

Code 31-1: gleiter.sce (vergl. oben).

Gleiterfahrt, Momentaufnahme.

Bild 31-1: Gleiterfahrt, Momentaufnahme.

Übung

Entwickeln und implementieren Sie ein rubustes, transparentes Konzept, mit dessen Hilfe das Fahrzeug gegen Uhrzeigersinn seine Bahn entlangfährt.

Machen Sie dabei gebrauch von den "Mustern für fehlertoleranten Softwareentwurf".