summaryrefslogtreecommitdiffstats
path: root/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex')
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/03-korning.tex58
1 files changed, 33 insertions, 25 deletions
diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
index 944914d..d60ef2e 100644
--- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
+++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
@@ -15,51 +15,59 @@ Det finns två fall när positionen ska beräknas. När en givare har passerats
när en givare inte har passerats. Under första varvet hanteras endast det första fallet
och från varv 2 och frammåt görs båda paralellt.
-Om en ny givare har passerats, \emph{car.new\_check\_point == true}, ökar
-programmet nuvarande segment (\emph{car.segment}) med 1. \emph{car.segment}, som
+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 (\emph{car.pos\_at}).
+lista (\texttt{car.pos\_at}).
Om ingen givare har passerars och bilen har avslutat första varvet, alltså
oftast, görs lite mer avancerade beräkningar. För att beräkna positionen
-använder proggrammet först en funktion \emph{get\_aprox\_v}. Denna utgår ifrån
-förra varvets segmentstider (\emph{car.seg\_times}) och segmentslängder
-(\emph{car.seg\_len}) och beräknar med $v = \frac{s}{t}$ medelhastigheten för nuvarnade
+använder proggrammet först en funktion \texttt{get\_aprox\_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}$ medelhastigheten för nuvarnade
segment, men förra varvet. Denna antas vara ungefär samma sak som nuvarande
hastiget.
Sedan beräknas den fakiska positionen, i meter från målgivaren, med funktionen
-\emph{get\_position}. Den använder den ungefärliga hastigheten beräknad av
-\emph{aprox\_v} och tiden sedan denna beräkning gjordes senast (en programcykel)
+\texttt{get\_position}. Den använder den ungefärliga hastigheten beräknad av
+\texttt{aprox\_v} och tiden sedan denna beräkning gjordes senast (en programcykel)
och beräknar med $s = v \cdot t$ den sträcka som bilen har åkt. Sedan adderas denna
-med förra kända postionen och retuneras i \emph{car.position}.
+med förra kända postionen och retuneras i \texttt{car.position}.
\subsubsection{Gaspådrag}
Efter positionsberäkningen beräknas det gaspådrag som skall sättas till banan. Detta görs i två
-funktioner, \emph{get\_new\_v} och \emph{get\_new\_u}.
+funktioner, \texttt{get\_new\_v} och \texttt{get\_new\_u}.
-I \emph{get\_new\_v} används bilens nuvarande postition (\emph{car.postition})
-och hastihetskartan (\emph{car.map}). I \emph{car.map} finns en
-hastighetsparameter för varje \emph{car.position}, denna retuneras av funktionen
-och sparas i \emph{car.v}.
+I \texttt{get\_new\_v} används bilens nuvarande postition (\texttt{car.postition})
+och hastihetskartan (\texttt{car.map}). I \texttt{car.map} finns en
+hastighetsparameter för varje \texttt{car.position}, denna retuneras av funktionen
+och sparas i \texttt{car.v}.
-I \emph{get\_new\_u} används denna hastighetsparameter tillsammans med
-\emph{car.constant}. Dessa multipliceras och deras produkt retuneras och sparas
-i \emph{car.u}.
+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}
Om bootstrap är avslutad, körs den del av koden vars ända uppgift är att
-anpassa \emph{car.constant}.
+anpassa \texttt{car.constant}.
-Detta görs med funktionen \emph{do\_gov}. Först görs en uppskattning av varvtiden utifrån hur lång tid varvet har tagit än
-så länge. Om bilen är inne på sitt första varv görs uppskattningen endast
-utifrån förra segmentet \emph{car.forcasts\_naive} och om första varvet är
-avslutat använder den i stället \emph{car.forcasts} som kollar på hela varvtiden
+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, se REFERENS!. Om bilen ä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 använder den i stället \texttt{car.forcasts} som kollar på hela varvtiden
fram till och med nu. Detta görs efter segment 4 och 8. Desutom används den
faktiska varvtiden när bilen passerar mål (från varv 2 och frammåt).
-Sedan jämförs den uppskattade varvtiden med referenstiden \emph{car.ref\_time}.
-Om den uppskattade varviden är högre än referenstiden höjs \emph{car.constant}
-och om den är lägre sänks \emph{car.constant}.
+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.