title=\lstname% show the filename of files included with \lstinputlisting; also try caption instead of title
}
\begin{document}
\section{CACC-Modul}
\subsection{Problembeschreibung und Einordnung}
Das \textit{CACC}-Modul (Cooperativ adaptive curse controll) hat die Aufgabe dem eigenen Fahrzeug (eFZ) aus seinen aktuellen Daten und den Platoon-Daten eine neue Geschwindigkeit zu ermitteln, die das eFZ anstrebt um die gegebenen IPD und PS herzustellen und um Ziehharmonika-Effekte und Kollisionen zu vermeiden. Dafür stehen dem eFZ alle fahrzeuginternen sowie die Platoon-Daten IPD und PS zur Verfügung.\\
Die ermittelte Geschwindigkeit wird dann an den einen Controller weiter gegeben, der diese stetig auf den Motor umsetzt.\\
\\
\textit{Versuchsaufbau}\\
\subsection{Ansätze und Herausforderungen}
Dazu gab es direkt 2 Ansätze. Der erste ist eine 2-State-Machine, die abwechselnd zwischen \textit{IPD herstellen} und \textit{PS herstellen} schaltet.\\
\\
\textit{State-Machine}\\
\\
Dabei arbeiten die States entsprechend ihrer Bezeichnung. So bald sich das eFZ in \textit{IPD herstellen} befindet, wird versucht den Abstand auf zubauen. Dafür wird der PS zwischenzeitlich ignoriert. Im zweiten Zustand wird IPD ignoriert und der PS wird hergestellt. Im Falle der Unterschreitung der cIPD wird sofort der Versuch IPD und PS einstellen abgebrochen.\\
Die zweite Variante ist eine Loop, die beliebig lange nach folgenden Pseudocode arbeitet:
\begin{lstlisting}
while (True):
if dist < crit:
full_stop()
else
if dist < IPD - m:
decc()
elif dist > IDP + m:
acc()
else
if speed > PS:
decc()
elif speed < PS:
acc()
else:
hold_speed()
\end{lstlisting}
In beiden Fällen kristallisieren sich zwei neue Probleme heraus:
\begin{itemize}
\item[(1)] IPD und PS können potentiell genau entgegengesetzte Forderungen haben. Ist die eigene Geschwindigkeit höher als PS muss diese gesenkt werden. Ist das Die Entfernung zum Vorgänger größer als IPD, muss die Geschwindigkeit erhöht werden. Dieser Konflikt setzt eine Form der Priorisierung voraus.
\item[(2)] In allen Betrachtung über die eigenen Geschwindigkeiten, darf die Geschwindigkeit des Vorgängers nicht außer Betracht gelassen werden. Sollte sich der Vorgänger viel langsamer bewegen, dann muss genügt Zeit für Bremsvorgänge eingeplant werden.
\end{itemize}
Das bedeutet, dass die aktuelle eigene Geschwindigkeit $v_o := v_{own}$ und neue eigene Geschwindigkeit $v_o^\prime$ von den folgenden Größen abhängig ist:
\begin{align*}
d_{IPD}\leftrightarrow&\text{ Gewünschte IPD}\\
d_o \leftrightarrow&\text{ eigener Abstand zum Vorgägnger}\\
v_p \leftrightarrow&\text{ Geschwindigkeit des Vorgängers}\\
v_{PS}\leftrightarrow&\text{ Gewünschter PS}
\end{align*}
Damit lässt sich $v_o^\prime= f(v_o, d_o, v_p, d_{IPD}, v_{PS})$ darstellen.
wobei $tol$ die Toleranz für die Abweichung der jeweiligen Parameter angibt. Nun sei folgende Reihenfolge für die Zielumsetzung definiert:
$$ d_{IPD}\Rightarrow v_{PS}\Rightarrow v_p$$
Begründet ist diese Ordnung darin, dass die Einhaltung der Geschwindigkeit sinnfrei ist, wenn der Abstand über Geschwindigkeitsänderungen angepasst werden muss. Des Weiteren geht die Vorstellung des PS über die Vorstellung der Geschwindigkeit des Vorgängers, dieser das selbe Ziel anstrebt. Hält sich der Vorgänger nicht daran, müssen entsprechende Maßnahmen getroffen werden.\\
Das Primärziel ist die Einhaltung der richtigen $d_{IPD}$. Dafür dürfen vorübergehend $v_{PS}$ ignoriert und $v_P$ vernachlässigt werden. Das heißt, dass $v_o^\prime > v_p$ falls $d_o > d_{IPD}$, damit die Distanz $d_o$ zum Vorgänger kleiner wird, und $v_o^\prime < v_p$ falls $d_o < d_{IPD}$. Ist dann $d_o = d_{IPD}$ hergestellt, wird als nächstes $v_{PS}$ umgesetzt. Dabei darf die $d_{IPD}$ geringfügig ignoriert werden um Ziehharmonika-Effekte zu minimieren. Dabei wird zu dem die Geschwindigkeit des Vorgängers $v_p$ berücksichtigt um Kollisionen zu vermeiden.\\
\\
Die Einhaltung der $d_{IPD}$ in Formel ausgedrückt:
$$v_o^\prime= v_p \cdot\frac{d_o}{d_{IPD}}$$
Ist $d_o > d_{IPD}$ wird der Quotient $\frac{d_o}{d_{IPD}} > 1$ und damit folgt $v_o^\prime > v_p$ und umgekehrt.\\
\\
Die Einhaltung der $v_{PS}$ in Formel ausgedrückt, mit $v_p \ne0$:
$$v_o^\prime= v_p \cdot\frac{v_{PS}}{v_p}$$
Ist $v_p < v_{PS}$, dann wird $v_o^\prime > v_p$, da der Quotient $\frac{v_{PS}}{v_p}>1$ ist. Das geschieht unter der Annahme, dass $v_p\overset{t\to\infty}{\longrightarrow}v_{PS}$ mit der Zeit $t$. Andersherum gilt für $v_p > v_{PS}$, dass $v_o^\prime < v_p$, da $\frac{v_{PS}}{v_p}<1$ unter der Annahme, dass $v_p\overset{t\to\infty}{\longrightarrow}v_{PS}$.\\
\\
Um nun das Problem zu beheben, dass beide Formeln widersprüchliche Ziele haben können, werden diese unter Bedingung $v_p\ne0$ wie folgt zusammengeführt:
Des Weiteren soll die Abstandsregulierung höher gewichtet sein, da das Primärziel die $d_{IPD}$-Einhaltung ist. Um das umzusetzen bekommen Entfernungsabweichungen ein stärkeres Gewicht und Geschwindigkeitsabweichungen ein schwächeres Gewicht:
Also lässt $v_o^\prime= f(v_o, d_o, v_p, d_{IPD}, v_{PS})= g(d_o, v_p, d_{IPD}, v_{PS})$ ausdrücken, da die optimale Geschwindigkeit, nicht von der $v_o$ abhängt oder abhängen muss, da der nach geschaltete Controller eigenständig von der aktuellen Geschwindigkeit $v_o$ auf $v_o^\prime$ reguliert.