summaryrefslogtreecommitdiffstats
path: root/Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt
blob: f22436b30b70b080a42120c54555358ebd74ea87 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Missade givare

Programmet gör redan en uppskattning av bilens position (\emph{get\_position})
 och justerar denna vid ny givare (lägg till referens här).
Eftersom \emph{get\_new_v} utgår ifrån denna uppskattning, kommer ingen
anpassning behöva 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 
\emph{choose\_position}. Den funktionen jämför positionen beräknad av 
\emph{get\_position} och positionen vald av nuvarande givare. 

Vid varje givare kollar \emph{choose\_position} vilken givare som 
\emph{get\_position} ligger närmast. Funktionen beräknar skillnaden mellan denna
och den givare som valdes med givardetektionen. Denna kallas \emph{seg\_plus}.
I normala fall är \emph{seg\_plus0} = 0 (ingen 
missad givare) eller 1 (en missad givare), men den kan också bli högre. Eftersom
programmet inte ska behöva hantera för många givarsignaler ska \emph{seg\_plus}
aldrig kunna bli lägre än 0. I så fall ändras denna till 0. \emph{seg\_plus} 
retuneras av funktionen och används sedan för att höja \emph{car.segment} så att
programmet har koll på var bilen är.

Dessutom behöver den insamlade datan justeras när en eller flera givare har 
missats. Annars kommer \emph{car.seg\_times} spara tiden för flera segment som 
om det vore ett enda. Lösningen är att skriva över denna tid med 0. Alla 
funktioner som använder denna data behöver kolla ifall den är noll eller inte, 
om den är noll används den ifrån varvet innan i stället. Om den också är noll 
används den från två varv tidigare osv.