Fahrzeugsoftware

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Zur groben Übersicht ein eventueller Leitfaden!!!!

Allgemeines

Das Projekt "Autonom fahredes Fahrzeug für den Carolo Cup" ist ausschlißlich in MATLAB 2013a / Simulink (für AEP, BSF, Längs- und Querregelung) und Visual Studio (Spurtracking mit Kamera, Objekterkennung mit Laserscanner und Kamera) programmiert.

Zu beachten ist dabei, dass keine MATLAB 2012a und MATLAB 2013a Skripte gemischt werden dürfen. Es muss eine einheitliche Programmierung in der gleichen Version erfolgen! Sollte also eine neue Version MATLAB 2014a auf dem Markt erscheinen, muss darauf geachtet werden, alle einzelnen Skripte und Bibliotheken auf diese Version zu aktualisieren.

Es bestehen zwei Simulinkmodelle, die je nach Auswahl in der Hauptdatei "start.m" ausgeführt werden. Zum Einen gibt es den Offline-Betrieb, welcher zur Simulation der einzelnen Funktion zur Verfügung steht, um Fehler in der Programmierung schnellstmöglich beheben zu können. Zum Anderen existiert der Online-Betrieb, welcher mit den realen Rückgabewerten der am Fahrzeug verbauten Sensoren arbeitet und den Motor und die Servolenkung über PWM-Signale ansteuert.

- Aufruf unter SVN/.../start.m mit MATLAB 2013a (32 bit)

Das Hauptprogramm, worin alle Bibliotheken und Parameter geladen werden, ist die Datei "start.m".

Matlabskripte

Hauptdatei start.m

Die Datei "start.m" ist diejenige Datei, in der zu Beginn entschieden wird, in welchen Modi das Simulink geöffnet werden soll. Dabei kann zu Beginn zwischen dem Online- und Offline-Betrieb gewählt werden.

%% Auswahl des Simulationstyps %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Schalter "Simulation". 
% 0: Modell für die dSPACE-Karte
% 1: Simulation offline
Schalter_offline    = 1;

Im Anschluss wird die Wahl getroffen, welche Aktion das Fahrzeug durchführen soll. Die Variable "Simulinkmodus" wird im späteren Verlauf dafür verwendet, die passenden Parameter für die entsprechende Durchführung zu laden.

%% Auswahl des Simulinkmodus %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 1: BSF (Bahn und Spurführung)
% 2: AEP (Einparkmodus: Lücke suchen, vermessen und anschließend anhalten)
% 3: AEP (Einparkmodus: Lücke suchen, vermessen und einparken)
Simulinkmodus    = 3;

In der Regel wird von den einzelnen Funktion die Geschwindigkeit und der Lenkwinkel selbst bestimmt. Dennoch gibt es die Möglichkeit, die Werte manuell zu bestimmen. Dafür muss der Variablen Lw_Vw_Manuell der Wert 1 zugewiesen werden und im Anschluss die Gewünschte Geschwindigkeit in Metern pro Sekunde und der Lenkwinkel in Radiant eingegeben werden.

%% Quelle für Solllenkwinkel und Sollgeschwindigkeit %%%%%%%%%%%%%%%%%%%%
% 0: Automatisch
% 1: manuelle Vorgabe (Werte s. u. beim Fahrmanöver)
Lw_Vx_Manuell               = 0; 

% Bei Wahl der manuellen Vorgaben
PAR_Famo_VxSollManuell_f64  = 0.5;          % Sollgeschwindigkeit [m/s]
PAR_Famo_LwSollManuell_f64  = 2 * pi/180;   % Solllenkwinkel [rad]

Für den Fall der Wahl des Einparkmodus besteht die Möglichkeit, die parkenden Fahrzeuge in der Parkbucht per Zufall setzen zu lassen, oder für schnelles Testen die größte Parklücke direkt nach dem ersten parkenden Fahrzeug zu positionieren (siehe param_Sen_offline.m).

%% Im Fall AEP: Positionswahl der Objekte %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 1: Positionierung zufällig
% 0: Positionierung vorgegeben (größte Lücke vorne)
global PAR_Modi_Schalter_Luecke_int
PAR_Modi_Schalter_Luecke_int = 0;

Im darauf folgenden Schritt wird die Basisschrittweiter der Simulation bestimmt. Dabei ist darauf zu achte, dass die Bahn- und Spurführung keine größere Schrittweite als 0,005s besitzen darf, da sonst die Querregelung instabil wird. Die Einparksimulation hingegen wird deutlich langsamer bei einer so geringen Schrittweite. Daher ist für diese der Wert 0,02s gewählt worden. Die Variable "T" wird im Offline-Simulinkmodell für die einzustellende Schrittweite verwendet.

%% Basisschrittweite [s]
switch Schalter_offline
    case 1
        T = 0.005;   % Basisschrittweite [s] offline: Regelung BSF mit T = 0,02 instabil!
       if Simulinkmodus == 3 || Simulinkmodus == 2
        T = 0.02;   % Basisschrittweite [s] 
       end
    case 0
        T = 0.005;  % Basisschrittweite [s] online
end

Parameterdateien

param_AEP.m

param_AKT_offline.m

param_AKT_online.m

param_BSF.m

param_CAR.m

param_ESM.m

param_OSE.m

param_SAB.m

param_SEN_offline.m

param_SEN_online.m

Bibliotheken

bib_AutonomesEinparken.mdl

bib_BahnPlanungSpurfuehrung.mdl

bib_Einspurmodell_offline.mdl

bib_Fahrtmodus.mdl

bib_Kinematikmodell_offline.mdl

bib_ObjektSpurErkennung.mdl

bib_Sensoren_Aktoren_offline.mdl

bib_Sensoren_Aktoren_online.mdl

bib_SerCom

bib_Signalaufbereitung

Darstellungen

plot_nach_Einparksimulation.m

plot_nach_Simulation.m

plot_nach_Simulation_BSF.m

plot_nach_Simulation_sollgewschw.m

Funktionen

fahrbahn.m

fahrzeug.m

funktion_kameramodell.m

funktion_simulink_bus_add_to_workspace.m

funktion_simulink_simultan.m

funktion_simulink_simultan_draufsicht.m

funktion_simulink_simultan_Fahrspur.m

parkObjekt.m

Simulinkmodell

Offline-Betrieb zur Simulation

-> laden von CCF_offline

Sensorsimulierung

Kinematikmodell

Aktuatorsimulierung

Online-Betrieb auf dem Fahrzeug

-> Laden von CCF online

ControlDesk

Simulinkmodell einbinden

- in Simulink strg+b zum Builden - in ControlDesk Reloade /Rebuilden(Refresh?)

Layouts

Sensorinbetriebnahme

- Taster - Gyro, Hall, Infrarot

Modus überwachung

- In welchem Modus befinde ich mich? Was ist alles aktiv, was nicht?

Aufnahmen

- Wie nehme ich Sensorsignale in ControlDesk auf?

Signalverarbeitung