summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gusso230@student.liu.se>2019-12-13 15:29:48 +0100
committerGustav Sörnäs <gusso230@student.liu.se>2019-12-13 15:29:48 +0100
commitdfdd882832246e719d8a48934a153da44bc638e5 (patch)
tree84e41452647f81b25f29b69521976aaced0fe61d
parent6e1a2e53c915c90926b49e2c388ba480b1107ea5 (diff)
downloadtfyy51-dfdd882832246e719d8a48934a153da44bc638e5.tar.gz
Korrigeringar av korrigeringar
-rw-r--r--Dokument/Teknisk Dokumentation/text/01-inledning.tex11
-rw-r--r--Dokument/Teknisk Dokumentation/text/02-system.tex33
-rw-r--r--Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex2
-rw-r--r--Dokument/Teknisk Dokumentation/text/05-end.tex7
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/03-korning.tex102
5 files changed, 83 insertions, 72 deletions
diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex
index 47ebabf..d2577eb 100644
--- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex
+++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex
@@ -1,18 +1,11 @@
\section{Inledning}
Målet med projektet har varit att konstruera ett system som kör bilar runt en
-bilbana (se Figur \ref{fig:bilbanan}) på en vald referenstid mellan 12 och 15
+bilbana på en vald referenstid mellan 12 och 15
sekunder. Syftet var att lära sig att arbeta utifrån projektstyrningsmodellen
LIPS. Systemet skulle fungera oavsett vilken av de tillhandahållna bilarna som
kördes. Ytterligare krav återfinns i kravspecifikationen och hur systemet
-presterade presenteras i Appendix~\ref{app:kravbeskrivning}.
-
-\begin{figure}
- \centering
- \includegraphics[width=\linewidth] {Figures/BanaModell}
- \caption{En modell av bilbanan.}
- \label{fig:bilbanan}
-\end{figure}
+uppfyllde dessa återfinns i Appendix~\ref{app:kravbeskrivning}.
Projektet har utförts med
%Det material som tillhandahölls för projektet var:
diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex
index 9748d6f..27012a9 100644
--- a/Dokument/Teknisk Dokumentation/text/02-system.tex
+++ b/Dokument/Teknisk Dokumentation/text/02-system.tex
@@ -1,21 +1,30 @@
\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 fö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 mindre delsegment. 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.
+\begin{figure}
+ \centering
+ \includegraphics[width=\linewidth] {Figures/BanaModell}
+ \caption{En modell av bilbanan.}
+ \label{fig:bilbanan}
+\end{figure}
+
+Runt om bilbanan finns nio givare (se Figur~\ref{fig:bilbanan}) 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 fö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 mindre delsegment. 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.
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.
-Spänningen som skickas till banan fås genom att multiplicera tidigare nämnda
-spänningsparameter med bilens konstant.
+fram av systemet vid uppstart, justeras kontinuerligt under hela körningen och
+är oberoende från tidigare körningar. Spänningen som skickas till banan
+fås genom att multiplicera tidigare nämnda spänningsparameter med bilens
+konstant.
% Centralt för systemet är den karta som beskrivs ovan samt en
% modifierare som beror på köregenskaperna för den nuvarande bilen. Det
diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
index a361251..713a72b 100644
--- a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
+++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
@@ -34,6 +34,6 @@ stoppats.
När körningen avslutas slutar systemet skicka spänning till banan. Om en bil
kört fler än två varv sparas statistik från körningen i en \texttt{.mat}-fil med
nuvarande datum och tid som filnamn. Vid programslut visas också statistik om
-varvtid och genomsnittlig segmenttid på displayen (Figur~\ref{fig:display-seg}
+varvtid och genomsnittlig segmentstid på displayen (Figur~\ref{fig:display-seg}
och Figur~\ref{fig:display-lap}).
diff --git a/Dokument/Teknisk Dokumentation/text/05-end.tex b/Dokument/Teknisk Dokumentation/text/05-end.tex
index 7ff2972..4a1d13e 100644
--- a/Dokument/Teknisk Dokumentation/text/05-end.tex
+++ b/Dokument/Teknisk Dokumentation/text/05-end.tex
@@ -11,10 +11,9 @@ Användaren kan välja att se varvtider från körningen som avslutades. Display
visar dels en tabell med referenstid, genomsnittlig varvtid och
standardavvikelse och dels en graf över alla varvtider för den ena av bilarna.
Grafen är en vanlig ''scatter plot'' med linjer mellan punkterna. Utritat finns
-också den valda referenstiden och två linjer vid referenstiden $+$ 0,5~sekunder
-respektive referenstiden $-$ 0,5~sekunder; den maximalt tillåtna avvikelsen från
-referenstiden. Om två bilar körts kan användaren byta bil genom att trycka på en
-knapp på displayen.
+också den valda referenstiden och två linjer som markerar den maximalt tillåtna
+avvikelsen från referenstiden; $\pm$ 0,5 sekunder. Om två bilar körts kan
+användaren byta vilken bil som visas genom att trycka på en knapp på displayen.
\subsection{Segmentstider}
diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
index 1d5f53f..63105f4 100644
--- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
+++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
@@ -17,9 +17,10 @@ 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}.
+% 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 =
@@ -46,11 +47,14 @@ tillfälle missats (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}.
+% \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}
@@ -58,64 +62,70 @@ Efter positionsberäkningen beräknas spänningen som ska skickas till banan. De
fås genom att multiplicera en hastighetsparameter ($v$, som beror på bilens
position) med bilens konstant ($k$) enligt $u = kv$.
-% Efter positionsberäkningen beräknas spänningen som ska skickas till banan. Först
-% används positionen för att välja en spänningsparameter. Denna finns i kartan som
-% är indexerad efter position. Gaspådraget ($u$) fås sedan genom att multiplicera
-% denna hastighetsparameter ($v$) med bilens konstant ($k$): $u = v \cdot k$.
+% Efter positionsberäkningen beräknas spänningen som ska skickas till banan.
+% Först används positionen för att välja en spänningsparameter. Denna finns i
+% kartan som är indexerad efter position. Gaspådraget ($u$) fås sedan genom att
+% multiplicera denna hastighetsparameter ($v$) med bilens konstant ($k$): $u = v
+% \cdot k$.
-% 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}.
+% 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\_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}.
+% \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 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 hittills 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
+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 hittills 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).
+% 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.
+% 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.
+% 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 en loop som tillfälligt pausar programmet. För att
+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 i 0,001 sekunder tills den totala paustiden överskrider 0,07
sekunder och nästa cykel börjar. Eftersom pausen på 0,001 sekunder är så pass