Spurparameter (Sende-/Empfangsseite)

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Einleitung

In diesem Protokoll soll die Spurerkennung genauer untersucht werden, um mögliche Fehler zu erkennen und analysieren. Dazu wurde im Vorfeld eine Messung durchgeführt, die einen Vergleich zwischen der Spurerkennungssoftware und den versendeten Daten zieht. Mit diesen Daten und einer eindeutigen Referenz, können möglich Fehlerquellen gefunden und analysiert werden. Alle Messergebnisse sind im SVN-Ordner abgelegt.

Durchführung der Messung

In den beiden Abbildungen sind die Zustände der Kameraführung zu erkennen, die bei einer Messung verwendet wurde. Da es bei diversen Messungen zu einem unerklärlichen Fehler gekommen ist, wurde nur eine Vermessung der Geraden vollzogen. Dazu wurde die Spurerkennungssoftware gestartet und die versendeten Daten in ControllDesk aufgezeichnet. Die Ausgabe der Spurerkennungssoftware wurde dabei im Windows Command Windows ausgegeben und in einer Textdatei (ErsteMessung.txt) gespeichert. Die versendeten Daten sind zudem in einem .mat File archiviert.

Abb 1:Gerade
Abb 2: Kurve


Messdaten Auswertung

Zur Auswertung der zuvor vermessenen Messdaten, wurde hierzu ein Matlab Skript erstellt, welches die Daten beider Dateitypen einließt und grafisch Darstellt.

clc;
clear all;
close all;
 
addpath ('C:\Users\david\Documents\Technik\HSHL\Semester_06\22_Systementwurf\Systementwurf\Workshops\Abgaben\David Weigt & Yunkai Lin\Workshop_9\9_9');
addpath 'C:\Users\david\Documents\Technik\HSHL\Semester_06\22_Systementwurf\Systementwurf\Software\CaroloCupFahrzeug\funktionen' ;
Messdatei = 'Kamera_im_ex_ersteMessung.mat';
[CCF CCF_mess] =  funktion_wandle_dspacemess_in_CCF_mess(Messdatei);
 
%Laden der Messdaten aus Controlldesk
 
SenKam_SpurA_f64 = CCF_mess.SenKam_SpurA_f64;
SenKam_SpurB_f64 = CCF_mess.SenKam_SpurB_f64;
SenKam_SpurC_f64 = CCF_mess.SenKam_SpurC_f64;
 
%Laden der Referenzmessung
dateipfad = 'ErsteMessung.txt';
dateiID = fopen(dateipfad, 'r');
 
i = [1 1 1];
werte = [];
 
zeile = fgetl(dateiID);
while ischar(zeile)
  
    if startsWith(zeile, 'a:')
        wert = str2double(extractAfter(zeile, 'a:'));
        Ref_SenKam_SpurA_f64(i(1),:) = wert;
        i(1) = i(1) + 1;
    elseif startsWith(zeile, 'b:')
        wert = str2double(extractAfter(zeile, 'b:'));
        Ref_SenKam_SpurB_f64(i(2),:) = wert;
        i(2) = i(2) + 1;
    elseif startsWith(zeile, 'c:')
        wert = str2double(extractAfter(zeile, 'c:'));
        Ref_SenKam_SpurC_f64(i(3),:) = wert;
        i(3) = i(3) + 1;
    end
    zeile = fgetl(dateiID);
end
fclose(dateiID);
 
%Plot der Referenzmessung
subplot(3, 2, 1)
plot(Ref_SenKam_SpurA_f64);
title("Ref_SenKam_SpurA_f64");
subplot(3, 2, 3)
plot(Ref_SenKam_SpurB_f64);
title("Ref_SenKam_SpurB_f64");
subplot(3, 2, 5)
plot(Ref_SenKam_SpurC_f64);
title("Ref_SenKam_SpurC_f64");
 
%Plot der Controlldesk Messung
 
subplot(3, 2, 2)
plot(SenKam_SpurA_f64);
title("SenKam_SpurA_f64");
subplot(3, 2, 4)
plot(SenKam_SpurB_f64);
title("SenKam_SpurB_f64");
subplot(3, 2, 6)
plot(SenKam_SpurC_f64);
title("SenKam_SpurC_f64");

Ergebnis

Aus der Ausgabe des zuvor gezeigten Skripts ist hervorzugehen, dass nur ein Teil des Polynoms übertragen wurde. Dabei ist zu beachten das mit Ref_ die kopierten Messwerte des Windows Commands der Spurerkennungssoftware gemeint ist. Somit besteht ein Fehler in der Übertragung oder anschließender Auswertung der Daten.

Abb 3:Ergebnisse der Messung


Fehleranalyse

Die Fehlerquelle können an mehreren Stellen entstehen. So könnte eine fehlerhafte Übertagung der Grund für die fehlenden Messwerte sein. Dies könnte über ein Tool wie Wireshark leicht kontrolliert werden. Außerdem kann eine falsche Auswertung der Daten zum Fehlverhalten führen. Dies kann dank möglicher Open-Loop Simulationen überprüft werden.