SDE WS25: berechneMittellinie.m: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Lukas.berkemeier@stud.hshl.de (Diskussion | Beiträge)
Die Seite wurde neu angelegt: „thumb|rigth|450px|Abb. 1: Messung der Mittellinie '''Autor:''' Lukas Berkemeier = Einleitung/Funktion = Um die weißen Streifen der realen Mittellinie erfassen zu können müssen die genauen Koordinaten der Mittellinie gespeichert werden. Dazu ist es notwendig, die genaue Position der Mittellinie unter dem Alphabot, beim abfahren der Mittellinie, zu messen. Wie in Abbildung 1 zu sehen…“
 
Lukas.berkemeier@stud.hshl.de (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:messeMittellinieINOTest1.png|thumb|rigth|450px|Abb. 1: Messung der Mittellinie]]
[[Datei:berechneMittellinie.png|thumb|rigth|450px|Abb. 1: Berechnung der Mittellinie]]


'''Autor:''' [[Benutzer: Lukas Berkemeier|Lukas Berkemeier]]
{| class="wikitable"
|-
| '''Modul:''' || <code>berechneMittellinie.m</code>
|-
| '''Revision:''' || 10888
|-
| '''Autor:'''|| [[Benutzer: Lukas Berkemeier| Lukas Berkemeier]]
|-
| '''Datum:''' || 28.10.2025 
|-
| '''System:'''|| Matlab R2024b
|-
| '''SVN-URL:'''|| <code>https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/m-files/berechneMittellinie.m</code>
|}
= 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 =
 
== Anforderungen ==
Die Anforderungen werden aus [[SDE WS25: AP 1.7 Berechnung der Mittellinienposition]] entnommen.
 
= Technischer Systementwurf =
Der Systementwurf entspricht dem Modulentwurf aus Abbildung 2.
<gallery widths="700px" heights="700px">
Datei: berechneMittelliniePAP.jpg|thumb|right|700px|Abb. 2: messeMittellinie.ino
</gallery>
 
= 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 =
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong><code>berechneMittellinie.m</code>&thinsp;</strong>
|-
|<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)


= Einleitung/Funktion =
    positionMittellinie = positionMittellinie/1000; % Distanz in Meter berechnen
Um die weißen Streifen der realen Mittellinie erfassen zu können müssen die genauen Koordinaten der Mittellinie gespeichert werden. Dazu ist es notwendig, die genaue Position der Mittellinie unter dem Alphabot, beim abfahren der Mittellinie, zu messen. Wie in Abbildung 1 zu sehen, soll der Abstand der Mitte der Mittellinie zum zentralen Tracking Sensor des Alphabot als y-Koordinate gemessen werden. Dazu wird die Funktion messeMittellinie() aus dem Modul [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/WS2025/Sprint_1/c-files/messeMittellinie/messeMittellinie.ino messeMittellinie.ino] genutzt und wird in [[SDE WS25: messeMittellinie.ino]] beschrieben.
    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>
|-
|}
 
= Modultest =


= Anforderungen =
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.
{| class="wikitable"
<br><br>
Systematisches Vorgehen beim Testen:
* TestberechneMittellinie.m öffnen
* Werte für PW, positionMittellinie und Winkel wählen
* TestberechneMittellinie.m starten
<br>
{| class="wikitable"
{| class="wikitable"
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | Anforderung
! style="font-weight: bold;" | Testfallbeschreibung
! style="font-weight: bold;" | Priorität
! style="font-weight: bold;" | Eingang
! style="font-weight: bold;" | Person
! style="font-weight: bold;" | Erwartetes Ergebnis
! style="font-weight: bold;" | Testergebnis
! style="font-weight: bold;" | Testperson
! style="font-weight: bold;" | Datum
! style="font-weight: bold;" | Datum
|+ style = "text-align: left"|Tabelle 1: Anforderungen an das Arbeitspaket
|+ style = "text-align: left"|Tabelle 1: Testbericht für den Modultest
|-
|-
| 1
| 1
| Der Abstand zur Mittellinie muss korrekt gemessen (Toleranz +- 5mm)
| Berechnung für positive Werte der Mittellinienposition
| 1
|* 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
| 13.10.2025
| 28.10.2025
|-
|-
| 2
| 2
| Vorzeichen des Abstands muss zum Koordinatensystem passen(Abbildung 1)
| Berechnung für negative Werte der Mittellinienposition
|1
| * 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
| 13.10.2025
| 28.10.2025
|-
|-
|}
| 3
 
| Berechnung für positive Werte der Mittellinienposition, Winkel 90°
{| class="wikitable"
| * PW = [4;0.41;0]
|+ style="text-align:left;"| Tabelle 2: Nicht funktionale Anforderungen an das Arbeitspaket
* positionMittellinie = 20
|-
* Winkel = 90
! Req. !! Beschreibung !! Priorität
| Mittellinienposition in Fahrtrichtung Rechts der eingezeichneten Mittellinie
|-
| [[Datei:berechneMittellinieneunzig.png|thumb|rigth|450px|Abb. 5: Berechnung der Mittellinie - 90° Winkel]]
| 1 || Die Umsetzung muss mit der Arduino IDE erfolgen.|| 1
| Lukas Berkemeier
|-
| 28.10.2025
| 2 || Der Header muss den Funktionskopf bilden. || 1
|-
| 3 || Kommentare müssen den Quelltext lesbar machen. || 1
|-
|-
| 4 || Die Arduino IDE muss auf dem Computer installiert sein. (Version 2.3.6) || 1
|-
| 5 || Die Alphabot-Bibliothek Alphabot.h muss für die Arduino IDE installiert sein || 1
|}
|}


= Planung / Umsetzung / Kontrolle / Fehlerbehebung =
= Fehlerbehebung =
Das Gesamte Arbeitspakte Messung der Mittellinie wurde mit dem Modul [[SDE WS25: messeMittellinie.ino]] bearbeitet und Fertiggestellt. Die Dokumentation zur Planung, Umsetzung, Kontrolle und Fehlerbehebung ist in der Moduldokumentation hinterlegt.


= Zusammenfassung =
<p align="justify">
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>


----
= [[SDE WS25: AP 1.7 Berechnung der Mittellinienposition | Zurück zum Hauptartikel]]=
→ zurück zum Hauptartikel: [[SDE_Systementwicklung_WS25/26:_Geregelte_autonome_Fahrt|Geregelte Autonome Fahrt]]

Aktuelle Version vom 10. November 2025, 18:24 Uhr

Abb. 1: Berechnung der Mittellinie
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.

Komponentenspezifikation

Der Punkt der Mittellinie wird berechnet.

  1. Umrechnung der gemessenen Position der Mittellinie von Millimeter in Meter
  2. Distanz Prisma - Infrarotsensoren = 65 mm bzw. 0.065 m
  3. Punkt PA - Punkt der Mittellinie im Alphabot-Koordinatensystem aus Distanz vom Prisma zu den Sensoren und gemessener Position der Mittellinie erstellen
  4. Homogene Koordinatentransformation des Punktes PA mit Rotationswinkel der Fahrtrichtung des Alphabot und aktuellem Standort des Prismas im W-Kos als Translationsvektor

Programmierung

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


ID Testfallbeschreibung Eingang Erwartetes Ergebnis Testergebnis Testperson Datum
Tabelle 1: Testbericht für den Modultest
1 Berechnung für positive Werte der Mittellinienposition * PW = [4;0.41;0]
  • positionMittellinie = 20
  • Winkel = 0
Mittellinienposition in Fahrtrichtung Links der eingezeichneten Mittellinie
Abb. 3: Berechnung der Mittellinie - positiv
Lukas Berkemeier 28.10.2025
2 Berechnung für negative Werte der Mittellinienposition * PW = [4;0.41;0]
  • positionMittellinie = -20
  • Winkel = 0
Mittellinienposition in Fahrtrichtung Rechts der eingezeichneten Mittellinie
Abb. 4: Berechnung der Mittellinie - negativ
Lukas Berkemeier 28.10.2025
3 Berechnung für positive Werte der Mittellinienposition, Winkel 90° * PW = [4;0.41;0]
  • positionMittellinie = 20
  • Winkel = 90
Mittellinienposition in Fahrtrichtung Rechts der eingezeichneten Mittellinie
Abb. 5: Berechnung der Mittellinie - 90° Winkel
Lukas Berkemeier 28.10.2025

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.

Zurück zum Hauptartikel