SDE Systementwurf SoSe2025: Testbericht berechneEntfernungPunktGerade.m: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| Zeile 25: | Zeile 25: | ||
! # !! Datei !! Beschreibung | ! # !! Datei !! Beschreibung | ||
|- | |- | ||
| 1|| [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/ | | 1|| [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/Test/TestBerechneEntfernungPunktGerade/berechneEntfernungPunktGerade.m <code>berechneEntfernungPunktGerade.m</code>] || zu testendes Modul | ||
|- | |- | ||
| 2|| [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/ | | 2|| [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/Test/TestBerechneEntfernungPunktGerade/testBerechneRegelabweichungSpur.m <code>testBerechneRegelabweichungSpur.m</code>] || Testfunktion für einen Punkt <math>P_W</math> mit Darstellung (vgl. Abb. 1) | ||
|- | |- | ||
| 3|| [ | | 3|| [hhttps://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/Test/TestBerechneEntfernungPunktGerade/testBerechneRegelabweichungSpurfcn.m <code>testBerechneRegelabweichungSpurfcn.m</code>] || Testfunktion für die gesamte Fahrspur mit Ergebnisdarstellung (vgl. Abb. 2, 3) | ||
|- | |- | ||
| 4 || [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Rundkurs_L33_E01_210/RechteFahrspur_W.mat RechteFahrspur_W.mat]|| Eingangsdatum für die rechte Fahrspur | | 4 || [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Rundkurs_L33_E01_210/RechteFahrspur_W.mat RechteFahrspur_W.mat]|| Eingangsdatum für die rechte Fahrspur | ||
Version vom 5. November 2025, 09:33 Uhr

| Modul: | berechneEntfernungPunktGerade.m
|
| Revision: | 10780 |
| Autor: | Prof. Dr.-Ing. Schneider |
| Datum: | 25.09.2025 |
| System: | MATLAB®-Funktion |
| SVN-URL: | https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/Test/TestBerechneEntfernungPunktGerade
|
Einleitung
Ziel des Projektes ist eine geregelte Fahrt eines AlphaBot entlang einer definierten Fahrspur (s. SDE_Systementwicklung_WS25/26:_Geregelte_autonome_Fahrt). Die Sollspur liegt als digitale Karte vor und die Istposition wird mit der Robotic Total Station gemessen.
Das zu testende Modul berechneEntfernungPunktGerade.m berechnet die Entfernung des eingehenden Punktes zur Fahrspur.
| # | Datei | Beschreibung |
|---|---|---|
| 1 | berechneEntfernungPunktGerade.m |
zu testendes Modul |
| 2 | testBerechneRegelabweichungSpur.m |
Testfunktion für einen Punkt mit Darstellung (vgl. Abb. 1) |
| 3 | [hhttps://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/Test/TestBerechneEntfernungPunktGerade/testBerechneRegelabweichungSpurfcn.m testBerechneRegelabweichungSpurfcn.m] |
Testfunktion für die gesamte Fahrspur mit Ergebnisdarstellung (vgl. Abb. 2, 3) |
| 4 | RechteFahrspur_W.mat | Eingangsdatum für die rechte Fahrspur |
| 5 | LinkeFahrspur_W.mat | Eingangsdatum für die linke Fahrspur |
| 5 | MittelLinie_W.mat | Eingangsdatum für die Mittellinie |
Funktionaler Systementwurf
| Req. | Beschreibung | Priorität |
|---|---|---|
| 1 | Die Funktion muss die mathematisch kürzeste Strecke des Punktes zur gegebenen Sollinie in m berechnen und als Rückgabe liefern. | 1 |
| 2 | Alle Koordinaten müssen im Welt-Koordinatensystem (Karten-KOS) behandelt werden. | 1 |
| 3 | Die nächstgelegenen Punkte und der Solllinie sollen zusätzlich als kartesische Koordinaten (x, y, z) zurückgegeben werden. | 2 |
| 4 | Fahrtrichtung ist GUZ. Für Punkte links der Sollinie ist der Wert negativ und rechts positiv. | 1 |
| Req. | Beschreibung | Priorität |
|---|---|---|
| 1 | Die Umsetzung muss mit MATLAB® erfolgen. | 1 |
| 2 | Header und Hilfe müssen den Funktionskopf bilden. | 1 |
| 3 | Kommentare müssen den Quelltext lesbar machen. | 1 |
| 4 | Die Programmierrichtlinien für MATLAB müssen eingehalten werden. | 1 |
Technische Systementwurf

Der technische Systementwurf wird in Abb. 2 als PAP dargestellt.
Komponentenspezifikation
Die Entfernung des Punktes von der Strecke zu wird mittels Vektorrechnung ermittelt (vgl. Abb. 5).
- Berechnung der Ortsvektore: ,
- Berechnung des Projektionsfaktors a:
- Berechnung der Projektion P' von P auf AB:
- Berechnung des Normalenvektors , der senkrecht von AB auf P zeigt (P'P):
- Berechnung des Abstandes d aus der Länge des Vektors :
- Vorzeichen gemäß Req. 4 anpassen.
Programmierung
berechneEntfernungPunktGerade.m
|
function [G1, G2, dMin]= berechneEntfernungPunktGerade(PW,aSollLinie_W)
for i= 1:length(aSollLinie_W)
if i<length(aSollLinie_W)
G1 = aSollLinie_W(:,i);
G2 = aSollLinie_W(:,i+1);
else
G1 = aSollLinie_W(:,end);
G2 = aSollLinie_W(:,1);
end
A(:,i)=[G1;0];
B(:,i)=[G2;0];
d(i) = berechneEntfernungPunktStrecke(A(:,i), B(:,i), PW);
end
[m index] = min(abs(d)); % geringste Abstand finden
%% Rückgabewerte
dMin = d(index); % in m
G1 = A(:,index); % in m
G2 = B(:,index); % in m
end
%% -------------------------------------------------------------
function d = berechneEntfernungPunktStrecke(A, B, P)
% -------------------------------------------------------------
% Konvertiere die Input Punkte in Vektoren
AP = P - A;
AB = B - A;
% Berechne die Projektion von AP auf AB (Projektionsfaktor)
projFaktor = dot(AP, AB) / norm(AB)^2;
% Prüfe, ob die Projektion innerhalb des Streckenabschnitts liegt
if projFaktor < 0
% Punkt P ist näher an A
d = norm(AP);
elseif projFaktor > 1
% Punkt P ist näher an B
BP = P - B;
d = norm(BP);
else
% Der projizierte Punkt liegt auf der Strecke AB
% Berechne die Projektion von AP auf AB
projAB_AP = projFaktor * AB;
% Berechne den Vektor, der senkrecht von P auf AB zeigt
perpendicular = AP - projAB_AP;
% Berechne den Abstand als die Länge dieses Vektors
d = norm(perpendicular);
end
q = A; % Ortsvektor zum Punkt auf der Geraden
u = B-A; % Richtungsvektor
% Vorzeichen: in Fahrtrichtung rechts der Sollinie ist positiv
v = cross((P-q),u);
if v(3)<0
d = -d; % links negativ
end
end
|
Modultest
Da es sich bei dieser Entwicklung um die einer einzelnen Komponente handelt, schließt der Modultest mit dem Testbericht die Entwicklung ab (vgl. Tabelle 3).



| ID | Testfallbeschreibung | Eingänge PW, Referenz | Erwartetes Ergebnis | Testergebnis | Testperson | Datum |
|---|---|---|---|---|---|---|
| 1 | Punkte links der Sollinie sind negativ. | [1.83;0.61;0], LinkeFahrspur_W.mat
|
-0.2 m (vgl. Abb. 3) | OK | Prof. Schneider | 19.06.2026 |
| 2 | Punkte rechts der Sollinie sind positiv. | [1.83;0.2;0], RechteFahrspur_W.mat
|
0.21 m (vgl. Abb. 4) | OK | Prof. Schneider | 19.06.2026 |
Zusammenfassung
Das Modul berechneEntfernungPunktGerade.m wurde systematisch entworfen, getestet und dokumentiert. Sämtliche Anforderungen in Tabelle 2 wurden erfüllt. Die Funktion kann eingesetzt werden, um für eine gemessene Position die Abweichung zur Sollspur zu berechnen. Der AlphaBot kann auf diese Abweichung zur Regelung verwenden.
→ zurück zum Hauptartikel: SDE Praktikum Systementwurf SoSe2025
→ zurück zum Hauptartikel: Reliability Engineering WS 25/26