Simulation statischer und dynamischer Ziele: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 75: Zeile 75:
[a, b] = ginput(nMaxObjekte)
[a, b] = ginput(nMaxObjekte)
</source>
</source>
  Zur Erstellung der Hindernisse auf der inneren Fahrbahn wurde das Grundprinzip für die Erstellung solcher auf der  
# 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 zur der Mittelinie der inneren oder äußeren Fahrspur gehörigen nähsten Punkte mit diesem Algorithmus
<source line lang="matlab" style="font-size:small">
  Dist = sqrt((X-a(i)).^2+(Y-b(i)).^2);
        [~ , ObjIdx] = min(Dist) ;
</source>
gefunden. Diese Punkte werden später als die Position der zu plotenden Objekte benutzt.Die Mittelinie von 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 ,die folgende Spalten sind dafür zuständig,einschlägige Befehle sind in am Anfang der gesamten Programmierung definiert.
<source line lang="matlab" style="font-size:small">
%% 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,:);
</source>
Zur Erstellung der Hindernisse auf der inneren Fahrbahn wurde das Grundprinzip für die Erstellung solcher auf der  
   äußeren Fahrbahn angewendet und modifiziert.
   äußeren Fahrbahn angewendet und modifiziert.



Version vom 20. Mai 2019, 23:31 Uhr

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.

 
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
Abbildung2:Das geplotete Fahrbahn
  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 [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 zur der Mittelinie der inneren oder äußeren Fahrspur gehörigen nähsten Punkte mit diesem Algorithmus

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

gefunden. Diese Punkte werden später als die Position der zu plotenden Objekte benutzt.Die Mittelinie von 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 ,die folgende Spalten sind dafür zuständig,einschlägige Befehle sind in 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,:);

Zur Erstellung der Hindernisse auf der inneren Fahrbahn wurde das Grundprinzip für die Erstellung solcher auf der

 äußeren Fahrbahn angewendet und modifiziert.


Das Fahrzeug muss sich geregelt auf der Fahrbahn bewegen, dafür ist die Datei RundkursMitKreuzung.mat zuständig.Diese Datei fasst eine menge von Positionen zusammen,die eine Mittellinie auf der äußeren Fahrbahn darstellen. Das Fahrzeug und die erzeugten Hindernisse richten sich darauf aus.

Fazit