From 3a472f9c29f0bb83964312f325c487269471e34a Mon Sep 17 00:00:00 2001 From: duc anh vu <vuducanh@informatik.hu-berlin.de> Date: Mon, 12 Feb 2018 14:53:24 +0100 Subject: [PATCH] Update software architecture description --- doc/mainDocument/sections/architektur.tex | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/mainDocument/sections/architektur.tex b/doc/mainDocument/sections/architektur.tex index dfdea1ef..0ba0d15e 100644 --- a/doc/mainDocument/sections/architektur.tex +++ b/doc/mainDocument/sections/architektur.tex @@ -235,9 +235,13 @@ \end{figure} \subsection{Softwarearchitektur} - Zur Unterst\"utzung in der Entwicklung des Systems benutzen wir die Tools des Robot Operating System (ROS). ROS ist ein beliebtes Framework im Robotik-Bereich und ist durch das Messaging-System zwischen einzelnen ROS-Modulen auf Verteilbarkeit und Modularit\"at ausgerichtet. Weiterhin sind die Module, die uns Assystem liefert, bereits als ROS-Nodes implementiert. Daher ist es sinnvoll, dass wir selbst ROS benutzen, um so die Kompatibilit\"at mit Assystem zu gew\"ahren. ROS unterst\"utzt die Programmiersprachen Python und C++. Da unser System sehr zeitkritisch ist, haben wir uns entschieden, das gesamte System in C++ zu implementieren.\\ + Zur Unterst\"utzung in der Entwicklung des Systems benutzen wir die Tools des Robot Operating System (ROS). ROS ist ein beliebtes Framework im Robotik-Bereich und ist durch das Messaging-System zwischen einzelnen ROS-Modulen auf Verteilbarkeit und Modularit\"at ausgerichtet. Weiterhin sind die Module, die uns Assystem liefert, bereits als ROS-Nodes implementiert. Daher ist es sinnvoll, dass wir selbst ROS benutzen, um so die Kompatibilit\"at mit Assystem zu gew\"ahren. ROS unterst\"utzt die Programmiersprachen Python und C++. Da unser System sehr zeitkritisch ist, haben wir uns entschieden, das gesamte System in C++ zu implementieren. - Das Lanekeeping wird bereits als ROS-Node von Assystem geliefert. Die Kamera und der Ultraschallsensor erhalten jeweils eigene ROS-Nodes, da sie nur damit besch\"aftigt sein werden, ihre Daten aufzunehmen und an ihr rostopic zu pushen. Das Environment Modul ist ein eigener ROS-Node, da es die hochfrequenten Daten der Kamera und des Ultraschallsensors lesen und verarbeiten muss. Das MAVLINK Modul ist ein eigener ROS-Node, da dessen Aufgabe das Versenden und Empfangen von Nachrichten \"uber das MAVLINK Protokoll ist. + Anstatt ROS-Nodes zu nutzen, haben wir uns jedoch entschieden auf Nodelets umzusteigen. Diese sind vom Konzept her gleich den ROS-Nodes. ROS-Nodes kommunizieren jedoch \"uber TCP untereinander, was eventuell zu einem h\"oheren Zeitaufwand f\"uhrt. Im Gegensatz dazu, kommunizieren Nodelets untereinander durch shared pointer. + + Das Lanekeeping wird bereits als ROS-Node von Assystem geliefert. Die Kamera und der Ultraschallsensor erhalten jeweils eigene Nodelets, da sie nur damit besch\"aftigt sein werden, ihre Daten aufzunehmen und an ihr rostopic zu publishen. Das Environment Modul ist ein eigener Nodelet, da es die hochfrequenten Daten der Kamera und des Ultraschallsensors lesen und verarbeiten muss. Das MAVLINK Modul ist ein eigener Nodelet, da dessen Aufgabe das Versenden und Empfangen von Nachrichten \"uber das MAVLINK Protokoll ist. + + PlatoonController, CruiseControl, Netzwerk, Logging und Egomotion laufen zusammen in einem Nodelet. Das liegt daran, dass beim Designentwurf noch davon ausgegangen wurde, dass ROS-Nodes benutzt werden. Das Gruppieren mehrerer Module innerhalb des gleichen ROS-Nodes, erhofften wir uns einen Performance-Gewinn, da Daten nicht node-\"ubergreifend \"uber TCP verschickt werden m\"ussen, sondern innerhalb des Nodes durch Getter zur Verf\"ugung stehen. Durch die Verwendung von Nodelets, k\"onnte es jedoch sein, dass es keinen Performance-Unterschied gibt, wenn wir die Module PlatoonController, CruiseControl, Netzwerk, Logging und Egomotion auf einzelne Nodelets verteilen. Aus Zeitmangel wollten wir aber das Design nicht mehr \"andern. \begin{landscape} \begin{figure}[h] -- GitLab