diff options
| author | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-03 15:52:01 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-03 15:53:59 +0100 |
| commit | 3d96fc924332470f2c5fc47008727a1f8b7a5373 (patch) | |
| tree | 13fcdf41ccfb7a48f339abe3b9933fcd282d6f2f /Dokument/Teknisk Dokumentation/text/system | |
| parent | 96f47b72345b4c9019f70fd64a369485c2e1a64a (diff) | |
| download | tfyy51-3d96fc924332470f2c5fc47008727a1f8b7a5373.tar.gz | |
Mer tornadoändringar
Diffstat (limited to 'Dokument/Teknisk Dokumentation/text/system')
| -rw-r--r-- | Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 5c47d53..6dcbadd 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -1,11 +1,14 @@ \subsection{Körning} \label{sec:systembeskrivning:korning} -Huvudloopen körs åtminstonde 10 gånger i sekunden. Den beräknar var bilen -befinner sig, hur snabbt bilen ska köra och skickar det nya gaspådraget till -banan. När en givare passeras justeras också bilens konstant efter nuvarande -varv- och referenstid. Nedan beskrivs vad systemet gör under en komplett -programcykel. +Körningen är uppdelad i olika faser. Dessa presenteras nedan. En +\emph{programcykel} är när dessa faser körs igenom en gång. Samlingsnamnet för +faserna är \emph{huvudloopen}. Systemet behöver köra programcykler med som högst +0,1~sekunders intervall (enligt krav 31). I en programcykel beräknar systemet +var bilen befinner sig, hur snabbt bilen ska köra och skickar det nya +gaspådraget till banan. När en givare passeras justeras också bilens konstant +efter nuvarande varv- och referenstid. Nedan beskrivs vad systemet gör under en +komplett programcykel. \subsubsection{Position} \label{sec:system:korning:position} @@ -23,20 +26,22 @@ position. Detta görs genom att räkna ut en approximativ hastighet $v = \frac{s}{t}$ där $v$ är hastigheten, $s$ är längden på det nuvarande segmentet och $t$ är hur lång tid det nuvarande segmentet tog förra varvet. -% Om ingen givare har passerars och första varvet är avslutat kallas först på funktionen \texttt{get\_approx\_v()}. Denna utgår ifrån -% förra varvets segmentstider (\texttt{car.seg\_times}) och segmentslängder -% (\texttt{car.seg\_len}) och beräknar med $v = \frac{s}{t}$, där \texttt{s} är segmentslängden och \texttt{t} segmentstiden, \texttt{v} som är medelhastigheten för nuvarnade -% segment, men förra varvet. Denna antas vara ungefär samma som nuvarande -% hastiget och kallas \emph{car.v}. - -Med den approximativa hastigheten räknas sedan en beräknad längd bilen rört sig -sedan senaste programcykeln ut med $\mathrm{d}s = v \cdot \mathrm{d}t$ där -$\mathrm{d}s$ är den beräknade sträckan bilen rört sig, $v$ är hastigheten som -precis räknades ut och $\mathrm{d}t$ är tiden sedan den förra programcykeln. -Denna förflyttning adderas med positionen från förra programcykeln och kallas -den \emph{beräknade positionen}. - -Om en givare passerats räknar systemet här ut om en givare vid ett tidigare +% Om ingen givare har passerars och första varvet är avslutat kallas först på +% funktionen \texttt{get\_approx\_v()}. Denna utgår ifrån förra varvets +% segmentstider (\texttt{car.seg\_times}) och segmentslängder +% (\texttt{car.seg\_len}) och beräknar med $v = \frac{s}{t}$, där \texttt{s} är +% segmentslängden och \texttt{t} segmentstiden, \texttt{v} som är +% medelhastigheten för nuvarnade segment, men förra varvet. Denna antas vara +% ungefär samma som nuvarande hastiget och kallas \emph{car.v}. + +Med den approximativa hastigheten räknar sedan systemet ut hur långt bilen rört +sig sen den senaste programcykeln. Denna förflyttning räknas ut med $\mathrm{d}s += v \cdot \mathrm{d}t$ där $\mathrm{d}s$ är den beräknade förflyttningen, $v$ +hastigheten som precis räknades ut och $\mathrm{d}t$ tiden sedan den förra +programcykeln. Denna förflyttning läggs till positionen från förra programcykeln +och kallas den \emph{beräknade} positionen. + +Om en givare passerats upskattar systemet sedan om en givare vid ett tidigare tillfälle passerats (genom att jämföra givarpositionen och den beräknade positionen). Information om denna procedur finns i del~\ref{sec:missade givare}. |
