diff --git a/doc/architecture/ObjectOrientedAnalysis.tex b/doc/architecture/ObjectOrientedAnalysis.tex index 289636880393cb63bc66749f9a4c6719beaba581..15d3c123de19d9469cfb5524d9e0c56fa55c3ee6 100644 --- a/doc/architecture/ObjectOrientedAnalysis.tex +++ b/doc/architecture/ObjectOrientedAnalysis.tex @@ -31,7 +31,7 @@ + set($v_{new}$, $\alpha_{new}$)\\ + RequestNewState(RC-State)\\ + updateOwn() : (Integer, Integer) - } (MAVLink) + } \umlclass[scale = 0.5, xshift = -8cm] {Lane-Keeping} { @@ -40,7 +40,7 @@ } { + Lanekeeping() : ? - } (LaneKeeping) + } \umlclass[scale = 0.5, xshift = 8cm, yshift = -4cm] {Cruise-Control} { @@ -116,7 +116,7 @@ { + $d_O$ : Integer\\ + $v_O$ : Integer\\ - + $\alpha_O$ : Interger\\ + + $\alpha_O$ : Integer\\ + $v_R$ : Integer\\ + $v_P$ : Integer\\ + Path : ?\\ diff --git a/doc/architecture/ObjectOrientedDesign.tex b/doc/architecture/ObjectOrientedDesign.tex new file mode 100644 index 0000000000000000000000000000000000000000..9a4a62f4f168c6cf2f0b3cb4a63e0203896d3fe9 --- /dev/null +++ b/doc/architecture/ObjectOrientedDesign.tex @@ -0,0 +1,194 @@ +\documentclass[a4paper,12pt]{article} + +\usepackage{geometry} +\geometry{scale = 0.5} + +\usepackage[T1]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage[french]{babel} +\usepackage{fullpage} +\usepackage{ifthen, tikz, xstring, calc, pgfopts} % required for tikz-uml +\usepackage{../tikz-uml} + +\sloppy +\hyphenpenalty 10000000 + +\begin{document} +\begin{tikzpicture} + \begin{umlpackage}{Car} + \begin{umlpackage}{Odroid} + % classes + \umlclass[scale = 0.5] + {MAV-Link} + { + - $v_{new}$ : Integer\\ + - $\alpha_{new}$ : Integer\\ + - $v_O$ : Interger\\ + - $\alpha_O$ : Integer\\ + - RC-State : Integer + } + { + + set($v_{new}$, $\alpha_{new}$)\\ + + RequestNewState(RC-State)\\ + + updateOwn() : (Integer, Integer) + } + \umlclass[scale = 0.5, xshift = -8cm] + {Lane-Keeping} + { + - Image/Path : ?\\ + - $\alpha_{new}$ : Integer + } + { + + Lanekeeping() : ? + } + \umlclass[scale = 0.5, xshift = 8cm, yshift = -4cm] + {Cruise-Control} + { + - $d_O$ : Integer\\ + - $v_P$ : Integer\\ + - $IPD$ : Integer\\ + - $PS$ : Integer\\ + - PlatoonState : Integer\\ + - $v_s$ : Integer\\ + - $d_s$ : Integer\\ + + $v_{new}$ Integer + } + { + - CACC($d_O, v_P, IPD, PS$) : Integer\\ + - ACC($d_O, v_P, v_s, d_s$) : Integer\\ + - calcNewOptimalDistance($v_s$) : Integer\\ + + setNewSpeed($v_{new}$) + } (CruiseConrol) + \umlclass[scale = 0.5, xshift = -5.5cm, yshift = -9cm] + {Egomotion} + { + - $d_O$ : Integer\\ + - $v_O$ : Integer\\ + - $v_R$ : Integer\\ + - $v_P$ : Integer\\ + - $\alpha_O$ : Integer\\ + - Path : ?\\ + - $\alpha_{new}$ : Integer\\ + + $v_{new}$ : Integer\\ + + WantsPlatton : Boolean\\ + + UpdateReady : Boolean + } + { + - calc\_$v_P$($v_R$) : Integer\\ + - getEnvoirment() : (Integer, Integer)\\ + - getMavLink() : (Integer, Integer)\\ + - getCurseControl : Integer + } (EgoMotion) + \umlclass[scale = 0.5, xshift = 6.7cm, yshift = -14cm] + {PlatoonController} + { + - $IPD$ : Integer + - $PS$ : Integer\\ + - PlatoonState : ENUM\\ + - $v_s$ : Integer\\ + - $CarID$ : Integer\\ + - PlatoonMemberList : ?\\ + - PlatoonPos : Integer\\ + - PlatoonPrevID : ?\\ + + isUpdated : Boolean + } + { + - evaluate\_PlatoonState(PlatoonState : Integer) : ?\\ + - determine\_LV\_IPD-PS() : (Integer, Integer)\\ + - handle\_PBM() : ?\\ + - handle\_PCM() : ?\\ + - handle\_PHM() : ?\\ + - send\_PBM() : ?\\ + - send\_PCM() : ?\\ + - send\_PHM() : ?\\ + + isIdle() : Boolean + } + \umlclass[scale = 0.5, xshift = -9cm, yshift = -20cm] + {Envoirment} + { + - USS-Data : Integer\\ + + $d_O$ : Interger\\ + + $v_R$ : Integer\\ + + PlatoonPrevID : ? + } + { + - calc\_$v_R$ + } + \umlclass[scale = 0.5, xshift = -4cm, yshift = -23cm] + {Logging} + { + + $d_O$ : Integer\\ + + $v_O$ : Integer\\ + + $\alpha_O$ : Integer\\ + + $v_R$ : Integer\\ + + $v_P$ : Integer\\ + + Path : ?\\ + + $\alpha_{new}$ : Integer\\ + + $v_{new}$ : Integer\\ + + WantsPlatton : Boolean\\ + + UpdateReady : Boolean\\ + + $IPD$ : Integer\\ + + $PS$ : Integer\\ + + PlatoonState : ENUM\\ + + $v_s$ : Integer\\ + + $CarID$ : Integer\\ + + PlatoonMemberList : ?\\ + + PlatoonPos : Integer\\ + + PlatoonPrevID : Integer\\ + + isUpdated : Boolean + } + { + - cacheDate() : ?\\ + + sendToPC(ALL) + } + \umlclass[scale = 0.5, xshift = -11.5cm, yshift = -25cm] + {Camera} + {} + {} + \umlclass[scale = 0.5, xshift = -11.2cm, yshift = -28cm] + {Ultrasonic} + {} + {} + \umlclass[scale = 0.5, xshift = 9.5cm, yshift = -25cm] + {Network} + { + + $IPD$ : Integer\\ + + $PS$ : Integer + } + { + + send\_PBM()\\ + + send\_PCM()\\ + + send\_PHM()\\ + + send\_PLM()\\ + + handle\_PBM()\\ + + handle\_PCM()\\ + + handle\_PHM()\\ + + handle\_PLM()\\ + + Car2PC-MSGs. + } + + %arrows + \umlinherit [geometry=-| ,anchors= 0 and 250] {Camera}{Envoirment} + \umlinherit [geometry=|- ,anchors= 90 and 180] {Camera}{Lane-Keeping} + \umlinherit [geometry=|- ,anchors= 90 and 25] {Cruise-Control}{MAV-Link} + \umlinherit [geometry=|- ,anchors= 217 and 50] {Cruise-Control}{Egomotion} + \umlinherit [geometry=|- ,anchors= 50 and 217] {Egomotion}{Cruise-Control} + \umlinherit [geometry=|- ,anchors= -35 and 152] {Egomotion}{PlatoonController} + \umlinherit [geometry=-| ,anchors= 115 and 300] {Egomotion}{Lane-Keeping} + \umlinherit [geometry=-|] {Egomotion}{Logging} + \umlinherit [geometry=|-|,anchors=90 and 245] {Envoirment}{Egomotion} + \umlinherit [geometry=--] {Lane-Keeping}{MAV-Link} + \umlinherit [geometry=-| ,anchors= 300 and 115] {Lane-Keeping}{Egomotion} + \umlinherit [geometry=|- ,anchors= -55 and 222] {Logging}{Network} + \umlinherit [geometry=|-|,anchors= 235 and 70] {MAV-Link}{Egomotion} + \umlinherit [geometry=-| ,anchors= 180 and 270] {Network}{MAV-Link} + \umlinherit [geometry=-|] {PlatoonController}{Cruise-Control} + \umlinherit [geometry=|- ,anchors= 240 and 25] {PlatoonController}{Logging} + \umlinherit [geometry=-|, anchors= 300 and 85] {PlatoonController}{Network} + \umlinherit [geometry=-|, anchors= 85 and 300] {Network}{PlatoonController} + \umlinherit [geometry=-| ,anchors= 0 and 290] {Ultrasonic}{Envoirment} + \end{umlpackage} + \end{umlpackage} +\end{tikzpicture} + +\end{document} \ No newline at end of file