diff options
Diffstat (limited to 'Dokument/Teknisk Dokumentation/text/04-events.tex')
| -rw-r--r-- | Dokument/Teknisk Dokumentation/text/04-events.tex | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex new file mode 100644 index 0000000..e302ae3 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/04-events.tex @@ -0,0 +1,24 @@ +\subsection{Missade givare} +\label{sec:missade givare} + +Programmet gör redan en uppskattning av bilens position (\texttt{get\_position()}) + och justerar denna vid ny givare, se \ref{sec:system:korning:position}. +Eftersom \texttt{get\_new\_v()} utgår ifrån denna uppskattning, behövs ingen +anpassning göras ifall en givare inte ger utslag. Däremot måste det +kompenseras nästa gång en givare detekteras. Detta görs med funktionen +\texttt{choose\_position()}. + +Vid varje givare kontrollerar \texttt{choose\_position()} vilken givare +\texttt{car.position} ligger närmast genom att jämföra den \emph{beräknade} positionen med de kända positionerna varje givare befinner sig på. +Funktionen beräknar skillnaden i antalet givare mellan denna och den givare som +valdes med givardetektionen. I normala fall är skillnaden 0 (ingen missad givare) eller 1 (om en +givare missats), men systemet kan hantera att flera givare i rad missas. +(Systemet kan inte hantera en givare som skickar dubbla signaler). Om +\texttt{choose\_position()} bedömer att en givare missats flyttas +\texttt{car.segment} till den givare som matchar. + +Den insamlade datan behöver justeras när en eller flera givare har missats. Om +datan inte justeras kommer \texttt{car.seg\_times} spara tiden för flera segment +som om det vore ett enda. För att undvika detta sätts både den nuvarande och den +förra segmentstiden till 0. Om en annan del av systemet vill räkna på +segmentstiderna ansvarar den själv för att hoppa över segmentstider som är noll. |
