summaryrefslogtreecommitdiffstats
path: root/Dokument
diff options
context:
space:
mode:
authorGustav Sörnäs <gusso230@student.liu.se>2019-12-03 09:12:44 +0100
committerGustav Sörnäs <gusso230@student.liu.se>2019-12-03 12:26:00 +0100
commit86b6f6056815bd7e3601e88ff75ec3cdef9229a8 (patch)
treee7cef15177e1ec055bc63c192ec51e08dd4336ed /Dokument
parenta1f497e544181cec873d2964dba5d78c02b05703 (diff)
downloadtfyy51-86b6f6056815bd7e3601e88ff75ec3cdef9229a8.tar.gz
Lägg till fullständig omskrivning av system
Diffstat (limited to 'Dokument')
-rw-r--r--Dokument/Teknisk Dokumentation/text/01-inledning.tex25
-rw-r--r--Dokument/Teknisk Dokumentation/text/02-system.tex101
-rw-r--r--Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex3
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex6
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex33
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/03-korning.tex173
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/05-display.tex14
7 files changed, 205 insertions, 150 deletions
diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex
index 0b38944..5d30a2d 100644
--- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex
+++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex
@@ -7,18 +7,21 @@
\label{fig:bilbanan}
\end{figure}
-\subsection{Bakgrund} Projektet har utförts med hjälp av en bilbana samt
-flera bilar, givare, spänningsaggregat och två datorer inne i bilbanerummet. Via datorn har spänning tillförts till bilbanan. Med hjälp av givarna är
-det möjligt att veta när en bil har passerat en givare. Programvaran har utvecklats
-i Matlab.
+\subsection{Bakgrund}
+
+Projektet har utförts med hjälp av en bilbana samt flera bilar, givare,
+spänningsaggregat och två datorer inne i bilbanerummet. Via datorn har spänning
+tillförts till bilbanan. Med hjälp av givarna är det möjligt att veta när en bil
+har passerat en givare. Programvaran har utvecklats i Matlab.
\subsection{Syfte och mål}
-Syftet med projektet är att lära sig att arbeta i projekt utifrån
-projektmodellen Lips. Målet med projektet är att konstruera ett system som bland
-annat ska få bilarna att köra runt en bilbana på en vald referenstid mellan 12
-och 15 sekunder. Detta ska uppfyllas för båda banor, för flera bilar med olika
-egenskaper och med maximalt 5 kalibreringsvarv. Fler krav som ska klaras av
-finns i kravspecifikationen. Se kravspecifikationen \ref{app:kravbeskrivning}
-samt kursmål.
+Syftet med projektet är att lära sig att arbeta i ett projekt utifrån
+projektstyrningsmodellen LIPS. Målet med projektet var att konstruera ett system
+som kunde köra bilar runt en bilbana på en vald referenstid mellan 12 och 15
+sekunder. Detta skulle göras för flera bilar med olika egenskaper. Fler krav som
+ska klaras av finns i kravspecifikationen (\ref{app:kravbeskrivning}).
+
+\subsection{Avgränsningar}
+- Ingen gemensam målgång
diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex
index 71eefd5..b1df599 100644
--- a/Dokument/Teknisk Dokumentation/text/02-system.tex
+++ b/Dokument/Teknisk Dokumentation/text/02-system.tex
@@ -1,54 +1,57 @@
\section{Begrepp och systemöversikt}
\label{sec:begrepp och systemöversikt}
-Runt om bilbanan finns 9 givare som skickar en signal när
-en bil passerar under dem. En av givarna är målgivaren som går att skilja från de andra givarna då den ger ut en annan signal som defineras som nytt varv. Givarna delar in banan i nio delar, kallade segment. Dessa segment har i sin tur delats in i delsegment. Banan består av totalt 80 delsegment. Delsegementen har indelats utifrån längden på ban-bitarna från banan.
+Runt om bilbanan finns 9 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 om 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å önskad spänningstillförsel till
-banan 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
+banan 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.
-
-Värden som är relevanta för styrningen av vardera bil är i systemet sparad i
-två så kallade \emph{structs} med samma struktur. Att de båda banorna beskrivs
-av samma typ av objekt gör att funktionerna (som beskrivs nedan) kan utformas
-oberoende av vilken bana som hanteras. Dessa variabler hänvisas till som
-\texttt{car.value}. Om två bilar körs finns det således två värden sparade för
-varje variabel som är specifierad nedan, en för bana 1 och en för bana 2.
-
-\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}
+delar av banan för att inte riskera att åka av.
+
+Centralt för systemet är dels den karta som beskrivs ovan och dels 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.
+
+% \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}
diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
index a95e48f..3ea062a 100644
--- a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
+++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
@@ -7,6 +7,9 @@ Systemet funktion vid starten är att öka oftare i början bootstrapen (exempel
\label{fig:flow}
\end{figure}
+Systemet är indelat i olika delsystem efter huvudsaklig funktionalitet enligt figur
+\ref{fig:flow}. Nedan beskrivs dessa delsystem i mer detalj.
+
\input{text/system/01-innan-start}
\input{text/system/02-uppstart}
\input{text/system/03-korning}
diff --git a/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex
index 19e3003..e5f3013 100644
--- a/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex
+++ b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex
@@ -4,8 +4,4 @@ Vid uppstart ritas knappar ut på displayen, se figur x. Med dessa knappar går
det att välja om en eller två banor ska vara aktiva och om de ska styras
autonomt av systemet eller manuellt med handkontroll. Det går också att ställa
in en referenstid mellan 12 och 15 sekunder med 0,5 sekunders intervall genom
-att trycka på + och - på displayen. För att reagera på knapptryck skickas varje
-0,4 sekunder ett kommando till displayen som instruerar displayen att lägga
-information om alla knapptryck som skett i dess interna minne. Detta interna
-minne läses sedan av och händelserna bearbetas i den kronologiska ordning de
-gjordes i.
+att trycka på + och - på displayen.
diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex
index 02b8869..0205233 100644
--- a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex
+++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex
@@ -1,15 +1,28 @@
\subsection{Uppstart}
\label{sec:systembeskrivning:uppstart}
-Vid autonom körning utgår systemet ifrån en bootstrap som är systemet för uppstarten av bilarna. Då körs funktionen \texttt{do\_boot()} som arbetar fram en
-initial \texttt{car.constant}. Detta sker i tre steg. Innan bilen börjar rulla
-höjs \texttt{car.constant} varje 0,7 sekunder. När bilen börjar rulla och åker
-under målgivaren höjs \texttt{car.constant} långsammare tills bilen åkt under
-den första givaren varpå \texttt{car.constant} inte längre ändras. Vid den
-tredje givaren jämförs hur lång tid det senaste segmentet tog att köra och en
-sista \texttt{car.constant} räknas ut som förväntas ge en varvtid på 15
-sekunder. Om den förväntade varvtiden är längre än 15 sekunder höjs
-\texttt{car.constant} och om den förväntade varvtiden är lägre sänks
-\texttt{car.constant}.
+
+% Vid autonom körning utgår systemet ifrån en bootstrap som är systemet för
+% uppstarten av bilarna. Då körs funktionen \texttt{do\_boot()} som arbetar fram
+% en initial \texttt{car.constant}. Detta sker i tre steg. Innan bilen börjar
+% rulla höjs \texttt{car.constant} varje 0,7 sekunder. När bilen börjar rulla och
+% åker under målgivaren höjs \texttt{car.constant} långsammare tills bilen åkt
+% under den första givaren varpå \texttt{car.constant} inte längre ändras. Vid den
+% tredje givaren jämförs hur lång tid det senaste segmentet tog att köra och en
+% sista \texttt{car.constant} räknas ut som förväntas ge en varvtid på 15
+% sekunder. Om den förväntade varvtiden är längre än 15 sekunder höjs
+% \texttt{car.constant} och om den förväntade varvtiden är lägre sänks
+% \texttt{car.constant}.
+
+Vid autonom körning börjar systemet med en så kallad ''bootstrap'' vars funktion
+är att arbeta fram en initial konstant för den aktiva bilen. Detta sker i tre
+steg enligt figur~\ref{fig:bootstrap}. I det första steget står bilen stilla
+framför målgivaren och konstanten höjs ofta (varje 0,7 sekunder, $dt_1$ i
+figuren) med ett mellanstort värde ($dU_1$ i figuren). När bilen börjar rulla
+och passerar målgivaren (\emph{målgivarutslag}) höjs konstanten markant ($dU_2$)
+så bilen ska klara den första sträckan av banan. Konstanten höjs sedan med ett
+mindre värde ($dU_3$) efter ett längre intervall ($dt_2$) tills bilen passerar
+den tredje givaren (\emph{bootstrap slut}). Vid den tredje givaren tar det
+ordinarie systemet vid.
\begin{figure}
\centering
diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
index 24d58ee..5c47d53 100644
--- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
+++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
@@ -2,85 +2,116 @@
\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, justerar \texttt{car.constant} och sätter det
-nya gaspådraget till banan.
-
-Majoriteten av förändringarna i structen \texttt{car} görs i funktionen \texttt{do\_car()}.
-I \texttt{do\_car()} beräknas först positionen (\texttt{car.position}),
-sedan motsvarande hastighetsparameter (\texttt{car.v}) och därefter det gaspådrag
-(\texttt{car.u}) som ska sättas till banan.
+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}
-Det finns två fall när positionen ska beräknas. När en givare har passerats sedan förra positionsberäkningen och när ingen givare har passerats. Under första varvet hanteras endast det första fallet
-och från varv 2 och frammåt görs båda parallellt.
-
-Om en ny givare har passerats, \texttt{car.new\_check\_point == true}, ökar
-programmet nuvarande segment (\texttt{car.segment}) med 1. \texttt{car.segment}, som
-alltid ligger mellan 1 och 9, används som index för att välja position i en
-lista (\texttt{car.pos\_at}). Vi kallar den positionen för \emph{givarpositionen}.
-
-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}.
-
-Sedan beräknas positionen, i meter från målgivaren, med funktionen
-\texttt{get\_position()}. Den använder den ungefärliga hastigheten \texttt{v} beräknad av
-\texttt{approx\_v()} och tiden \texttt{t} sedan denna beräkning gjordes senast (en programcykel, se \ref{sec:system:korning:cykel})
-och beräknar med $s = v \cdot t$ den sträcka som bilen har åkt. Sedan adderas denna
-med förra kända positionen och returneras i \texttt{car.position}. Denna
-\emph{beräknade} position tas också fram när en givare har passerats, då skrivs den över med \emph{givarpositionen} men används i stället för att detektera missade givare. Se \ref{sec:missade givare}.
+
+Om en givare passerats vet systemet exakt var bilen befinner sig. Om så är
+fallet sparas den nuvarande exakta position och kallas \emph{givarpositionen}.
+
+% Om en ny givare har passerats, \texttt{car.new\_check\_point == true}, ökar
+% programmet nuvarande segment (\texttt{car.segment}) med 1. \texttt{car.segment}, som
+% alltid ligger mellan 1 och 9, används som index för att välja position i en
+% lista (\texttt{car.pos\_at}). Vi kallar den positionen för \emph{givarpositionen}.
+
+Oavsett om en givare passerats eller inte räknar systemet ut en beräknad
+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
+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}.
+
+% Sedan beräknas positionen, i meter från målgivaren, med funktionen
+% \texttt{get\_position()}. Den använder den ungefärliga hastigheten \texttt{v} beräknad av
+% \texttt{approx\_v()} och tiden \texttt{t} sedan denna beräkning gjordes senast (en programcykel, se \ref{sec:system:korning:cykel})
+% och beräknar med $s = v \cdot t$ den sträcka som bilen har åkt. Sedan adderas denna
+% med förra kända positionen och returneras i \texttt{car.position}. Denna
+% \emph{beräknade} position tas också fram när en givare har passerats, då skrivs den över med \emph{givarpositionen} men används i stället för att detektera missade givare. Se \ref{sec:missade givare}.
\subsubsection{Gaspådrag}
-Efter positionsberäkningen beräknas det gaspådrag som skall sättas till banan. Detta görs i två
-funktioner, \texttt{get\_new\_v} och \texttt{get\_new\_u}.
-
-I \texttt{get\_new\_v} används bilens nuvarande postition (\texttt{car.postition})
-och hastighetskartan (\texttt{car.map}). I \texttt{car.map} finns en
-hastighetsparameter för varje \texttt{car.position} (Se \ref{sec:begrepp och systemöversikt}.), denna retuneras av funktionen
-och sparas i \texttt{car.v}.
-
-I \texttt{get\_new\_u} används denna hastighetsparameter tillsammans med
-\texttt{car.constant}. Dessa multipliceras och deras produkt retuneras och sparas
-i \texttt{car.u}.
+Efter positionsberäkningen beräknas spänningen som ska skickas till banan. Detta
+görs genom att multiplicera det önskade spänningsvärdet för den nuvarande
+positionen från kartan med bilens konstant.
+
+% Efter positionsberäkningen beräknas det gaspådrag som skall sättas till banan. Detta görs i två
+% funktioner, \texttt{get\_new\_v} och \texttt{get\_new\_u}.
+%
+% I \texttt{get\_new\_v} används bilens nuvarande postition (\texttt{car.postition})
+% och hastighetskartan (\texttt{car.map}). I \texttt{car.map} finns en
+% hastighetsparameter för varje \texttt{car.position} (Se \ref{sec:begrepp och systemöversikt}.), denna retuneras av funktionen
+% och sparas i \texttt{car.v}.
+%
+% I \texttt{get\_new\_u} används denna hastighetsparameter tillsammans med
+% \texttt{car.constant}. Dessa multipliceras och deras produkt retuneras och sparas
+% i \texttt{car.u}.
\subsubsection{Governor}
\label{sec:systembeskrivning:governor}
-Om bootstrap är avslutad, körs den del av koden vars ända uppgift är att
-anpassa \texttt{car.constant}.
-
-Detta görs med funktionen \texttt{do\_gov}. Först görs en uppskattning av
-varvtiden utifrån hur lång tid varvet har tagit än
-så länge. Detta görs med forecasts som beräknar den approximerade varvtiden utifrån tid fram tills senast
-passerad givare samt hastighet i tidigare segment. Genom att veta en
-genomsnittlig hastighet går det med kvarvarande sträcka att räkna ut en
-ungefärlig kvarvarande tid. När tiden från mål till senaste passerade givare adderas med
-den uträknade approximerade tiden kvar, så erhålls det en uppskattad varvtid som
-används för att avgöra om en bil behöver åka snabbare eller långsammare. Om bilen dock är inne på sitt första varv görs uppskattningen endast
-utifrån förra segmentet \texttt{car.forcasts\_naive} och om första varvet är
-avslutat så används \texttt{car.forcasts} som vanligt. Detta görs efter segment 4 och 8. Dessutom används den
-faktiska varvtiden när bilen passerar mål (från varv 2 och frammåt).
-
-Sedan jämförs denna uppskattade varvtid med referenstiden (\texttt{car.ref\_time})
-och \texttt{car.constant} justeras.
-\begin{verbatim}
-car.constant = car.constant + (status - 1) * 0.08;
-\end{verbatim}
-Där \texttt{status} är den uppskattade varvtidens förhållande till \texttt{car.ref\_time}.
-D.v.s om de är exakt lika blir \texttt{status~ =~ 1}, om uppskattningen är högre blir
-den större än 1 och om den är lägre blir den mindre än 1. Således kommer \texttt{car.constant}
-höjas eller sänkas proportionellt mot hur långt ifrån \texttt{car.ref\_time} uppskattningen
-av varvtiden ligger.
-
-\subsubsection{Hantering av cykellängd}
+
+Om bootstrap är avslutad och en givare passerats behöver bilens konstant
+eventuellt justeras.
+
+För att justera bilens konstant behöver systemet först beräkna hur lång tid det
+nuvarande varvet kommer ta. Vid varje givare beräknas därför den genomsnittliga
+hastigheten genom det förra segmentet och multipliceras med den kvarvarande
+sträckan på varvet för att få den uppskattade tiden den resterande delen av
+varvet kommer ta. Denna tid läggs ihop med varvtiden hittils och ger då en
+uppskattad varvtid för det nuvarande varvet. Denna varvtid jämförs sedan med den
+valda referenstiden och bilens konstant anpassas vid behov.
+
+% Detta görs med funktionen \texttt{do\_gov}. Först görs en uppskattning av
+% varvtiden utifrån hur lång tid varvet har tagit än
+% så länge. Detta görs med forecasts som beräknar den approximerade varvtiden utifrån tid fram tills senast
+% passerad givare samt hastighet i tidigare segment. Genom att veta en
+% genomsnittlig hastighet går det med kvarvarande sträcka att räkna ut en
+% ungefärlig kvarvarande tid. När tiden från mål till senaste passerade givare adderas med
+% den uträknade approximerade tiden kvar, så erhålls det en uppskattad varvtid som
+% används för att avgöra om en bil behöver åka snabbare eller långsammare. Om bilen dock är inne på sitt första varv görs uppskattningen endast
+% utifrån förra segmentet \texttt{car.forcasts\_naive} och om första varvet är
+% avslutat så används \texttt{car.forcasts} som vanligt. Detta görs efter segment 4 och 8. Dessutom används den
+% faktiska varvtiden när bilen passerar mål (från varv 2 och frammåt).
+%
+% Sedan jämförs denna uppskattade varvtid med referenstiden (\texttt{car.ref\_time})
+% och \texttt{car.constant} justeras.
+
+% \begin{verbatim}
+% car.constant = car.constant + (status - 1) * 0.08;
+% \end{verbatim}
+
+% Där \texttt{status} är den uppskattade varvtidens förhållande till \texttt{car.ref\_time}.
+% D.v.s om de är exakt lika blir \texttt{status~ =~ 1}, om uppskattningen är högre blir
+% den större än 1 och om den är lägre blir den mindre än 1. Således kommer \texttt{car.constant}
+% höjas eller sänkas proportionellt mot hur långt ifrån \texttt{car.ref\_time} uppskattningen
+% av varvtiden ligger.
+
+\subsubsection{Hantering av längden av en programcykel}
\label{sec:system:korning:cykel}
-I slutet av varje cykel körs det en loop som tillfälligt pausar programmet.
-För att få avläsningen att ske minst en gång var tionde sekund så pausas
-programmet kontinuerligt 0.001 sekunder tills den totala paustiden överskrider
-0.07 sekunder då nästa cykel börjar. Då pausen på 0.001 sekunder är så pass
+
+I slutet av varje cykel körs en loop som tillfälligt pausar programmet.
+För att få avläsningen att ske minst en gång var tionde sekund pausas
+programmet kontinuerligt 0,001 sekunder tills den totala paustiden överskrider
+0,07 sekunder då nästa cykel börjar. Då pausen på 0,001 sekunder är så pass
kort och marginalen till kravet är rätt stor så sker avläsningen mellan
-0.07 och 0.1 sekunder. I en if-sats sparas den högst
-uppmätta tiden i \texttt{highToc}. \ No newline at end of file
+0,07 och 0,1 sekunder. Längden på den största skillnaden mellan två avläsningar
+sparas och visas vid programmets slut.
+
diff --git a/Dokument/Teknisk Dokumentation/text/system/05-display.tex b/Dokument/Teknisk Dokumentation/text/system/05-display.tex
index 5b36342..85fa026 100644
--- a/Dokument/Teknisk Dokumentation/text/system/05-display.tex
+++ b/Dokument/Teknisk Dokumentation/text/system/05-display.tex
@@ -1,6 +1,12 @@
\subsection{Display}
-I varje programcykel skickas värdet på \texttt{car.u} till två stapeldiagram på
-displayen för vardera bil. Se \ref{app:funktioner och filer:display} för information om displayens
-stapeldiagram. Om ett nytt varv inleds skrivs dessutom förra varvnumret och
-varvtiden ut på displayen.
+I varje programcykel skickas dessutom värdet på vardera bils spänningspålägg
+till två stapeldiagram på den ansluta displayen. Om ett nytt varv inleds skrivs
+dessutom förra varvnumret och varvtiden ut på displayen. Se del~
+\ref{app:funktioner och filer:display} för information om hur kommunikationen
+till displayen implementerades.
+
+% I varje programcykel skickas värdet på \texttt{car.u} till två stapeldiagram på
+% displayen för vardera bil. Se \ref{app:funktioner och filer:display} för information om displayens
+% stapeldiagram. Om ett nytt varv inleds skrivs dessutom förra varvnumret och
+% varvtiden ut på displayen.