Berechnung des Spurpolynoms: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
(Berechnung von b und c hinzugefügt)
K (Text hinzugefügt)
Zeile 26: Zeile 26:


== Generierung von C/C++ Code ==
== Generierung von C/C++ Code ==
Damit die in Matlab programmierte Funktion in C/C++ genutzt werden kann, muss daraus C/C++ Code generiert werden. Dazu wird der Matlabcodegenerator verwendet. Die Verwendung wird in dem Wikiartikel [https://wiki.hshl.de/wiki/index.php/Von_Matlab_zu_C_Code Von Matlab zu C code] beschrieben.


== Aufruf des generierten Codes ==
== Aufruf des generierten Codes ==

Version vom 7. Februar 2020, 16:15 Uhr

Autor: Luca Di Lillo
Betreuer: Prof. Schneider

Einleitung

Damit das Fahrzeug geregelt entlang der ermittelten Fahrbahn fahren kann, muss ein Spurpolynom aus den erkannten Punkten auf der Fahrbahn ermittelt werden. Daher befasst sich dieser Artikel mit der Berechnung des Spurpolynoms. Das ermittelte Polynom ist ein Polynom zweiten Grades mit den Koeffizienten a, b und c, die zusammen das Polynom bilden. Die Programmierung erfolgt in Matlab anhand mit Hilfe eines Beispielprogramms von Prof. Schneider. Mit den Erkenntnissen des Beispielprogramms soll dann eine Funktion erstellt werden, die aus beliebig vielen Werten ein Polynom berechnet. Im Anschluss soll aus dem Matlab Code C/C++ Code generiert werden, um die Funktion in das Kameraprojekt einzubinden.

Softwareentwurf

Die Funktion zur Berechnung des Spurpolynoms wurde vor der Programmierung in Form eines PAP erstellt.

Abb. 1: Sendevorgang des Spurpolynoms

Programmierung

Die Programmierung der Funktion erfolgte in Matlab, da das Rechnen mit Matrizen und Vektoren dort einfach als in C/C++ ist. Im Folgenden wird die Umsetzung der Funktion genauer erläutert.
Die Funktion arbeitet nach der Quadratischen polynomischen Regression. Die Funktion erhält als Eingabeparamter einen Vektor mit n x-Messwerten und einen mit n y-Messwerten. In der Späteren OSE Software werden die Messwerte die ermittelten Schnittpunkte der Fahrbahn sein, die Werte können jedoch auch allgemeine Werte sein aus denen ein quadratisches Polynom gebildet werden soll. Die weitere Berechnung wird hier schrittweise aufgeführt:

  • Multiplikation aller x und y Werte zu dem Wert xy
  • Quadrieren der x Werte
  • Kubieren der x Werte
  • Vierte Potenz der x Werte
  • Quadrieren der x-Werte und Multiplikation mit den y-Werten

Durch diese vorbereitenden Rechenoperationen können jetzt die Koeffizienten a, b und c des Spurpolynoms berechnet werden:

  • Berechnung von a:
  • Berechnung von b:
  • Berechnung von c:

Die berechneten Koeffizienten bilden jetzt den Rückgabewert der Funktion. Aus ihnen kann ein Spurpolynom in der Form gebildet werden.

Generierung von C/C++ Code

Damit die in Matlab programmierte Funktion in C/C++ genutzt werden kann, muss daraus C/C++ Code generiert werden. Dazu wird der Matlabcodegenerator verwendet. Die Verwendung wird in dem Wikiartikel Von Matlab zu C code beschrieben.

Aufruf des generierten Codes

Komponententest

Da es sich bei dieser Entwicklung um die einer einzelnen Komponente handelt, schließt der Komponententest mit dem Testbericht die Entwicklung ab.

Testfall Testfallbeschreibung Eingänge a,b und c Erwartetes Ergebnis beim Empfänger Testergebnis Testperson Datum
1 OK Marius Koehler
2 OK Marius Koehler
3 OK Marius Koehler
4 OK Marius Koehler
5 OK Marius Koehler

Zusammenfassung

Link zum Quelltext und zum Komponententest in SVN

Weiterführende Quelle

Regressionsanalyse der Uni Leipzig