Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
lastenheft.tex 36.19 KiB
\documentclass[fontsize=12pt,draft=false]{scrartcl}

%%% PACKAGES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\usepackage[english]{babel}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amssymb}
\usepackage[inline]{enumitem}
\usepackage[hidelinks]{hyperref}
\usepackage{tabularx} % used for better table formatting see: https://en.wikibooks.org/wiki/LaTeX/Tables#The_tabularx_package
\usepackage[table]{xcolor}
\usepackage{float} % used to allow the [H] option for tables, etc.
\usepackage{verbatim}	% makes multiline comments possible via \begin{comment}\end{comment}

%%% GLOSSARY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{../glossary.tex}

%%% BIBTEX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[ backend=bibtex,
             sorting=nty,
             maxbibnames=50,
             maxcitenames=8,
             style=alphabetic]{biblatex}
\bibliography{../literature.bib}
\DeclareFieldFormat{labelalpha}{\thefield{entrykey}}
\DeclareFieldFormat{extraalpha}{}

%%% USE CASE DIAGRAM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ifthen, tikz, xstring, calc, pgfopts} % required for tikz-uml
\usepackage{../tikz-uml}

%%% SETTINGS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{parskip}  % makes end of paragraphs use an empty line
\setlength\parindent{0pt} % no indentation

\def\arraystretch{1.0} % extra padding in tables

\definecolor{light-gray}{gray}{0.85}

%%% COMMANDS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\tabHead}[1]{\parbox{0.14\textwidth}{\medskip\textbf{#1}\medskip}}
\newcommand{\tabBody}[1]{\parbox{0.81\textwidth}{\medskip        #1 \medskip}}

%%% META INFORMATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{Hochautomatisiertes Fahren}
\subtitle{Lastenheft}
\author{Gruppe A}

%%% DOCUMENT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
  
\maketitle
\tableofcontents

\section{Projektbeschreibung}
Das Projekt soll in Zusammenarbeit mit der Firma Assystem eine Fahrerassistenzfunktion für automatisiertes Kolonnenfahren entwickelt werden. Diese soll dann an Modellfahrzeugen erprobt werden.

Die Konstruktion und der Aufbau der Modellautos (Hardware und Basis-Software) richtet sich nach Entwürfen des industriellen Partners. 

\subsection{Organisation}
Besagtes Projekt wird in drei Gruppen umgesetzt, welche hauptsächlich in 
paralleler, kooperativer Arbeit agieren. Die Gruppen werden mit
\textit{Gruppe A}, \textit{Gruppe B} und \textit{Gruppe C} bezeichnet.

Jeder Gruppe ist ein Modellauto zugeordnet. Ein viertes Modellauto steht
als Ersatz zur Verfügung.

Dieses Dokument basiert auf \cite{CrESt} und den darin verwendetet Bezeichnungen
und beschriebenen Use-Cases.
Während der Entwicklung sollte auf größtmögliche Konformität mit dem
bestehenden Projekt der Assystem geachtet werden.

\subsection{Stakeholder}
% wichtige Personen hier aufführen. Verantwortliche von Assystem u.a.
Humboldt-Universität zu Berlin
	\begin{itemize}
	\item Prof. Dr. Holger Schlingloff 
	\item Prof. Dr. Verena V. Hafner
	\end{itemize}
Assystem
	\begin{itemize}
	\item Oliver Kreuzmann
	\end{itemize}

\section{Zielvorstellungen / Ausbaustufen}
In diesem Abschnitt sollen Beispielszenarien beschrieben werden.
Das fertige System soll in der Lage sein, diese durchzuführen.
Dabei werden verschiedene Ausbaustufen definiert.

\subsection*{Minimale Zielvorstellung}\label{AS:min}
\addcontentsline{toc}{subsection}{\nameref{AS:min}}
Die drei Fahrzeuge werden hintereinander auf einer Geraden an der Startlinie
in einem fest vorgegebenen Kolonnenabstand aufgestellt. Alle drei Fahrzeuge sind 
bereits Mitglieder derselben Kolonne.
Das vorderste Fahrzeug ist bereits als Kolonnenführer (\gls{LV}) ausgewählt
worden. Dabei kann jedes Fahrzeug so konfiguriert werden, dass es als Kolonnenführer 
fungiert. Die Strecke ist eine gerade Linie und die Kolonnenmitglieder sind die 
einzigen Fahrzeuge auf der Strecke.

Der Operator platziert ein Hindernis irgendwo auf der Strecke und startet das 
ganze Szenario durch ein Fernsteuerungssignal an den Kolonnenführer, der 
daraufhin losfährt. Die drei Fahrzeuge fangen an, als Kolonne zu fahren, 
d.h. jedes Fahrzeug fährt in derselben Spur, in dieselbe Richtung und hält sich 
an die vom \gls{LV} festgelegte Kolonnengeschwindigkeit (\gls{PS}) und den 
Kolonnenabstand (\gls{IPD}).

Wenn das Hindernis auf der Route erreicht wird, hält die ganze Kolonne an und 
behält dabei die \gls{IPD} bei.
Bei schweren Störungen, wie etwa Kommunikationsstörungen oder andere technische 
Störungen, wird immer ein Emergency-Stop durchgeführt.
Es kommt in keinem Fall während der Fahrt oder beim Anhalten zu einem Auffahrunfall, 
d.h., der Abstand der Fahrzeuge ist immer größer als Null.\\[1.5ex]
\underline{Benötigte Use-Cases:}
\begin{itemize}
	\item \nameref{UC:showStatus}
  	\item \nameref{UC:createPlatoon}
  	\item \nameref{UC:runPlatoon}
	\item \nameref{UC:joinPlatoon} %für Kolonnenbeitritt des 3. Fahrzeugs
\end{itemize}

\subsection*{Ausbaustufe - Anfangsabstand und Kolonnenabstand sind unterschiedlich}\label{AS:setupDist}
\addcontentsline{toc}{subsection}{\nameref{AS:setupDist}}
Das gleiche Szenario wie \nameref{AS:min}, nur dass der Anfangsabstand und die \gls{IPD} unterschiedlich sind. Die \gls{IPD} wird vom Operator vor/während der Fahrt auf einen Wert zwischen 16 cm und 40 cm festgelegt. Die Mitglieder der Kolonne müssen ihre Abstände untereinander so korrigieren, dass sie die festgelegte \gls{IPD} herstellen.\\[1.5ex]
\underline{Zusätzlich zu \nameref{AS:min} benötigte Use-Cases:}
\begin{itemize}
  	\item keine
\end{itemize}

% IPD wird vom Operator während der Fahrt festgelegt oder davor??
% zulässiger Wertebereich? Schlingloff meinte 2-20 cm, aber das ist mit den Ultraschallsensoren nicht realisierbar

\subsection*{Ausbaustufe - \gls{IPD} verändert sich}\label{AS:changeDist}
\addcontentsline{toc}{subsection}{\nameref{AS:changeDist}}
Das gleiche Szenario wie \nameref{AS:min}, doch der Operator kann den Kolonnenabstand während der Fahrt ändern.
\\[1.5ex]
\underline{Zusätzlich zu \nameref{AS:min} benötigte Use-Cases:}
\begin{itemize}
  	\item keine
\end{itemize}

\subsection*{Ausbaustufe - Das letzte Fahrzeug nach dem Start anschalten}\label{AS:asynStart-2}
\addcontentsline{toc}{subsection}{\nameref{AS:asynStart-2}}	%Der Letzte kommt später hinzu
Das gleiche Szenario wie \nameref{AS:min}, doch nur zwei Fahrzeuge sind 
Mitglieder der Kolonne. Diese zwei Fahrzeuge sind am Anfang die einzigen 
Fahrzeuge auf der Strecke. 

Ab einem bestimmten Zeitpunkt stellt der Operator das dritte Fahrzeug auf die 
Startlinie, bootet es und startet es.
Das dritte Fahrzeug fährt schneller als die Kolonne und holt diese schließlich 
ein. Dann schließt sich das dritte Fahrzeug der Kolonne an, d.h. es fährt dann 
auf derselben Fahrbahn, in dieselbe Richtung wie die Kolonne und hält sich an 
die vom \gls{LV} festgelegte \gls{PS} und \gls{IPD}. 

Die nun aus drei Mitgliedern bestehende Kolonne erreicht irgendwann das 
Hindernis und hält an.\\[1.5ex]
\underline{Zusätzlich zu \nameref{AS:min} benötigte Use-Cases:}
\begin{itemize}
  	\item keine
\end{itemize}

\subsection*{Ausbaustufe - Das letzte Fahrzeug verlässt die Kolonne}\label{AS:stopCar}
\addcontentsline{toc}{subsection}{\nameref{AS:stopCar}}
Das gleiche Szenario wie \nameref{AS:min}, doch bevor die Kolonne das Hindernis erreicht, sendet der Operator ein Signal an das letzte Fahrzeug, woraufhin dieses die Kolonne verlässt. Das letzte Fahrzeug bremst und kommt dann zum Stillstand.

Die anderen zwei Fahrzeuge fahren weiter als Kolonne bis sie das Hindernis erreichen.\\[1.5ex]
\underline{Zusätzlich zu \nameref{AS:min} benötigte Use-Cases:}
\begin{itemize}
  	\item \nameref{UC:leavePlatoon}
\end{itemize}

\subsection*{Ausbaustufe - Asynchroner Start }\label{AS:asynStart}
\addcontentsline{toc}{subsection}{\nameref{AS:asynStart}}
Das gleiche Szenario wie \nameref{AS:min}, doch der Operator startet jedes Fahrzeug einzeln durch Fernsteuerungssignale. Bevor die Fahrzeuge das Hindernis erreichen, erstellen das vorderste Fahrzeug und das mittlere Fahrzeug eine Kolonne, wobei das vorderste Fahrzeug die Rolle des \gls{LV} und das mittlere Fahrzeug die Rolle des folgenden Fahrzeugs \gls{FV} einnimmt. Das letzte Fahrzeug tritt dann der Kolonne als \gls{FV} bei.

Die nun aus drei Mitgliedern bestehende Kolonne erreicht irgendwann das Hindernis und hält an.\\[1.5ex]
\underline{Zusätzlich zu \nameref{AS:min} benötigte Use-Cases:}
\begin{itemize}
  	\item keine
\end{itemize}

\subsection*{Ausbaustufe - Kreisstrecke}\label{AS:circle}
\addcontentsline{toc}{subsection}{\nameref{AS:circle}}
Das gleiche Szenario wie \nameref{AS:asynStart}, doch bei der Strecke handelt es  nicht um eine gerade Linie, sondern um eine Kreisstrecke. Dies ermöglicht eine beliebig lange Fahrt.  

Für die Erstellung der Kolonne gibt keine feste Konfiguration, d.h. die Rolle des \gls{LV} wird abhängig von der Situation festgelegt.
Der Operator platziert das Hindernis, nachdem alle drei Fahrzeuge Teil der Kolonne sind, irgendwann während der Fahrt auf die Strecke.\\[1.5ex]
\underline{Zusätzlich zu \nameref{AS:asynStart} benötigte Use-Cases:}
\begin{itemize}
  	\item \nameref{UC:laneKeeping}
\end{itemize}

%Organisation (Platoon-creating/-running/-joining) während der Fahrt (dynamische Organisation)
%keine Feste Konfiguration, d.h. \gls{LV} abhängig von der Situation festgelegt

\subsection*{Ausbaustufe - Manuelle Geschwindigkeit}\label{AS:changeSpeed}
\addcontentsline{toc}{subsection}{\nameref{AS:changeSpeed}}
Das gleiche Szenario wie \nameref{AS:asynStart}, doch der Operator kann mit einem Steuercomputer
die Geschwindigkeit jedes Fahrzeugs einzeln bestimmen, solange sie nicht in Kolonne 
fahren.
Der Operator kann mit einem Steuercomputer jedes Fahrzeug einzeln in die Kolonne bringen.	% festgelegte Befehle?
Wenn es in der Kolonne ist, reagiert es nicht mehr auf 
Geschwindigkeitsänderungswünsche des Operators.
\\[1.5ex]
\underline{Zusätzlich zu \nameref{AS:asynStart} benötigte Use-Cases:}
\begin{itemize}
  	\item keine
\end{itemize}

\subsection*{Ausbaustufe - Fernbedienung}\label{AS:RCcontrol}
\addcontentsline{toc}{subsection}{\nameref{AS:RCcontrol}}
Die drei Fahrzeuge werden hintereinander in einer Geraden an der Startlinie 
aufgestellt.
Alle drei Fahrzeuge sind bereits Mitglieder derselben Kolonne.
Das vorderste Fahrzeug ist bereits als \gls{LV} ausgewählt worden.
Die Kolonnenmitglieder sind die einzigen Fahrzeuge auf der Strecke.
Das \gls{LV} wird vom Operator per Fernsteuerung bedient und der Rest der 
Kolonne fährt dem \gls{LV} hinterher.

% Was ist mit dem Hindernis?
Bei schweren Störungen, wie etwa Kommunikationsstörungen oder andere technische 
Störungen, wird immer ein Emergency-Stop durchgeführt.
Es kommt in keinem Fall während der Fahrt oder beim Anhalten zu einem Auffahrunfall, 
d.h., der Abstand der Fahrzeuge ist immer größer als Null.\\[1.5ex]
\underline{Benötigte Use-Cases:}
\begin{itemize}
	\item \nameref{UC:showStatus}
  	\item \nameref{UC:createPlatoon}
  	\item \nameref{UC:runPlatoon}
	\item \nameref{UC:joinPlatoon} %für Kolonnenbeitritt des 3. Fahrzeugs
\end{itemize}
%Möglichkeit einem ferngesteuerten Auto zu folgen (bei fester Organisation)?
%zwei spuren + ausweichen von Hindernissen auf einer Spur durch Spurwechsel
 
%\subsection*{Ausbaustufe - ROS 2}\label{AS:ROS2}
%\addcontentsline{toc}{subsection}{\nameref{AS:ROS2}}
%\underline{Benötigte Use-Cases:}
%\begin{itemize}
%	\item \nameref{UC:showStatus}
%  	\item \nameref{UC:createPlatoon}
%  	\item \nameref{UC:runPlatoon}
%  	\item \nameref{UC:joinPlatoon}
%\end{itemize}
% muss besprochen werden

\section{Use-Cases}

\begin{tikzpicture}
	\begin{umlsystem}[x=4, y=0]{CACC/Platooning}
		\umlusecase[y=-4.5, width=25mm]{\nameref{UC:showStatus}}
		\umlusecase[y=-0.5, width=20mm]{\nameref{UC:createPlatoon}}
		\umlusecase[x=5, y=-6, width=20mm]{\nameref{UC:runPlatoon}}
		\umlusecase[x=5, y=-9, width=20mm]{\nameref{UC:joinPlatoon}}
		\umlusecase[x=5, y=-12, width=20mm]{\nameref{UC:leavePlatoon}}
		\umlusecase[x=5, y=-3, width=20mm]{\nameref{UC:deletePlatoon}}
		\umlusecase[x=4, width=20mm]{\nameref{UC:laneKeeping}}
	\end{umlsystem}
	
	\umlactor[y=-2]{Operator}
	\umlactor[x=14, y=-4.5]{LV}
	\umlactor[x=14, y=-7.5]{FV}
	\umlactor[x=14, y=-10.5]{PFV}
	\umlactor[x=14]{GV}
	
	\umlHVHinherit[arm2=15mm]{LV}{GV}
	\umlHVHinherit[arm2=15mm]{FV}{GV}
	\umlHVHinherit[arm2=15mm]{PFV}{GV}
	\umlassoc{Operator}{usecase-1}
	\umlassoc{Operator}{usecase-2}
	\umlassoc{LV}{usecase-3}
	\umlassoc{LV}{usecase-4}
	\umlassoc{LV}{usecase-5}
	\umlassoc{LV}{usecase-6}
	\umlassoc{FV}{usecase-3}
	\umlassoc{FV}{usecase-4}
	\umlassoc{FV}{usecase-5}
	\umlassoc{FV}{usecase-6}
	\umlassoc{PFV}{usecase-4}
	\umlassoc{PFV}{usecase-5}
	\umlassoc{GV}{usecase-1}
	\umlassoc{GV}{usecase-7}
	\umlinclude{usecase-1}{usecase-2}
\end{tikzpicture}

%TO DO Reihenfolge ändern	???

\subsection*{UC - 10 Ausgeben des aktuellen Status}\label{UC:showStatus}
\addcontentsline{toc}{subsection}{\nameref{UC:showStatus}}

Dieser Use-Case dient dazu, als Operator jederzeit \gls{IPD} und \gls{PS} sowie \gls{LV}, \gls{FV} und potentielle Kolonnenkandidaten (\gls{PFV}) einsehen zu können.
Weitere Informationen sind in Tabelle~\ref{tab:UC:showStatus} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:showStatus}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Mindestens ein Fahrzeug ist eingeschaltet.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Ausgeben des aktuellen Status verändert während der Übertragung nicht die Operation der Fahrzeuge.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{Operator, LV, FV, \gls{PFV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Fahrzeug(e) wird/werden eingeschaltet.
      \item Fahrzeuge beginnen mit Übertragung von Position, Geschwindigkeit und Kolonnenstatus.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Ausgeben des aktuellen Status} \label{tab:UC:showStatus}
\end{table}

\subsection*{UC - 20 Kolonne erstellen}\label{UC:createPlatoon}
\addcontentsline{toc}{subsection}{\nameref{UC:createPlatoon}}

Dieser Use-Case dient dazu, eine Kolonne zu erstellen.
Mehrere Fahrzeuge ( mind. 2 ) erkennen sich gegenseitig und beginnen zu kommunizieren.
Weitere Informationen sind in Tabelle~\ref{tab:UC:createPlatoon} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:createPlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Es existieren mindestens 2 Fahrzeuge, die eine Kolonne bilden wollen.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Die Fahrzeuge kommunizieren miteinander und die Rollenverteilung hat statt gefunden.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{Operator, mind. 2 Fahrzeuge} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Alle Fahrzeuge bekommen die Aufgabe sich zu einer Kolonne zusammenzuschließen.
      \item Die Kommunikation zwischen den Fahrzeugen wird aufgenommen.
      \item Die Fahrzeuge legen selbständig fest, welches der Fahrzeuge das \gls{LV} und welches das \gls{FV} wird.
      \item Die nun erstellte Kolonne kann mit \nameref{UC:showStatus} überprüft werden.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:circle}
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonne erstellen} \label{tab:UC:createPlatoon}
\end{table}

\subsection*{UC - 30 Kolonnenfahren}\label{UC:runPlatoon}
%Unter Use Cases wie UC 31: Abstand halten siehe CrESt?
\addcontentsline{toc}{subsection}{\nameref{UC:runPlatoon}}

Dieser Use-Case dient dazu, das Fahren einer bereits existierende Kolonne
auf einer Fahrbahn in festgelegten Abständen und mit einer festgelegten
Geschwindigkeit zu organisieren.
Weitere Informationen sind in Tabelle~\ref{tab:UC:runPlatoon} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:runPlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Eine existierende Kolonne steht oder fährt auf einer Fahrbahn.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Die Kolonne fährt weiter auf der Fahrbahn} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{\gls{LV}, mindestens ein \gls{FV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \gls{LV} prüft seinen Abstand und relative Geschwindigkeit zu voraus befindlichen Objekten auf der Strecke.
      \item \gls{LV} legt neue Werte für die \gls{IPD} und den \gls{PS} fest.
      \item Jedes \gls{FV} passt seinen Abstand zum voranfahrenden Fahrzeug durch Veränderung seiner Geschwindigkeit an die \gls{IPD} an und setzt dann schrittweise die vom \gls{LV} kommunizierte \gls{PS} um.
      \item Jedes \gls{FV} übermittelt die geänderten Werte.
      \item Jedes \gls{FV} hält die vorgegebenen Werte bis vom \gls{LV} neue Werte vorgegeben werden.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}  
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonnenfahren} \label{tab:UC:runPlatoon}
\end{table}

\subsection*{UC - 40 Kolonne beitreten}\label{UC:joinPlatoon}
\addcontentsline{toc}{subsection}{\nameref{UC:joinPlatoon}}
Dieser Use-Case dient dazu, weitere Fahrzeuge in eine bereits existierende Kolonne aufzunehmen.
Dabei können nur Fahrzeuge, die direkt hinter der Kolonne fahren, in diese aufgenommen werden.
Weitere Informationen sind in Tabelle~\ref{tab:UC:joinPlatoon} zu finden.
\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:joinPlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Ein einzelnes Fahrzeug (\gls{PFV}) fährt hinter einer bestehenden Kolonne (ein \gls{LV} und mindestens ein \gls{FV}) und will dieser beitreten.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Das Fahrzeug fährt als \gls{FV} an hinterster Position als Teil der Kolonne.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{\gls{LV}, mindestens ein \gls{FV}, \gls{PFV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \gls{PFV} sendet seinen Beitrittswunsch als eine Nachricht.
      \item \gls{LV} sendet Antwort mit der Kennung des letzten \gls{FV}.
      \item \gls{PFV} prüft die Kennung des voranfahrenden Fahrzeugs.
            \begin{enumerate}
              \item Kennung passt, dann weiter mit \ref{it:afterIdMatch}.
              \item \label{it:idMissmatch}Kennung passt nicht, dann Abbruch.
            \end{enumerate}
      \item \label{it:afterIdMatch}\gls{PFV} erhält die nächsten \gls{PS} und \gls{IPD} vom \gls{LV}.
      \item \gls{PFV} passt den Abstand zum letzen \gls{FV} an.
      \item \gls{PFV} passt die eigene Geschwindigkeit an.
      \item \gls{PFV} bestätigt erfolgreiche Umsetzung in einer Nachricht.
      \item \gls{LV} passt sein Wissen über die Kennung des letzen \gls{FV} an.
    \end{enumerate}} \\ \hline

    \tabHead{alt. Ende} &
    \tabBody{Abbruch in \ref{it:idMissmatch} - Fahrzeug wird nicht in die Kolonne aufgenommen.} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonne beitreten} \label{tab:UC:joinPlatoon}
\end{table}

\subsection*{UC - 50 Kolonne verlassen}\label{UC:leavePlatoon}
\addcontentsline{toc}{subsection}{\nameref{UC:leavePlatoon}}

Dieser Use-Case dient dazu, als \gls{FV} aus der Kolonne auszutreten. Dabei können nur \gls{FV}, welche an letzter Stelle der Kolonne fahren, diese regulär verlassen.
Weitere Informationen sind in Tabelle~\ref{tab:UC:leavePlatoon} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:leavePlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Eine Kolonne existiert. Fahrzeug fährt an letzter Position.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Fahrzeug ist nicht mehr in der Kolonne. 
    \gls{LV} hat aktualisierte Platoon-Statusdaten} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{\gls{LV}, \gls{PFV}, \gls{FV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Letzte \gls{FV} signalisiert Austrittswunsch und wird zu einem \gls{PFV}
      \item \gls{LV} aktualisiert Platoon-Statusdaten
      \item \gls{LV} signalisiert \gls{PFV}, dass es nicht mehr Teil des Platoons ist
      \item \gls{PFV} schert aus
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:stopCar}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item \nameref{RQ:leaveMsg}
    %  \item \nameref{RQ:mngPlatState}
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonne verlassen} \label{tab:UC:leavePlatoon}
\end{table}

\subsection*{UC - 60 Kolonne auflösen}\label{UC:deletePlatoon} % in CrRESt stand dissolvePlatoon
\addcontentsline{toc}{subsection}{\nameref{UC:deletePlatoon}}    % in CrRESt stand dissolvePlatoon

Dieser Use-Case dient dazu, eine existierende Kolonne aufzulösen, wenn \nameref{UC:leavePlatoon} eintritt und sich in der Kolonne nur noch das \gls{LV} und ein \gls{FV} befinden.
Weitere Informationen sind in Tabelle~\ref{tab:UC:deletePlatoon} zu finden.

\begin{table}[H] \centering
\rowcolors{1}{light-gray}{white}
\begin{tabularx}{\textwidth}{|c|X|} \hline
\tabHead{Id} &
\tabBody{\nameref{UC:deletePlatoon}} \\ \hline

\tabHead{Vorbed.} &
\tabBody{Ein Kolonne aus einem \gls{LV} und einem \gls{FV} existiert. } \\ \hline
\tabHead{Nachbed.} &
\tabBody{Kolonne wurde aufgelöst. Alle teilnehmenden Fahrzeuge treffen ihre Entscheidungen nun selbstständig.} \\ \hline

\tabHead{Akteure} &
\tabBody{LV, FV} \\ \hline

\tabHead{Ablauf} &
\tabBody{\begin{enumerate}[leftmargin=*]
             \item \gls{LV} sendet an das \gls{FV} die Information, die Kolonne zu verlassen.
             \item \gls{LV} löst Kolonne auf
\end{enumerate}} \\ \hline

\tabHead{für \gls{AS}} &
\tabBody{\begin{enumerate}[leftmargin=*]
             \item keine
\end{enumerate}} \\ \hline

%\tabHead{nutzt \gls{RQ}}  &
%\tabBody{\begin{enumerate}[leftmargin=*]
%             \item Hier stehen Anforderungen mit **nameref**
%\end{enumerate}}\\ \hline

\end{tabularx}
\caption{Details zum UC - Kolonne auflösen} \label{tab:UC:deletePlatoon}
\end{table}


\subsection*{UC - 70 Fahrbahn folgen}\label{UC:laneKeeping}

\addcontentsline{toc}{subsection}{\nameref{UC:laneKeeping}}
Dieser Use-Case dient dazu, ein automatisch agierendes Fahrzeug auf einer vorgegeben Fahrbahn zu halten.
Weitere Information sind in Tabelle~\ref{tab:UC:laneKeeping} zu finden.
\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:laneKeeping}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Ein Fahrzeug befindet sich auf einer Fahrbahn.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Das Fahrzeug befindet sich auf einem späteren Teil der Fahrbahn.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{Ein allgemeines Fahrzeug (\gls{GV}).} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Das \gls{GV} fährt auf der Fahrbahn.
      \item Das \gls{GV} erkennt den Streckenverlauf.
      \item Das \gls{GV} passt seine Geschwindigkeit und seine Radstellung dem Streckenverlauf an.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:circle}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Fahrbahn folgen} \label{tab:UC:laneKeeping}
\end{table}

%Commenting this section out 
\begin{comment}
\section{Funktionale Anforderungen}
\subsection{Anforderungen an das allgemeine Fahrzeugverhalten (RQ - GVXX)}
\subsubsection*{RQ - GV10 Emergency-Stop}\label{RQ:emergencyStop}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:emergencyStop}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

Zu jedem Zeitpunkt muss das Fahrzeug in der Lage sein, aktuelle
Berechnungen und Aktionen abzubrechen und ein Nothalt durchzuführen.
Dabei soll das Fahrzeug schnellst möglich in den Stillstand versetzt
werden, ohne dabei Kollisionen zu verursachen.

Weitere Nachrichten des Platooning-Protokolls werden ab diesem Zeitpunkt
ignoriert.

Ein Emergency-Stop muss sofort als Broadcast an alle Fahrzeuge
kommuniziert werden.

\subsubsection*{RQ - GV20 Hindernis Erkennung}\label{RQ:obstacleDetect}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:obstacleDetect}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}
Ein Fahrzeug muss vor sich befindliche Hindernisse (evtl. auch andere Fahrzeuge)
erkennen und deren relative Position und Geschwindigkeit bestimmen können.

%\subsubsection*{RQ - GV30 W-LAN Kommunikation}
%
%\paragraph{RQ - GV31 Aufbau der Verbindung zu einem Steuercomputer}
%Die Fahrzeuge müssen mit einem Steuercomputer verbunden werden können.
%Der Steuercomputer dient dazu durch Auslesen von log-Dateien,
%die Funktion der Fahrzeuge zu überwachen
%und Nachrichten des Platooning-Protokolls in seinem Namen, oder
%stellvertretend für jedes andere Fahrzeug zu verschicken.
%
%\paragraph{RQ - GV32 Aufbau der Verbindung zu anderen Fahrzeugen}
%Die Fahrzeuge müssen ihre Intention eine Kolonne zu bilden
%umliegenden Fahrzeugen per W-LAN mitteilen können.

\subsubsection*{RQ - GV30 RC-Steuerung}\label{RQ:RCcontrol}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:RCcontrol}}

\subsection{Anforderungen an das LV (RQ - LVXX)}
\subsubsection*{RQ - LV10 Ermittlung/Festlegung des PS}\label{RQ:setPS}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:setPS}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}
Das \gls{LV} muss aus den Abständen zu Hindernissen, oder voran fahrenden
Fahrzeugen ein \gls{PS} ermitteln und diese allen \gls{FV}
mitteilen.
Wird ein festzulegender kritischer Grenzwert für die Geschwindigkeitsänderung
überschritten, so wird das Emergency-Stop-Signal gebroadcasted.

Eine Übertragung von Beschleunigungsinformationen ist nicht vorgesehen.

% Englisch
The \gls{LV} must determine an appropriate \gls{PS} from the distances to obstacles 
or leading cars and communicate it to all \gls{FV}.

\subsubsection*{RQ - LV20 Ermittlung/Festlegung der IPD}\label{RQ:setIPD}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:setIPD}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}
Das \gls{LV} muss aus dem \gls{PS},
den Abständen zu Hindernissen, oder voran fahrenden
Fahrzeugen eine \gls{IPD} ermitteln und diese allen \gls{FV}
mitteilen.
Wird ein festzulegender kritischer Grenzwert für die Abstände unterschritten,
so wird das Emergency-Stop-Signal gebroadcasted. 

\subsubsection*{RQ - LV30 Erkennen und Kommunizieren schwerer Störungen}\label{RQ:seeCritErr}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:seeCritErr}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsubsection*{RQ - LV40 Status des Platoons managen}\label{RQ:mngPlatState}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:mngPlatState}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item \nameref{UC:leavePlatoon}
  \item \nameref{UC:showStatus}
\end{itemize}

\subsection{Anforderungen an die FV (RQ - FVXX)}
\subsubsection*{RQ - FV10 Halten des PS}\label{RQ:keepPS}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:keepPS}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}
Ein \gls{FV} muss in der Lage sein eine vom \gls{LV} vorgegebene
Geschwindigkeit zu halten.

Dabei müssen Ungenauigkeiten der Motoren
und Sensoren durch individuelle Korrekturen ausgeglichen werden.
Die Korrekturen werden gespeichert, bei erneuter Vorgabe einer
Geschwindigkeit automatisch angewendet und optimiert.

Wird nach Änderung der vom \gls{LV} vorgegebenen Geschwindigkeit
diese (innerhalb einer Toleranz) erstmalig für einen gewissen (kurzen)
Kontrollzeitraum gehalten, so wird die erfolgreiche
Umsetzung der Geschwindigkeitsänderung dem \gls{LV} mitgeteilt.

\subsubsection*{RQ - FV20 Halten der IPD}\label{RQ:keepIPD}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:keepIPD}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}
Ein \gls{FV} muss in der Lage sein einen vom \gls{LV} vorgegebenen
Abstand zu seinem voran fahrenden Fahrzeug einzurichten und zu halten.

Zum nachfolgenden Fahrzeug wird keine Abstandsprüfung vorgenommen.

Um eventuelle Korrekturen des Abstandes vorzunehmen darf das \gls{FV}
von dem vorgegeben \gls{PS} abweichen.
Je nach Ausbaustufe sollte eine möglichste glatte Funktion für die
Geschwindigkeitskorrektur gefunden werden, abhängig von den Parametern
\glqq eigene Geschwindigkeit\grqq,
\glqq Geschwindigkeit des voran fahrenden Fahrzeugs\grqq und
\glqq aktuellem Abstand \grqq.

Wird nach Änderung des vom \gls{LV} vorgegebenen Abstandes
dieser (innerhalb einer Toleranz) erstmalig für einen gewissen (kurzen)
Kontrollzeitraum gehalten, so wird die erfolgreiche
Umsetzung der Abstandsänderung dem \gls{LV} mitgeteilt.

\subsubsection*{RQ- FV30 Erkennung von Drehungen des voran fahrenden Fahrzeugs}\label{RQ:seeTurn}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:seeTurn}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsection{Anforderungen an das Platooning-Protokoll (RQ - PPXX)}
\subsubsection*{RQ - PP10 Mitteilung: Emergency-Stop}\label{RQ:emergencyStopMsg}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:emergencyStopMsg}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsubsection*{RQ - PP20 Auswahl der Kolonnenführung (LV) }\label{RQ:voteLeader}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:voteLeader}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsubsection*{RQ - PP30 Mitteilung zur Bereitschaft am Kolonnenfahren}\label{RQ:wantPlatoonMsg}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:wantPlatoonMsg}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsubsection*{RQ - PP40 Mitteilung bei Austritt aus der Kolonne} \label{RQ:leaveMsg}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:leaveMsg}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsubsection*{RQ - PP50 Mitteilung bei erfolgreicher Geschwindigkeitsänderung}\label{RQ:changedPSMsg}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:changedPSMsg}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsubsection*{RQ - PP60 Mitteilung bei erfolgreicher Abstandsänderung}\label{RQ:changedIPDMsg}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:changedIPDMsg}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}

\subsubsection*{RQ - PP70 Ermittlung des Verbindungsstatus und Timeouts}\label{RQ:checkConnection}
\addcontentsline{toc}{subsubsection}{\nameref{RQ:checkConnection}}
\underline{Notwendig für Use-Cases:}
\begin{itemize}
  \item 
\end{itemize}
\end{comment}
% Commented this section out

\section{Meilensteinplanung}
% Nach dem Erreichen eines Meilensteins durch alle
% Gruppen, findet eine vergleichende Bewertung der Umsetzungen
% zwischen den Gruppen statt. Im Sinne des Projektes können an Hand
% dieser Vergleiche einzelne Komponenten zwischen den Gruppen
% ausgetauscht werden, bevor diese mit der Entwicklung fortfahren.

\subsection*{MS - Mitte November}\label{MS:beginNov}
\addcontentsline{toc}{subsection}{\nameref{MS:beginNov}}
\begin{itemize}
  \item Festlegung von Abnahmetests und Ausbaustufen\footnote{nachgetragen am 18.12}
  \item Festlegung von Use-Cases\footnote{nachgetragen am 18.12}
\end{itemize}

\subsection*{MS - Anfang Dezember}\label{MS:beginDez}
\addcontentsline{toc}{subsection}{\nameref{MS:beginDez}}
\begin{itemize}
  \item Fertigstellung der Modellautos\footnote{konnte nicht eingehalten werden; verschoben auf \nameref{MS:midJan}}
  \item Fertigstellung des Platooning-Protokoll-Designs\footnote{konnte nicht eingehalten werden; auf \nameref{MS:midDez}}
\end{itemize}

\subsection*{MS - Mitte Dezember}\label{MS:midDez}
\addcontentsline{toc}{subsection}{\nameref{MS:midDez}}
\begin{itemize}
  \item Fertigstellung des Platooning-Protokoll-Designs
  \item Fertigstellung der Software-Systemarchitektur
  \item Ableitung von Integrationstests
\end{itemize}

\subsection*{MS - Anfang Januar}\label{MS:beginJan}
\addcontentsline{toc}{subsection}{\nameref{MS:beginJan}}
\begin{itemize}
  \item Ableitung eines vollständigen Klassendiagramms aus der Architektur
  \item Spezifikation der Module
  \item Ableitung von Modultests
  \item Start der Implementierung
\end{itemize}
\subsection*{MS - Mitte Januar}\label{MS:midJan}
\addcontentsline{toc}{subsection}{\nameref{MS:midJan}}
\begin{itemize}
  \item Fertigstellung der Modellautos
  \item Fertigstellung der Aufbauanleitung für die Modellautos
  \item Durchführung der Modultests
  \item Fertigstellung der Moduldokumentationen
\end{itemize}
\subsection*{MS - Anfang Februar}\label{MS:beginFeb}
\addcontentsline{toc}{subsection}{\nameref{MS:beginFeb}}
\begin{itemize}
  \item Start der Integrationstests
\end{itemize}
\subsection*{MS - Mitte Februar}\label{MS:midFeb}
\addcontentsline{toc}{subsection}{\nameref{MS:midFeb}}
\begin{itemize}
  \item Abnahmetest (\nameref{AS:min})
\end{itemize}
\subsection*{MS - Anfang März}\label{MS:beginMrz}
\addcontentsline{toc}{subsection}{\nameref{MS:beginMrz}}
\begin{itemize}
  \item Keine weiteren Fortschritte zu erwarten (Klausurenphase).
\end{itemize}
\subsection*{MS - Mitte März}\label{MS:midMrz}
\addcontentsline{toc}{subsection}{\nameref{MS:midMrz}}
\begin{itemize}
  \item Implementierung weiterer Ausbaustufen 
\end{itemize}


\cleardoublepage

% Glossary
\glsaddall
\printglossaries
%Biblography
\phantomsection
\addcontentsline{toc}{section}{Bibliography}
\printbibliography
  

\end{document}