diff --git a/modules/CACC/moduleCACC.pdf b/modules/CACC/moduleCACC.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9be862f69c9ca3f2770069c1760408d97823343d
Binary files /dev/null and b/modules/CACC/moduleCACC.pdf differ
diff --git a/modules/CACC/moduleCACC.tex b/modules/CACC/moduleCACC.tex
new file mode 100644
index 0000000000000000000000000000000000000000..559a5f7fd0840236dfecdf100d35e96ed009d23e
--- /dev/null
+++ b/modules/CACC/moduleCACC.tex
@@ -0,0 +1,165 @@
+\documentclass[fleqn,a4paper,12pt]{article}
+\usepackage{geometry}
+\geometry{left=30mm, right=40mm, bottom=30mm}
+\usepackage[german]{babel}
+\usepackage[utf8]{inputenc} %Für Umlaute
+
+\usepackage{amsmath}		% Mathematische Symbole
+\usepackage{amssymb}		% Nochmehr mathematische Symbole
+\usepackage{stmaryrd}		% Für die [[ ]] Klammern (\llbracket, \rrbracket)
+\usepackage{dsfont}			% Schriftsatz fuer Zahlenmengensymbole
+%\usepackage{verbatim}		% erweiterte Verbatim-Umgebung
+\usepackage{alltt}			% Quasi-Verbatim-Umgebung
+\usepackage{fancyhdr}		% Eigene Kopfzeilen
+\usepackage{graphics}		% Zum Einbinden von Grafiken
+\usepackage{tikz}			% Zur Erstellung von Graphen
+\usepackage{listings}		% Pseudo-Code Formatierung
+% Einbinden einer eps-Grafik geht so: includegraphics{path}
+
+% Seitenraender
+\addtolength{\voffset}{-2cm}
+\addtolength{\textheight}{0cm}
+\addtolength{\hoffset}{0cm}
+\addtolength{\textwidth}{2cm}
+%\addtolength{\headheight}{2cm} % fuer jeden Strichkode einen Zentimeter
+
+% Skalierung der Grafiken
+\setlength{\unitlength}{1cm}
+
+\pagestyle{fancy}				% Eigene Kopfzeilen verwenden
+\frenchspacing					% Kein Extrafreiraum nach Satzzeichen
+\setlength{\parindent}{0pt}		% Neue Absaetze nicht einruecken
+%\sloppy						% Schlampige Absatzformatierung
+\fussy							% Penible Absatzformatierung
+\linespread{1.5}				% Zeilenabstand
+
+%tikz-definition
+\tikzstyle{rec} = [minimum width=1cm, minimum height=0.8cm, align = left,text centered, draw=black]
+
+%andere Definitionen
+\newcommand{\R}{{\mathbb R}}
+\newcommand{\N}{{\mathbb N}}
+\newcommand{\Z}{{\mathbb Z}}
+\newcommand{\Q}{{\mathbb Q}}
+\newcommand{\C}{{\mathbb C}} 
+\newcommand{\F}{\mathcal{F}}
+\newcommand{\less}{\setminus}
+\newcommand{\inv}{{}^{-1}}
+\newcommand{\Land}{\bigwedge}
+\newcommand{\Lor}{\bigvee}
+
+% Kopfzeile
+%\lhead{}
+%\rhead{}
+\lstset{ %
+	%backgroundcolor=\color{},   % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}; should come as last argument
+	basicstyle=\footnotesize,        % the size of the fonts that are used for the code
+	breakatwhitespace=false,         % sets if automatic breaks should only happen at whitespace
+	breaklines=true,                 % sets automatic line breaking
+	captionpos=b,                    % sets the caption-position to bottom
+	%commentstyle=\color{mygreen},    % comment style
+	%deletekeywords={...},            % if you want to delete keywords from the given language
+	escapeinside={\%*}{*)},          % if you want to add LaTeX within your code
+	extendedchars=true,              % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
+	%frame=single,	                   % adds a frame around the code
+	keepspaces=true,                 % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
+	keywordstyle=\color{blue},       % keyword style
+	language=Python,                 % the language of the code
+	%morekeywords={*,...},            % if you want to add more keywords to the set
+	numbers=left,                    % where to put the line-numbers; possible values are (none, left, right)
+	numbersep=5pt,                   % how far the line-numbers are from the code
+	numberstyle=\tiny,%\color{mygray}, % the style that is used for the line-numbers
+	%rulecolor=\color{black},         % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
+	showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
+	showstringspaces=false,          % underline spaces within strings only
+	showtabs=false,                  % show tabs within strings adding particular underscores
+	stepnumber=1,                    % the step between two line-numbers. If it's 1, each line will be numbered
+	stringstyle=\color{mymauve},     % string literal style
+	tabsize=2,	                   % sets default tabsize to 2 spaces
+	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.
+		
+	\subsection{Lösung}
+		Zunächst betrachtet man folgende 3 Ungleichungen
+		\begin{align*}
+			d_{IPD} - tol(IPD)\le &d_o \le d_{IPD} + tol(IPD)\\
+			v_{PS} - tol(PS) 	\le &v_o \le v_{PS} + tol(PS)\\
+			v_p - tol(v_p)	\le &v_o \le v_p + t(v_p)
+		\end{align*}
+		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 \ne 0$:
+		$$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\ne 0$ wie folgt zusammengeführt:
+		$$v_o^\prime = v_p \cdot \frac{d_o}{d_{IPD}} \cdot \frac{v_{PS}}{v_p}$$
+		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:
+		$$v_o^\prime = v_p \cdot \left(\frac{d_o}{d_{IPD}}\right)^2 \cdot \left(\frac{v_{PS}}{v_p}\right)^\frac{1}{2}$$
+		Dabei ist zu beobachten, dass mit
+		$$ v_p \cdot \left(\frac{d_o}{d_{IPD}}\right)^2 \cdot \left(\frac{v_{PS}}{v_p}\right)^\frac{1}{2} = \sqrt{v_p} \cdot \left(\frac{d_o}{d_{IPD}}\right)^2 \cdot \sqrt{v_{PS}}$$
+		die Bedingung $v_p \ne 0$ hinfällig wird.\\
+		\\
+		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.
+
+	\subsection{Validierung}
+		
+	\subsection{Implementierung}
+	
+
+\end{document}
+
+
+