diff --git a/doc/mainDocument/mainDocument.tex b/doc/mainDocument/mainDocument.tex index 1a3ed30c713fa9af2c990ab65374c61634d37337..14379010520aa7cbe16353b48fcd006e4cd20244 100644 --- a/doc/mainDocument/mainDocument.tex +++ b/doc/mainDocument/mainDocument.tex @@ -116,14 +116,23 @@ % Struktur sollte mal bearbeitet werden \subfile{sections/projektbeschreibung} +\clearpage \subfile{sections/organisation} +\clearpage \subfile{sections/ausbaustufen} +\clearpage \subfile{sections/usecases} +\clearpage \subfile{sections/kommunikation} +\clearpage \subfile{sections/architektur} +\clearpage \subfile{sections/modspez} +\clearpage \subfile{sections/projekt} +\clearpage \subfile{sections/test} +\clearpage \subfile{sections/auswertung} %\subfile{sections/fkt_anf(archivert)} diff --git a/doc/mainDocument/sections/ausbaustufen.tex b/doc/mainDocument/sections/ausbaustufen.tex index 8ecbe41783f8bbe34c3ed7e3f072bf0f7c23fb7f..2f806b70c04e0f41ca4669166b56b617aa405d8a 100644 --- a/doc/mainDocument/sections/ausbaustufen.tex +++ b/doc/mainDocument/sections/ausbaustufen.tex @@ -30,7 +30,6 @@ \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 \item \nameref{UC:distKeeping} @@ -105,7 +104,7 @@ 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} + \item keine \end{itemize} %Organisation (Platoon-creating/-running/-joining) während der Fahrt (dynamische Organisation) @@ -143,7 +142,6 @@ \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 \item \nameref{UC:distKeeping} diff --git a/doc/mainDocument/sections/modspez.tex b/doc/mainDocument/sections/modspez.tex index 162e6202dec60e72eb220276d65336b2b48f5df7..4354270afe5b4a7cbf7decd0f6e31154a3d06cb9 100644 --- a/doc/mainDocument/sections/modspez.tex +++ b/doc/mainDocument/sections/modspez.tex @@ -4,6 +4,13 @@ \input{../modules/cruiseControl/docCACC-content} \subsection{Ultraschallsensor} - An den Fahrzeugen ist ein Ultraschallsensor vom Modell SRF02 angebaut. + An den Fahrzeugen ist ein Ultraschallsensor vom Modell SRF02 angebaut. Der Sensor ist so am Odroid angeschlossen, dass er im I2C Modus l\"auft. Um mit dem Sensor zu interagieren braucht man die Device-Id, welche auf dem Sensor draufgeklebt ist, z.B. 0x74. Um den Ost der Ger\"atedatei unter Linux zu finden, kann i2c-detect verwendet werden, welches im i2c-tools Paket verf\"ugbar ist. In unserem Fall ist /dev/i2c-1 die Ger\"atedatei f\"ur den Sensor. Unter \url{http://www.robot-electronics.co.uk/htm/srf02techI2C.htm} stehen die verschiedenen Register die man schreiben und lesen kann, um den Sensor zu bedienen. 0x00 ist das Command-Register, in das geschrieben werden kann, um eine Messung zu beginnen. Schreibt man den Wert 0x51 in das Command-Register, beginnt der Sensor mit der Messung und gibt das Ergebnis in centimeter zur\"uck. In der technischen Spezifikation wird angegeben, dass eine Messung mindestens 65ms dauert bis das Ergebnis zur Verf\"ugung steht. In unserem Code warten wir nach dem Beginn einer Messung 70ms, um sicher das Ergebnis zu bekommen. Am Ende der Messung steht das 16bit Ergebnis in den jeweils 8bit großen Registern 0x02 und 0x03 und kann einfach ausgelesen werden. + \\\\ + Um einfach auf die Register zugreifen zu k\"onnen benutzen wir die wiringPi Library \url{https://github.com/hardkernel/wiringPi}. Mithilfe dieser Library k\"onnte eine Messung wie folgt durchgef\"uhrt werden:\\ + \lstinputlisting[language=C]{sections/uss_example.c} + + + \subsection{Kamera} + An den Fahrzeugen ist eine Kamera vom Model DFM 22BUC03-ML angebaut. Der Hersteller der Kamera stellt die Software zur Bedienung der Kamera \"uber \url{https://github.com/TheImagingSource/tiscamera} zur Verf\"ugung. Hat man sich das Repository runtergeladen, kann man das Projekt nach der angegeben Anleitung zun\"achst bauen. Wenn das Projekt gebaut ist, muss die Firmware auf die Kamera geladen werden. Dazu einfach der Anleitung unter \url{https://github.com/TheImagingSource/tiscamera/wiki/Getting-Started-with-USB-2.0-CMOS-Cameras} folgen. Wenn die Firmware erfolgreich geladen wurde, ist die Kamera einsatzbereit. Im Repository sind auch Beispiele vorhanden, die man direkt ausf\"uhren kann, um Daten von der Kamera zu lesen. \end{document} \ No newline at end of file diff --git a/doc/mainDocument/sections/projekt.tex b/doc/mainDocument/sections/projekt.tex index 775bff2ce02852678e79658134f74af36f19836b..ecf85ce384d0fbec8f960ac2ff9a32d7204f2de0 100644 --- a/doc/mainDocument/sections/projekt.tex +++ b/doc/mainDocument/sections/projekt.tex @@ -1,19 +1,25 @@ \documentclass[../mainDocument.tex]{subfiles} + \begin{document} \section{Projekt} \subsection{Ordnerstruktur} + \begin{figure}[!ht] + \caption{Ordnerstruktur} \dirtree{% .1 catkin\textunderscore ws. .2 src. - .3 NetworkingLib \DTcomment{Library um TCP und UDP zu nutzen}. + .3 NetworkingLib \DTcomment{Library, um TCP und UDP zu nutzen}. .3 PC \DTcomment{Programm des Steuerrechners}. .3 PC2CarLib \DTcomment{Kommunikation zwischen Steuerrechner und Fahrzeug}. .3 PlatoonProtocolLib \DTcomment{Kommunikation zwischen den Fahrzeugen}. + .3 VeloxProtocolLib \DTcomment{Mavlink Kommunikation, Fahrzeugsteuerung}. + .3 wiringPi \DTcomment{Library für PIN basierten GPIO Zugriff}. .3 car \DTcomment{Fahrzeugmodule}. .4 include. .5 camera. .5 environment. + .5 exceptions. .5 lanekeeping. .5 logging. .5 mainNode. @@ -32,6 +38,7 @@ .5 ultrasonic. .4 test. } + \end{figure} \subsection{Setup} In diesem Abschnitt sollen die Schritte beschrieben werden, um das ODROID vollständig einzurichten. Auf das Speichermodul, die eMMC, muss das Betriebssystem Ubuntu 16.04 LTS gespielt werden. Das WLAN (eduroam) muss eingerichtet werden, um grundlegende Tools wie vim und git und die ROS Software Bibliotheken/Werkzeuge zu installieren und die Repositories der Gruppen zu klonen. diff --git a/doc/mainDocument/sections/usecases.tex b/doc/mainDocument/sections/usecases.tex index 4649da61ea915b98d554eaf16f2a6332087cd647..3da617c2b1064da307a6dfc2264ce58fb655f7a3 100644 --- a/doc/mainDocument/sections/usecases.tex +++ b/doc/mainDocument/sections/usecases.tex @@ -6,22 +6,10 @@ Während der Entwicklung sollte auf größtmögliche Konformität mit dem bestehenden Projekt der Assystem geachtet werden. \begin{figure} - \caption{Use Case Diagramm 1. Version} - \input{tikzImgs/uc_diagram.tex} - \end{figure} - \begin{figure} \caption{Use Case Diagramm 2. Version} \input{tikzImgs/uc_diagram_2.tex} \end{figure} \clearpage - Um die Anzahl der Use Cases zu reduzieren: - \begin{itemize} - \item UC - Kolonne erstellen ist kein eigenständiger UC, sondern ist nun in UC - Kolonne beitreten miteinbegriffen - \item UC - Kolonne auflösen ist kein eigenständiger UC, sondern ist nun in UC - Kolonne verlassen miteinbegriffen - \item UC - Abstand halten und UC - Fahrbahn folgen sind nun in UC - Kolonnenfahren miteinbegriffen - \end{itemize} - Es wurde noch überlegt, einen Use Case hinzuzufügen, der die Fahrmodi (ACC, CACC(LV), CACC(FV), RC) repräsentiert. - %TO DO Reihenfolge ändern ??? \subsection*{UC - 10 Status ausgeben}\label{UC:showStatus} \addcontentsline{toc}{subsection}{\nameref{UC:showStatus}} @@ -77,65 +65,6 @@ \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, 2 \gls{PFV}} \\ \hline - - \tabHead{Ablauf} & - \tabBody{ - \begin{enumerate}[leftmargin=*] - \item Die \gls{PFV} erhalten die Ausgabe, sich zu einer Kolonne zusammenzuschließen. - \item Die Kommunikation zwischen den \gls{PFV} wird aufgenommen. - \item Die \gls{PFV} legen selbständig fest, welches der Fahrzeuge das \gls{LV} und welches das \gls{FV} wird. - \item Der Kolonnenstatus wird im Log festgehalten. - \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}} @@ -205,7 +134,8 @@ \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. + Dieser Use-Case dient dazu, weitere Fahrzeuge in eine Kolonne aufzunehmen. Gegebenenfalls wird vorher eine Kolonne erstellt, falls noch keine existiert. + Mehrere Fahrzeuge (mind. 2) erkennen sich gegenseitig und beginnen zu kommunizieren. 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 @@ -215,30 +145,53 @@ \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 + \tabBody{ + \begin{enumerate} + \item[a)] Es existieren mindestens 2 Fahrzeuge, die eine Kolonne bilden wollen. + \item[b)] Ein einzelnes Fahrzeug (\gls{PFV}) fährt hinter einer bestehenden Kolonne (ein \gls{LV} und mindestens ein \gls{FV}) und will dieser beitreten. + \end{enumerate}} \\ \hline \tabHead{Nachbed.} & - \tabBody{Das Fahrzeug fährt als \gls{FV} an hinterster Position als Teil der Kolonne.} \\ \hline + \tabBody{ + \begin{enumerate} + \item[a)] Die Fahrzeuge kommunizieren miteinander und die Rollenverteilung hat statt gefunden. + \item[b)] Das Fahrzeug fährt als \gls{FV} an hinterster Position als Teil der Kolonne. + \end{enumerate}} \\ \hline \tabHead{Akteure} & - \tabBody{\gls{LV}, mindestens ein \gls{FV}, \gls{PFV}} \\ \hline + \tabBody{ + \begin{enumerate} + \item[a)] Operator, 2 \gls{PFV} + \item[b)] \gls{LV}, mindestens ein \gls{FV}, \gls{PFV} + \end{enumerate}} \\ \hline \tabHead{Ablauf} & \tabBody{ \begin{enumerate}[leftmargin=*] - \item \gls{PFV} sendet seinen Beitrittswunsch als eine Nachricht. - \item \gls{LV} sendet Antwort mit der Kennung\footnote{In der Gruppe wurden QR Codes als Kennung diskutiert. Dies gehört jedoch nicht in die Use Case Beschreibung.} des letzten \gls{FV}. - \item \gls{PFV} prüft die Kennung des voranfahrenden Fahrzeugs. + \item[a)] Es existiert noch keine Kolonne: \begin{enumerate} - \item Kennung passt, dann weiter mit \ref{it:afterIdMatch}. - \item \label{it:idMissmatch}Kennung passt nicht, dann Abbruch. + \item[1.] Die \gls{PFV} erhalten die Ausgabe, sich zu einer Kolonne zusammenzuschließen. + \item[2.] Die Kommunikation zwischen den \gls{PFV} wird aufgenommen. + \item[3.] Die \gls{PFV} legen selbständig fest, welches der Fahrzeuge das \gls{LV} und welches das \gls{FV} wird. + \item[4.] Der Kolonnenstatus wird im Log festgehalten. + \item[5.] Die nun erstellte Kolonne kann mit \nameref{UC:showStatus} überprüft werden. + \end{enumerate} + \item[b)] Es existiert bereits eine Kolonne. + \begin{enumerate} + \item[1.] \gls{PFV} sendet seinen Beitrittswunsch als eine Nachricht. + \item[2.] \gls{LV} sendet Antwort mit der Kennung\footnote{In der Gruppe wurden QR Codes als Kennung diskutiert. Dies gehört jedoch nicht in die Use Case Beschreibung.} des letzten \gls{FV}. + \item[3.] \gls{PFV} prüft die Kennung des voranfahrenden Fahrzeugs. + \begin{enumerate} + \item[a)] Kennung passt, dann weiter mit \ref{it:afterIdMatch}. + \item[b)] \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. - \item Der Kolonnenstatus wird im Log festgehalten. + \item[4.] \label{it:afterIdMatch}\gls{PFV} erhält die nächsten \gls{PS} und \gls{IPD} vom \gls{LV}. + \item[5.] \gls{PFV} passt den Abstand zum letzen \gls{FV} an. + \item[6.] \gls{PFV} passt die eigene Geschwindigkeit an. + \item[7.] \gls{PFV} bestätigt erfolgreiche Umsetzung in einer Nachricht. + \item[8.] \gls{LV} passt sein Wissen über die Kennung des letzen \gls{FV} an. + \item[9.] Der Kolonnenstatus wird im Log festgehalten. + \end{enumerate} \end{enumerate} } \\ \hline @@ -274,6 +227,7 @@ \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. + Falls sich in der Kolonne nur noch das \gls{LV} und ein \gls{FV} befinden, wird die Kolonne aufgelöst. Weitere Informationen sind in Tabelle~\ref{tab:UC:leavePlatoon} zu finden. \begin{table}[H] \centering @@ -286,8 +240,9 @@ \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 + \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 @@ -295,14 +250,19 @@ \tabHead{Ablauf} & \tabBody{ \begin{enumerate}[leftmargin=*] - \item Letzte \gls{FV} signalisiert Austrittswunsch und wird zu einem \gls{PFV} + \item Letztes \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 Der Kolonnenstatus wird im Log festgehalten. \item \gls{PFV} schert aus + \item \label{it:disperse} Falls nur noch das \gls{LV} in der Kolonnen ist, löst es die Kolonne auf. + \item Der Kolonnenstatus wird im Log festgehalten. \end{enumerate} } \\ \hline + \tabHead{alt. Ende} & + \tabBody{Weitere Schritte in \ref{it:disperse} - Kolonne wurde aufgelöst. Alle teilnehmenden Fahrzeuge treffen ihre Entscheidungen nun selbstständig.} \\ \hline + \tabHead{für \gls{AS}} & \tabBody{ \begin{enumerate}[leftmargin=*] @@ -321,148 +281,6 @@ \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. - \item Der Kolonnenstatus wird im Log festgehalten. - \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} - - \subsection*{UC - 80 Abstand halten}\label{UC:distKeeping} - \addcontentsline{toc}{subsection}{\nameref{UC:distKeeping}} - Weitere Information sind in Tabelle~\ref{tab:UC:distKeeping} zu finden. - \begin{table}[H] \centering - \rowcolors{1}{light-gray}{white} - \begin{tabularx}{\textwidth}{|c|X|} \hline - \tabHead{Id} & - \tabBody{\nameref{UC:distKeeping}} \\ \hline - - \tabHead{Vorbed.} & - \tabBody{} \\ \hline - - \tabHead{Nachbed.} & - \tabBody{} \\ \hline - - \tabHead{Akteure} & - \tabBody{} \\ \hline - - \tabHead{Ablauf} & - \tabBody{ - \begin{enumerate}[leftmargin=*] - \item - \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 - 80 Abstand halten} \label{tab:UC:distKeeping} - \end{table} - \subsection*{UC - 90 Kolonnendaten ändern}\label{UC:changePlatoonData} \addcontentsline{toc}{subsection}{\nameref{UC:changePlatoonData}} Weitere Information sind in Tabelle~\ref{tab:UC:changePlatoonData} zu finden. diff --git a/doc/mainDocument/sections/uss_example.c b/doc/mainDocument/sections/uss_example.c new file mode 100644 index 0000000000000000000000000000000000000000..8ea1c60c1b04a3a65cce937617f5c3e848f33a78 --- /dev/null +++ b/doc/mainDocument/sections/uss_example.c @@ -0,0 +1,24 @@ +#include "wiringPiI2C.h" + +#include <unistd.h> + +const int COMMAND_REGISTER = 0x00; +const int RESULT_HIGH_BYTE = 0x02; +const int RESULT_LOW_BYTE = 0x03; +const int RANGING_MODE_CM = 0x51; + +const int DELAY = 70; + +int getDistance() { + + char *device = "/dev/i2c-1"; + int devId = 0x74; + + int fd = wiringPiI2CSetupInterface(device, this->devId); + + wiringPiI2CWriteReg8(fd, COMMAND_REGISTER, RANGING_MODE_CM); + usleep(DELAY * 1000); + int distance = wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE); + + return distance; +} diff --git a/doc/mainDocument/tikzImgs/uc_diagram_2.tex b/doc/mainDocument/tikzImgs/uc_diagram_2.tex index 8d73b452964c58a0eb7eb286eeb164979981c1e1..c850e72e5a12cadee892a0fab274b9797c507987 100644 --- a/doc/mainDocument/tikzImgs/uc_diagram_2.tex +++ b/doc/mainDocument/tikzImgs/uc_diagram_2.tex @@ -19,21 +19,21 @@ \umlHVHinherit[arm2=16mm]{PFV}{GV} \umlassoc{Operator}{usecase-1} + \umlassoc{Operator}{usecase-3} \umlassoc{Operator}{usecase-4} \umlassoc{Operator}{usecase-5} - \umlassoc{Operator}{usecase-9} - \umlassoc{Operator}{usecase-10} + \umlassoc{Operator}{usecase-6} + \umlassoc{LV}{usecase-2} \umlassoc{LV}{usecase-3} \umlassoc{LV}{usecase-4} \umlassoc{LV}{usecase-5} - \umlassoc{LV}{usecase-9} - \umlassoc{FV}{usecase-3} - \umlassoc{FV}{usecase-5} + \umlassoc{FV}{usecase-2} + \umlassoc{FV}{usecase-4} - \umlassoc{PFV}{usecase-4} - \umlassoc{PFV}{usecase-10} + \umlassoc{PFV}{usecase-3} + \umlassoc{PFV}{usecase-6} \umlassoc{GV}{usecase-1}