SDE WS25: berechneMittellinie.m: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
[[Datei:berechneMittellinie.png|thumb|rigth|450px|Abb. 1: Berechnung der Mittellinie]] | [[Datei:berechneMittellinie.png|thumb|rigth|450px|Abb. 1: Berechnung der Mittellinie]] | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| '''Modul:''' || <code> | | '''Modul:''' || <code>berechneMittellinie.m</code> | ||
|- | |- | ||
| '''Revision:''' || | | '''Revision:''' || 10888 | ||
|- | |- | ||
| '''Autor:'''|| [[Benutzer: Lukas Berkemeier| Lukas Berkemeier]] | | '''Autor:'''|| [[Benutzer: Lukas Berkemeier| Lukas Berkemeier]] | ||
|- | |- | ||
| '''Datum:''' || | | '''Datum:''' || 28.10.2025 | ||
|- | |- | ||
| '''System:'''|| | | '''System:'''|| Matlab R2024b | ||
|- | |- | ||
| '''SVN-URL:'''|| <code>https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/ | | '''SVN-URL:'''|| <code>https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/m-files/berechneMittellinie.m</code> | ||
|} | |} | ||
= Einleitung/Funktion = | = Einleitung/Funktion = | ||
Im Skript <code>berechneMittellinie.m</code> wird die Position der Mittellinie im Welt-Koordinatensystem berechnet um die reale Mittellinie auf der Fahrbahn darzustellen. Dazu wird die gemessene Position der Mittellinie aus [[SDE WS25: AP 1.6 Messung der Mittellinie]] vom Alphabot-Koordinatensystem in das Welt-Koordinatensystem transformiert. Die aktuelle Position des Prismas (PW) dient als Translationsvektor und der Winkel der Fahrtrichtung bzw. des Alphabot-Koordinatensystems zum Welt-Koordinatensystem dient als Rotationswinkel. | |||
= Funktionaler Systementwurf = | = Funktionaler Systementwurf = | ||
== Anforderungen == | == Anforderungen == | ||
Die Anforderungen werden aus [[SDE WS25: AP 1. | Die Anforderungen werden aus [[SDE WS25: AP 1.7 Berechnung der Mittellinienposition]] entnommen. | ||
= Technischer Systementwurf = | = Technischer Systementwurf = | ||
Der Systementwurf entspricht dem Modulentwurf aus Abbildung 2. | Der Systementwurf entspricht dem Modulentwurf aus Abbildung 2. | ||
<gallery widths="700px" heights="700px"> | <gallery widths="700px" heights="700px"> | ||
Datei: | Datei: berechneMittelliniePAP.jpg|thumb|right|700px|Abb. 2: messeMittellinie.ino | ||
</gallery> | </gallery> | ||
= Komponentenspezifikation = | = Komponentenspezifikation = | ||
Der Punkt der Mittellinie wird berechnet. | |||
# | # Umrechnung der gemessenen Position der Mittellinie von Millimeter in Meter | ||
# | # Distanz Prisma - Infrarotsensoren = 65 mm bzw. 0.065 m | ||
# | # Punkt PA - Punkt der Mittellinie im Alphabot-Koordinatensystem aus Distanz vom Prisma zu den Sensoren und gemessener Position der Mittellinie erstellen | ||
# Homogene Koordinatentransformation des Punktes PA mit Rotationswinkel der Fahrtrichtung des Alphabot und aktuellem Standort des Prismas im W-Kos als Translationsvektor | |||
= Programmierung = | = Programmierung = | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong><code> | | <strong><code>berechneMittellinie.m</code> </strong> | ||
|- | |- | ||
|<syntaxhighlight lang=" | |<syntaxhighlight lang="matlab" style="background-color: #EFF1C1; font-size:small"> | ||
% PW - aktueller Standort des Prismas im W-Kos | |||
% positionMittellinie - Distanz der weißen Linie zur x-Achse des Alphabot | |||
% Winkel - Winkel der Fahrtrichtung des Alphabot im W-Kos | |||
% PWLinie - Punkt der Mittellinie im W-Kos | |||
function [PWLinie] = berechneMittellinie(PW, positionMittellinie, Winkel) | |||
positionMittellinie = positionMittellinie/1000; % Distanz in Meter berechnen | |||
distanzPrismaSensor = 0.065; % Distanz des Prismas zum mittleren Infrarotsensor in Meter | |||
% Messpunkt im Alphabot-Koordinatensystem A-Kos | |||
PA = [distanzPrismaSensor; positionMittellinie; 0; 0]; | |||
%% Koordinatentransformation A-Kos in W-Kos | |||
% Rotationswinkel = Pose | |||
% homogene Transformationsmatrix | |||
D = [cosd(Winkel) -sind(Winkel) 0 0;... | |||
sind(Winkel) cosd(Winkel) 0 0;... | |||
0 0 1 0; ... | |||
0 0 0 1]; | |||
% homogene KOS-Trafo A-Kos zu W-Kos | |||
PWLinie = D * PA + [PW(1);PW(2); 0; 0]; | |||
%% Ausgabe Punkt der Mittellinie im W-Kos | |||
PWLinie = PWLinie(1:3); | |||
end | |||
</syntaxhighlight> | </syntaxhighlight> | ||
|- | |- | ||
| Zeile 70: | Zeile 74: | ||
= Modultest = | = Modultest = | ||
Zum Testen des Moduls <code> berechneMittellinie.m </code> wurde die Funktion im Skript [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/m-files/TestberechneMittellinie.m TestberechneMittellinie.m] eingebettet und durch die Simulation getestet. Die Eingabedaten werden händisch eingegeben und der Berechnete Punkt in der Strecke visuell dargestellt. | |||
<br><br> | <br><br> | ||
Systematisches Vorgehen beim Testen: | Systematisches Vorgehen beim Testen: | ||
* | * TestberechneMittellinie.m öffnen | ||
* Werte für PW, positionMittellinie und Winkel wählen | |||
* TestberechneMittellinie.m starten | |||
* | |||
* | |||
<br> | <br> | ||
{| class="wikitable" | {| class="wikitable" | ||
| Zeile 95: | Zeile 93: | ||
|- | |- | ||
| 1 | | 1 | ||
| | | Berechnung für positive Werte der Mittellinienposition | ||
[[Datei: | |* PW = [4;0.41;0] | ||
* positionMittellinie = 20 | |||
* Winkel = 0 | |||
| Mittellinienposition in Fahrtrichtung Links der eingezeichneten Mittellinie | |||
| [[Datei:berechneMittelliniepositiv.png|thumb|rigth|450px|Abb. 3: Berechnung der Mittellinie - positiv]] | |||
| Lukas Berkemeier | | Lukas Berkemeier | ||
| | | 28.10.2025 | ||
|- | |- | ||
| 2 | | 2 | ||
| | | Berechnung für negative Werte der Mittellinienposition | ||
[[Datei: | | * PW = [4;0.41;0] | ||
* positionMittellinie = -20 | |||
* Winkel = 0 | |||
| Mittellinienposition in Fahrtrichtung Rechts der eingezeichneten Mittellinie | |||
| [[Datei:berechneMittellinienegativ.png|thumb|rigth|450px|Abb. 4: Berechnung der Mittellinie - negativ]] | |||
| Lukas Berkemeier | | Lukas Berkemeier | ||
| | | 28.10.2025 | ||
|- | |- | ||
| 3 | | 3 | ||
| | | Berechnung für positive Werte der Mittellinienposition, Winkel 90° | ||
[[Datei: | | * PW = [4;0.41;0] | ||
* positionMittellinie = 20 | |||
* Winkel = 90 | |||
| Mittellinienposition in Fahrtrichtung Rechts der eingezeichneten Mittellinie | |||
| [[Datei:berechneMittellinieneunzig.png|thumb|rigth|450px|Abb. 5: Berechnung der Mittellinie - 90° Winkel]] | |||
| Lukas Berkemeier | | Lukas Berkemeier | ||
| | | 28.10.2025 | ||
|- | |- | ||
|} | |} | ||
= Fehlerbehebung = | = Fehlerbehebung = | ||
= Zusammenfassung = | = Zusammenfassung = | ||
<p align="justify"> | <p align="justify"> | ||
Das Modul <code> | Das Modul <code>berechneMittellinie.m</code> wurde systematisch entworfen, getestet und dokumentiert. Sämtliche Anforderungen aus dem Arbeitspaket [[SDE WS25: AP 1.7 Berechnung der Mittellinienposition]] wurden erfüllt. Die Funktion kann eingesetzt werden um die Position der Mittellinie im Weltkoordinatensystem zu berechnen und dient als Grundlage um die reale Mittellinie der Fahrbahn in die Karte einzeichnen zu können. | ||
</p> | </p> | ||
= [[SDE WS25: AP 1. | |||
= [[SDE WS25: AP 1.7 Berechnung der Mittellinienposition | Zurück zum Hauptartikel]]= | |||
Aktuelle Version vom 10. November 2025, 18:24 Uhr

| Modul: | berechneMittellinie.m
|
| Revision: | 10888 |
| Autor: | Lukas Berkemeier |
| Datum: | 28.10.2025 |
| System: | Matlab R2024b |
| SVN-URL: | https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/m-files/berechneMittellinie.m
|
Einleitung/Funktion
Im Skript berechneMittellinie.m wird die Position der Mittellinie im Welt-Koordinatensystem berechnet um die reale Mittellinie auf der Fahrbahn darzustellen. Dazu wird die gemessene Position der Mittellinie aus SDE WS25: AP 1.6 Messung der Mittellinie vom Alphabot-Koordinatensystem in das Welt-Koordinatensystem transformiert. Die aktuelle Position des Prismas (PW) dient als Translationsvektor und der Winkel der Fahrtrichtung bzw. des Alphabot-Koordinatensystems zum Welt-Koordinatensystem dient als Rotationswinkel.
Funktionaler Systementwurf
Anforderungen
Die Anforderungen werden aus SDE WS25: AP 1.7 Berechnung der Mittellinienposition entnommen.
Technischer Systementwurf
Der Systementwurf entspricht dem Modulentwurf aus Abbildung 2.
-
Abb. 2: messeMittellinie.ino
Komponentenspezifikation
Der Punkt der Mittellinie wird berechnet.
- Umrechnung der gemessenen Position der Mittellinie von Millimeter in Meter
- Distanz Prisma - Infrarotsensoren = 65 mm bzw. 0.065 m
- Punkt PA - Punkt der Mittellinie im Alphabot-Koordinatensystem aus Distanz vom Prisma zu den Sensoren und gemessener Position der Mittellinie erstellen
- Homogene Koordinatentransformation des Punktes PA mit Rotationswinkel der Fahrtrichtung des Alphabot und aktuellem Standort des Prismas im W-Kos als Translationsvektor
Programmierung
berechneMittellinie.m
|
% PW - aktueller Standort des Prismas im W-Kos
% positionMittellinie - Distanz der weißen Linie zur x-Achse des Alphabot
% Winkel - Winkel der Fahrtrichtung des Alphabot im W-Kos
% PWLinie - Punkt der Mittellinie im W-Kos
function [PWLinie] = berechneMittellinie(PW, positionMittellinie, Winkel)
positionMittellinie = positionMittellinie/1000; % Distanz in Meter berechnen
distanzPrismaSensor = 0.065; % Distanz des Prismas zum mittleren Infrarotsensor in Meter
% Messpunkt im Alphabot-Koordinatensystem A-Kos
PA = [distanzPrismaSensor; positionMittellinie; 0; 0];
%% Koordinatentransformation A-Kos in W-Kos
% Rotationswinkel = Pose
% homogene Transformationsmatrix
D = [cosd(Winkel) -sind(Winkel) 0 0;...
sind(Winkel) cosd(Winkel) 0 0;...
0 0 1 0; ...
0 0 0 1];
% homogene KOS-Trafo A-Kos zu W-Kos
PWLinie = D * PA + [PW(1);PW(2); 0; 0];
%% Ausgabe Punkt der Mittellinie im W-Kos
PWLinie = PWLinie(1:3);
end
|
Modultest
Zum Testen des Moduls berechneMittellinie.m wurde die Funktion im Skript TestberechneMittellinie.m eingebettet und durch die Simulation getestet. Die Eingabedaten werden händisch eingegeben und der Berechnete Punkt in der Strecke visuell dargestellt.
Systematisches Vorgehen beim Testen:
- TestberechneMittellinie.m öffnen
- Werte für PW, positionMittellinie und Winkel wählen
- TestberechneMittellinie.m starten
Fehlerbehebung
Zusammenfassung
Das Modul berechneMittellinie.m wurde systematisch entworfen, getestet und dokumentiert. Sämtliche Anforderungen aus dem Arbeitspaket SDE WS25: AP 1.7 Berechnung der Mittellinienposition wurden erfüllt. Die Funktion kann eingesetzt werden um die Position der Mittellinie im Weltkoordinatensystem zu berechnen und dient als Grundlage um die reale Mittellinie der Fahrbahn in die Karte einzeichnen zu können.


