From 3ea2a3850e044fec6fa01447489b43d56a22d79f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 15:09:11 +0100 Subject: Flytta systembeskrivning till egna filer --- .../text/system/03-korning.tex | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Dokument/Teknisk Dokumentation/text/system/03-korning.tex (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex new file mode 100644 index 0000000..2dc4ef3 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -0,0 +1,34 @@ +\subsection{Körning} + +Huvudloopen körs åtminstonde 10 gånger i sekunden. Den beräknar först var bilen +befinner sig, sedan väljer den hur snabbt bilen ska köra och slutligen sätts den +hastigheten till banan. + +Den viktigaste delen av huvudloopen är funktionen \emph{do\_car}. Funktionen +beräknar de ändrinar som skall göras i matlab-structen \emph{car} och är indelad +i många delar. + +\subsubsection{Position} + +Det finns två fall när positionen ska beräknas. När en givare har passerats och +när en givare inte har passerats. Under första varvet görs endast det första 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 +alltid ligger mellan 1 och 9, används som index för att välja position i en +lista (\emph{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 = 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) +och beräknar med s = v * t den sträcka som bilen har åkt. Sedan adderas denna +med förra kända postionen och retuneras i \emph{car.position}. -- cgit v1.2.1 From 3c5b7546f4e9b36456b5030d8004855a5160cde6 Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 15:45:29 +0100 Subject: =?UTF-8?q?Inledning=20till=20k=C3=B6rning=20f=C3=B6r=C3=A4ndras?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../text/system/03-korning.tex | 43 +++++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 2dc4ef3..c33037e 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -1,12 +1,13 @@ \subsection{Körning} -Huvudloopen körs åtminstonde 10 gånger i sekunden. Den beräknar först var bilen -befinner sig, sedan väljer den hur snabbt bilen ska köra och slutligen sätts den -hastigheten till banan. +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. -Den viktigaste delen av huvudloopen är funktionen \emph{do\_car}. Funktionen -beräknar de ändrinar som skall göras i matlab-structen \emph{car} och är indelad -i många delar. +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 (\textt{car.v}) och därefter det gaspådrag +(\textt{car.u}) som ska sättas till banan. \subsubsection{Position} @@ -32,3 +33,33 @@ Sedan beräknas den fakiska positionen, i meter från målgivaren, med funktione \emph{aprox\_v} och tiden sedan denna beräkning gjordes senast (en programcykel) och beräknar med s = v * t den sträcka som bilen har åkt. Sedan adderas denna med förra kända postionen och retuneras i \emph{car.position}. + +\subsubsection{Gaspådrag} + +Sedan 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}. + +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 \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}. + +\subsubsection{Governor} + +Sedan, om bootstrap är avslutad, körs den del av koden vars ända uppgift är att +anpassa \emph{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 +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}. -- cgit v1.2.1 From e7f8451bef1a63f906006f3fcdf4d8abb6d6bb8f Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 15:56:29 +0100 Subject: =?UTF-8?q?allm=C3=A4nna=20=C3=A4ndringar=20i=20system?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Teknisk Dokumentation/text/system/03-korning.tex | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index c33037e..944914d 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -6,14 +6,14 @@ 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 (\textt{car.v}) och därefter det gaspådrag -(\textt{car.u}) som ska sättas till banan. +sedan motsvarande hastighetsparameter (\texttt{car.v}) och därefter det gaspådrag +(\texttt{car.u}) som ska sättas till banan. \subsubsection{Position} Det finns två fall när positionen ska beräknas. När en givare har passerats och -när en givare inte har passerats. Under första varvet görs endast det första och -från varv 2 och frammåt görs båda paralellt. +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 @@ -24,20 +24,20 @@ 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 = s/t medelhastigheten för nuvarnade +(\emph{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) -och beräknar med s = v * t den sträcka som bilen har åkt. Sedan adderas denna +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}. \subsubsection{Gaspådrag} -Sedan 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}. +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}. I \emph{get\_new\_v} används bilens nuvarande postition (\emph{car.postition}) och hastihetskartan (\emph{car.map}). I \emph{car.map} finns en @@ -50,7 +50,7 @@ i \emph{car.u}. \subsubsection{Governor} -Sedan, om bootstrap är avslutad, körs den del av koden vars ända uppgift är att +Om bootstrap är avslutad, körs den del av koden vars ända uppgift är att anpassa \emph{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 -- cgit v1.2.1 From 301ab294977f0809d8e350d6a22653676cbb5bd7 Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 17:15:57 +0100 Subject: Skrev om gov --- .../text/system/03-korning.tex | 58 ++++++++++++---------- 1 file changed, 33 insertions(+), 25 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') 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. -- cgit v1.2.1 From 2a5f762cdc0e956699743f4d2ef5405ffef58f77 Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 17:39:41 +0100 Subject: lade till cykel --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index d60ef2e..1bfbe49 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -10,7 +10,7 @@ sedan motsvarande hastighetsparameter (\texttt{car.v}) och därefter det gaspåd (\texttt{car.u}) som ska sättas till banan. \subsubsection{Position} - +\label{sec:system:korning:position} Det finns två fall när positionen ska beräknas. När en givare har passerats och 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. @@ -36,6 +36,8 @@ med förra kända postionen och retuneras i \texttt{car.position}. \subsubsection{Gaspådrag} +se sektion \ref{sec:system:korning:position} + 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}. @@ -71,3 +73,10 @@ D.v.s om de är exakt lika blir \texttt{status~ =~ 1}, om uppskattningen är hö 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{Cykel} +För att verifiera att givarna läses av minst tio gånger i sekunden så körs det +en funktion i slutet av varje cykel som tillfälligt pausar givarnas avläsning. +Funktionen gör en paus på 0.001 sekunder och gör det tills funktionen totalt har +pausat i över 0.07 sekunder. Under körningen så sparar funktionen den högst +uppmätta paustiden. \ No newline at end of file -- cgit v1.2.1 From 60e882e46fcf701519535ed4243848070567facb Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 18:31:22 +0100 Subject: Referenser --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 1bfbe49..81fbe08 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -1,4 +1,5 @@ \subsection{Körning} +\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 @@ -36,8 +37,6 @@ med förra kända postionen och retuneras i \texttt{car.position}. \subsubsection{Gaspådrag} -se sektion \ref{sec:system:korning:position} - 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}. @@ -51,7 +50,7 @@ I \texttt{get\_new\_u} används denna hastighetsparameter tillsammans med 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}. @@ -75,6 +74,7 @@ höjas eller sänkas proportionellt mot hur långt ifrån \texttt{car.ref\_time} av varvtiden ligger. \subsubsection{Cykel} +\label{sec:system:korning:cykel} För att verifiera att givarna läses av minst tio gånger i sekunden så körs det en funktion i slutet av varje cykel som tillfälligt pausar givarnas avläsning. Funktionen gör en paus på 0.001 sekunder och gör det tills funktionen totalt har -- cgit v1.2.1 From 85db9e291b09f02ba3b0004a58ac907c30bea0bf Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 19:15:16 +0100 Subject: =?UTF-8?q?L=C3=A4st=20igenom=20och=20justerat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 81fbe08..aa8fa25 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -73,10 +73,10 @@ den större än 1 och om den är lägre blir den mindre än 1. Således kommer \ höjas eller sänkas proportionellt mot hur långt ifrån \texttt{car.ref\_time} uppskattningen av varvtiden ligger. -\subsubsection{Cykel} +\subsubsection{Hantering av cykellängd} \label{sec:system:korning:cykel} -För att verifiera att givarna läses av minst tio gånger i sekunden så körs det -en funktion i slutet av varje cykel som tillfälligt pausar givarnas avläsning. -Funktionen gör en paus på 0.001 sekunder och gör det tills funktionen totalt har -pausat i över 0.07 sekunder. Under körningen så sparar funktionen den högst -uppmätta paustiden. \ No newline at end of file +För att garamtera att givarna läses av minst tio gånger i sekunden så körs det +en for-loop i slutet av varje cykel som tillfälligt pausar programmet. +For-loopen gör en paus på 0.001 sekunder och gör det tills programmet totalt har +pausat i över 0.07 sekunder. Den totala paustiden mäts och en if-sats sparar den högsta +uppmätta paustiden i \texttt{highToc}. \ No newline at end of file -- cgit v1.2.1 From 4ab6065748aae1c0399d00bcc509671d7c1395cb Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 14:16:15 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20sm=C3=A5stavfel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index aa8fa25..49f4f49 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -41,7 +41,7 @@ Efter positionsberäkningen beräknas det gaspådrag som skall sättas till bana funktioner, \texttt{get\_new\_v} och \texttt{get\_new\_u}. I \texttt{get\_new\_v} används bilens nuvarande postition (\texttt{car.postition}) -och hastihetskartan (\texttt{car.map}). I \texttt{car.map} finns en +och hastighetskartan (\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}. @@ -59,7 +59,7 @@ 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 +fram till och med nu. 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}) -- cgit v1.2.1 From 88d5d5f561d007902cda8661c02a067a65a9cfb1 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 2 Dec 2019 14:34:28 +0100 Subject: position --- .../text/system/03-korning.tex | 26 ++++++++++------------ 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index aa8fa25..129961f 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -12,28 +12,26 @@ sedan motsvarande hastighetsparameter (\texttt{car.v}) och därefter det gaspåd \subsubsection{Position} \label{sec:system:korning:position} -Det finns två fall när positionen ska beräknas. När en givare har passerats och -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. +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}). +lista (\texttt{car.pos\_at}). Vi kallar den positionen för \emph{givarpositionen}. -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 \texttt{get\_aprox\_v}. Denna utgår ifrån +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}$ medelhastigheten för nuvarnade -segment, men förra varvet. Denna antas vara ungefär samma sak som nuvarande -hastiget. +(\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 den fakiska positionen, i meter från målgivaren, med funktionen -\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) +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 postionen och retuneras i \texttt{car.position}. +med förra kända postionen 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} -- cgit v1.2.1 From 7028bd0a27cc801a0ac8448cf3b62f8d7c4c41ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Mon, 2 Dec 2019 17:06:32 +0100 Subject: =?UTF-8?q?Lade=20till=20justering=20f=C3=B6r=20hantering=20av=20c?= =?UTF-8?q?ykell=C3=A4ngd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 47fa600..2892d04 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -73,8 +73,10 @@ av varvtiden ligger. \subsubsection{Hantering av cykellängd} \label{sec:system:korning:cykel} -För att garamtera att givarna läses av minst tio gånger i sekunden så körs det -en for-loop i slutet av varje cykel som tillfälligt pausar programmet. -For-loopen gör en paus på 0.001 sekunder och gör det tills programmet totalt har -pausat i över 0.07 sekunder. Den totala paustiden mäts och en if-sats sparar den högsta -uppmätta paustiden i \texttt{highToc}. \ No newline at end of file +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 +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 -- cgit v1.2.1 From 966c44e6193d2a9beb0dd13218bce96f4e4cef80 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 18:42:50 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20stavfel=20i=20positionen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 2892d04..7442a53 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -30,7 +30,7 @@ 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 postionen och returneras i \texttt{car.position}. 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} -- cgit v1.2.1 From 6468d5d2ca0bd917af66c9403ffecfad1f62cd2c Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 2 Dec 2019 19:01:40 +0100 Subject: =?UTF-8?q?Lade=20till=20Davids=20=C3=A4ndringar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 7442a53..34321c5 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -37,6 +37,12 @@ med förra kända positionen och returneras i \texttt{car.position}. Denna 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}. + +Till systemet har det tagits fram en spänningkarta som är indelat i delsegment. +Dessa delsegment är helt enkelt varje del av banan som använts för att sätta +ihop bilbanan. Delarna är uppmätta och placerade i en lista där det sedan +gjorts tester där delsegmenten blivit tilldelade en spänning utifrån banans +och bilarnas egenskaper. I \texttt{get\_new\_v} används bilens nuvarande postition (\texttt{car.postition}) och hastighetskartan (\texttt{car.map}). I \texttt{car.map} finns en @@ -52,6 +58,13 @@ i \texttt{car.u}. Om bootstrap är avslutad, körs den del av koden vars ända uppgift är att anpassa \texttt{car.constant}. +Forecasts 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. Adderas tiden fram tills senaste segment med +den uträknade approximerade tiden kvar så fås det en uppskattad varvtid som +används för att avgöra om en bil behöver åka snabbare eller långsammare. + 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 -- cgit v1.2.1 From f609d9e61b841842064dd826e0728c9e44539800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Mon, 2 Dec 2019 21:01:46 +0100 Subject: =?UTF-8?q?F=C3=B6rs=C3=B6kte=20sy=20ihop=20forecasts=20med=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../text/system/03-korning.tex | 25 +++++++--------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 34321c5..7fd9a08 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -37,16 +37,10 @@ med förra kända positionen och returneras i \texttt{car.position}. Denna 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}. - -Till systemet har det tagits fram en spänningkarta som är indelat i delsegment. -Dessa delsegment är helt enkelt varje del av banan som använts för att sätta -ihop bilbanan. Delarna är uppmätta och placerade i en lista där det sedan -gjorts tester där delsegmenten blivit tilldelade en spänning utifrån banans -och bilarnas egenskaper. 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}, denna retuneras av funktionen +hastighetsparameter för varje \texttt{car.position}(Se \ref{sec:system}.), denna retuneras av funktionen och sparas i \texttt{car.v}. I \texttt{get\_new\_u} används denna hastighetsparameter tillsammans med @@ -58,19 +52,16 @@ i \texttt{car.u}. Om bootstrap är avslutad, körs den del av koden vars ända uppgift är att anpassa \texttt{car.constant}. -Forecasts 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. Adderas tiden fram tills senaste segment med -den uträknade approximerade tiden kvar så fås det en uppskattad varvtid som -används för att avgöra om en bil behöver åka snabbare eller långsammare. - 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 +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 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. Dessutom används den +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}) -- cgit v1.2.1 From 2113f4d6db26984b68b7f361626bfe16576b842a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Mon, 2 Dec 2019 21:24:26 +0100 Subject: =?UTF-8?q?Justering=20i=20sec=202.=20H=C3=A4nvisning=20av=20car.m?= =?UTF-8?q?ap=20till=20sec=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex') diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex index 7fd9a08..24d58ee 100644 --- a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex +++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex @@ -40,7 +40,7 @@ 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:system}.), denna retuneras av funktionen +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 -- cgit v1.2.1