blob: ce1b348952ffae84e421066c9745d773ef59c5d5 (
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
\section{Begrepp och systemöversikt}
\label{sec:begrepp och systemöversikt}
Runt om bilbanan finns nio givare som skickar en signal när en bil passerar under
dem. En av givarna kallas målgivaren vars signal går att skilja från övriga
givare och således passar som en markör när ett nytt varv inleds. Givarna
delar in banan i nio delar, kallade segment. Dessa segment har i sin tur delats
in i totalt 80 delsegment där ett delsegment motsvarar en fysisk bit av banan.
För vardera bana och delsegment har ett värde på en \emph{spänningsparameter}
tagits fram. Detta värde varierar dels eftersom bilarna vid olika delar av banan
behöver olika mycket spänningstillförsel för samma hastighet och dels eftersom
bilarna vid vissa delar av banan inte kan åka lika snabbt som vid andra delar av
banan för att inte riskera att åka av. En spänningsparameter är i det här fallet
ett värde som i slutändan kommer multipliceras med en parameter för bilen för
att ge en slutlig signal att skicka till banan.
För att anpassa efter olika bilars köregenskaper (vikt, motor, magnetstyrka och
så vidare) används en variabel kallad bilens \emph{konstant}. Konstanten tas
fram av systemet vid uppstart och är helt oberoende från tidigare körningar.
% Centralt för systemet är den karta som beskrivs ovan samt en
% modifierare som beror på köregenskaperna för den nuvarande bilen. Det
% modifierande värdet kallas bilens \emph{konstant}. Denna konstant varierar
% beroende på hur mycket spänning en viss bil behöver för att nå en viss
% hastighet. Konstanten anpassas under körningens gång ytterligare beroende på
% bilens varvtid jämfört med referenstiden.
\subsection{Display}
Förutom bilbanan finns även en display. Denna används innan körningen för att
välja vilka banor som ska köras, om de ska köras manuellt eller autonomt och
vilken referenstid som ska köras mot. Under körningen visas i realtid det
gaspådrag som skickas till banan. Efter körningen visas statistik i form av
varvtider och den genomsnittliga tiden per segment.
\subsection{Kommunikation}
För att rita object på displayen finns hjälpfunktioner liknande ett API som
tagits fram utifrån displayens tekniska specifikation, se bilaga displayspecifikation.
Hjälpfunktionerna implementerades i Matlab och beskrivs i sin helhet i Appendix
del~\ref{app:funktioner och filer:display}.
För att reagera på knapptryck på displayen kan displayen instrueras att flytta
hela sitt interna minne (där information om bland annat knapptryck finns) till
ett minne som delas med styrdatorn. Detta minne kan sedan läsas av och systemet
kan agera utifrån händelserna som har skett.
% \begin{itemize}
%
% \item \texttt{car.num} - Om bilen är på bana ett eller två.
% \item \texttt{car.running} - Om bilen körs eller inte.
% \item \texttt{car.stopping} - Om bilen för tillfället letar efter ett ställe att stanna på.
% \item \texttt{car.stopped} - Om bilen har hittat ett ställe att stanna på.
% \item \texttt{car.automatic} - Om bilen ska köras autonomt.
% \item \texttt{car.segment} - Bilens nuvarande segment.
% \item \texttt{car.lap} - Bilens nuvarande varv.
% \item \texttt{car.lap\_times} - En lista över bilens varvtider.
% \item \texttt{car.seg\_times} - En matris över bilens segmentstider per varv.
% \item \texttt{car.position} - Bilens position i meter efter målgivaren.
% \item \texttt{car.pos\_at} - En lista över hur långt det är kvar till målgivaren från de olika segmenten.
% \item \texttt{car.seg\_len} - En lista över längden för varje segment.
% \item \texttt{car.percents} - En lista över hur stor andel av varvtiden varje segment förväntas ta.
% \item \texttt{car.map} - Kartan över alla subsegment och önskad spänningstillförsel.
% \item \texttt{car.miss\_probability} - Sannolikheten att bilen vid en given givare inte får en signal. Används för att testa krav 3.
% \item \texttt{car.constant} - Multipliceras med den önskade spänningstillförseln för att
% kompensera för olika bilars olika påverkan av samma spänningstillförsel.
%
% \end{itemize}
%
%
% Utöver dessa värden sparas ett antal värden för själva systemet.
%
% \begin{itemize}
%
% \item \texttt{display.data} - En kö av kommandon som ska skickas till displayen.
% \item \texttt{bootN.status} - Om den så kallade ''bootstrapen'' är aktiv för bana N. Se \ref{sec:systembeskrivning:uppstart}
% \item \texttt{bootN.time} - Den tid som passerat sedan förra gången ''bootstrapen'' höjde \texttt{car.constant} för bana N. Se
% \ref{sec:systembeskrivning:uppstart}
% \item \texttt{halt} - Om någon av bilarna åkt av och användaren valt att avbryta körningen.
% \item \texttt{t} - Hur lång tid den nuvarande programcykeln tagit.
% \item \texttt{highToc} - Längden på den längsta programcykeln. Används för att kontrollera krav 31.
%
% \end{itemize}
|