Simulation statischer und dynamischer Ziele

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Wu (ehem. Liu)

Aufgabenstellung

  1. Meilenstein 1
    1. Einarbeitung in die Simulation
    2. Simulation statischer Ziele in beiden Kursen
      1. Erstellen Sie in SVN einen Entwicklungs-Zweig (Branch).
      2. Arbeiten Sie in einem Testordner unter Demos/Hinzufuegen_von_statischen_Objekten
      3. Stellen Sie die Fahrbahn mit den vorhandenen Funktionen dar (siehe. Demos\Darstellung_der_Fahrbahn\)
      4. Schreiben Sie eine GUI mit der Sie Objekte mit Mausklick in die Fahrbahn einfügen (ginput).
      5. Berücksichtigen Sie die Krümmung der Kurve, so dass das Fahrzeug mittig in der Fahrbahn erscheint.
      6. Speichern Sie die Objekte in einer MAT-Datei (save).
      7. Laden Sie die Objekte in der Offline-Simulation (load).
    3. Testdokumentation
    4. Dokumentation im Wiki
  2. Meilenstein 2
    1. Simulation dynamischer Ziele in beiden Kursen
    2. Testdokumentation
    3. Ziel an Kreuzung hat Vorfahrt
    4. Testdokumentation
    5. Dokumentation im Wiki
  3. Meilenstein 3
    1. Bau dynamischer Ziele
    2. Testdokumentation
    3. Dokumentation im Wiki
  4. Meilenstein 4
    1. inbetriebnahme dynamischer Ziele auf dem Testparkours
    2. Testdokumentation
    3. Dokumentation im Wiki

Autor: ehemals Wu (beendet)

Einleitung

Dieses Projekt wurde im Rahmen des Praktikums Systementwurf des Studiengangs Mechatronik an der Hochschule Hamm-Lippstadt durchgefuhrt. Das Projekt ist ein Teilbereich der OSE - Objekt- und Spurerkennung.Im diesen Artikel wird dargestellt,wie die statischen und statischen Objekte auf die Fahrbahn gesetzt und von Fahrzeug ausgeweicht werden können.

Anforderungen

Folgend werden Anforderungen aufgelistet:

  • Darstellung\Simulation der Fahrbahn mit vorhandenen Funktionen in einer Figur (PlotFahrbahn.m)
  • Auswahl von 6 Positinen per Mausklick auf der dargestellten Fahrbahn.
  • Speicherung ausgewählter Objekte in einer mat-File.
  • Hochladen der gespeicherten Objekte in die offline.m.
  • Die Objekte\Hindernisse konnen auf beiden Fahrspuren erzeugt werden.
  • Die Objekte\Hindernisse sollen mittig ausgerichtet werden.
  • Kruemmung der Fahrbahn soll bei der Positionierung der Objekte berucksichtigt werden.

Vorgehensweise

  1. Das Erstellen\Plot der Fahrbahn in einer Figur erfolgt mit der Funktion PlotFahrbahn.m.

Um die Fahrbahn in einer Figur darzustellen, sollte dazu eine Funktion names PostionDerObjekte.m angelegt, in der die für die Darstellung der Fahrbahn gebrauchten Funktionen und Befehle eingefügt werden sollten.Hier wurde die Fahrbahn mit Kreuzung( PAR_Modi_Schalter_Fahrbahn_int = 1;) ausgewählt.

Abbildung1:Das geplotete Fahrbahn
 
function []=PostionDerObjekte()
%% Laden verschiedener Fahrbahnformen %%%%%%%%%%%%%
% 0: Rundkurs ohne Kreuzung
% 1: Rundkurs mit Kreuzung
PAR_Modi_Schalter_Fahrbahn_int = 1;
figure
    hold on
    plotFahrbahn()
    axis(gca,'equal');
    xlabel('x in m');
    ylabel('y in m');
end
  1. Auswahl von 6 Positinen per Mausklick auf der dargestellten Fahrbahn.

Die Auswahl der Position mit Mausklick an der die Objekte erstellt werden sollen erfolgt mit der Funktion

Abbildung2:Auswahr 6 Positionen

[a b]=ginput().

[a, b] = ginput(nMaxObjekte)
  1. Speicherung ausgewählter Objekte in einer mat-File.

Es ist harmlos, wenn die ausgewählten Optionen direkt in mat-Datei gespeichert werden, da die Optionen noch bearbeitet werden müssen.Wenn sich die Position Beispielweise am Rand der Fahrbahr befinden,sollen die zum einen nähsten zu der Mittelinie der inneren oder äußeren Fahrspur gehörigen Punkt wandert werden, diese Punkte können mit diesem Algorithmus gefunden werden.

 
 Dist = sqrt((X-a(i)).^2+(Y-b(i)).^2);
        [~ , ObjIdx] = min(Dist) ;

Diese Punkte werden später als die Position der zu plotenden Objekte benutzt.Die X-Y Koordinaten von Mittelinie der äußeren Spur wurde schon unter FahrbahnMitKreuzung.mat gespeichert, dies braucht man nicht zu bestimmen.Ein Schwerpunkt ist die Mittelinie von der inneren Fahrspur zu finden ,dafür sind die folgenden Spalten zuständig,einschlägige Befehle sind am Anfang der gesamten Programmierung definiert.

 
%% ERzeugen der Mittlinie zwischen A und B
iMax = length(PAR_SenKam_BahnZ_f64);
X = PAR_SenKam_BahnZ_f64(1,:); X(1,iMax+1)=PAR_SenKam_BahnZ_f64(1,1); %Ende mit Anfang verbinden
Y = PAR_SenKam_BahnZ_f64(2,:); Y(1,iMax+1)=PAR_SenKam_BahnZ_f64(2,1); %Ende mit Anfang verbinden
% Schleife 黚er alle Datenpunkte
for i=1:iMax
    Winkel_deg = atan2((Y(i+1)-Y(i)),(X(i+1)-X(i)))*180/pi; % Kurs
    n1=[sind(Winkel_deg);-cosd(Winkel_deg)]; % Normalenvektor
    ABmitte(:,i)=PAR_SenKam_BahnZ_f64(:,i)-0.41*n1;
end
save('MittelinieZwischenA_und_B','ABmitte');
X2=ABmitte(1,:);
Y2=ABmitte(2,:);
Abbildund3: Die Mittlinie der inneren Fahrspur








  1. Die Objekte sollen auf den beiden Fahrbahnen erscheinen

Um die Objekte auf beiden Fahrspruren zu setzen, muss festgestellt, auf welcher Spur die ausgewählten Position sich befinden,eine "for-Schleife" und ein Algorithmus dienen dazu. Die Schleife wird folgend beschrieben.

if Dist>=0.205
PAR_SenAbs_ObjektListe_f64(i,:) = [ i   X2(ObjIdx) Y2(ObjIdx)	0.20    0.3  Ausrichtungswinkel_deg       0	100];
    save('ObjektPlatzierung','PAR_SenAbs_ObjektListe_f64');
else
PAR_SenAbs_ObjektListe_f64(i,:) = [ i   X(ObjIdx) Y(ObjIdx)	0.20    0.3   Ausrichtungswinkel_deg       0	100];
    save('ObjektPlatzierung','PAR_SenAbs_ObjektListe_f64');
end
Abbildung4:Objekte auf beisen Kursen

Fazit