diff options
| author | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-01 15:49:28 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-01 16:28:21 +0100 |
| commit | c0616c2e752b2c786b89a3aa84d185b970ae042e (patch) | |
| tree | 481a0d7d6156afa6f9ba5395776da581b0b67a55 /Dokument | |
| parent | d3e12ebf4b8d65532718ce3092e3cf9d79172548 (diff) | |
| download | tfyy51-c0616c2e752b2c786b89a3aa84d185b970ae042e.tar.gz | |
Gustavs ändringar
Diffstat (limited to 'Dokument')
5 files changed, 57 insertions, 64 deletions
diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex index 96b8be4..9d724d7 100644 --- a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex @@ -7,5 +7,19 @@ \subsection{Avslut} -När körningen avslutas så får banan ingen mer spänning och bilarna stannar. -Ifall en bil har kört fler än 2 varv så sparas statistik från körningen. +För att avbryta programmet manuellt kan användaren när som helst trycka på q +eller s på datorns tangentbord. Trycker användaren på q avslutas programmet +direkt. Trycker användaren på s stoppas varje bil var för sig när de är 80~cm +från målgivaren och programmet avslutas när båda bilarna stannat. + +Om det har gått mer än nio sekunder sedan en givare passerades pausas programmet +och användaren informeras på styrdatorn att en bil misstänkts ha fastnat eller +åkt av banan. + +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 statistik om varvtid och genomsnittlig segmenttid på +displayen. Se figurer xx-xx. + diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex index e2395e8..9deab9a 100644 --- a/Dokument/Teknisk Dokumentation/text/04-events.tex +++ b/Dokument/Teknisk Dokumentation/text/04-events.tex @@ -1,42 +1,25 @@ -\section{Händelser} +\section{Missade givare} -\subsection{Avslutning av körning} - -För att avbryta programmet manuellt kan användaren när som helst trycka på s -eller q på datorns tangentbord. Trycker användaren på q avslutas programmet -direkt. Trycker användaren på s stoppas varje bil var för sig när de är 80~cm -från målgivaren och programmet avslutas när båda bilarna står stilla. - -Om det har gått mer än nio sekunder sedan en givare passerades pausas programmet -och användaren informeras på styrdatorn att en bil misstänkts ha fastnat eller -åkt av banan. - -Vid programslut visas statistik om varvtid och genomsnittlig segmenttid på -displayen. Se figurer xx-xx. - -\subsection{Missade givare} - -Programmet gör redan en uppskattning av bilens position (\emph{get\_position}) +Programmet gör redan en uppskattning av bilens position (\texttt{get\_position()}) och justerar denna vid ny givare (lägg till referens här). -Eftersom \emph{get\_new\_v} utgår ifrån denna uppskattning, kommer ingen +Eftersom \texttt{get\_new\_v()} utgår ifrån denna uppskattning, kommer ingen anpassning behöva göras ifall en givare inte ger utslag. Däremot måste det -kompenseras nästa gång en givare detekteras. Detta görs med funktionen -\emph{choose\_position}. Den funktionen jämför positionen beräknad av -\emph{get\_position} och positionen vald av nuvarande givare. - -Vid varje givare kollar \emph{choose\_position} vilken givare som -\emph{get\_position} ligger närmast. Funktionen beräknar skillnaden mellan denna -och den givare som valdes med givardetektionen. Denna kallas \emph{seg\_plus}. -I normala fall är \emph{seg\_plus} = 0 (ingen -missad givare) eller 1 (en missad givare), men den kan också bli högre. Eftersom -programmet inte ska behöva hantera för många givarsignaler ska \emph{seg\_plus} -aldrig kunna bli lägre än 0. Om så ändå är fallet ändras denna till 0. \emph{seg\_plus} -retuneras av funktionen och används sedan för att höja \emph{car.segment} så att -programmet har koll på var bilen är. - -Dessutom behöver den insamlade datan justeras när en eller flera givare har -missats. Annars kommer \emph{car.seg\_times} spara tiden för flera segment som -om det vore ett enda. Lösningen är att skriva över denna tid med 0. Alla -funktioner som använder denna data behöver kolla ifall den är noll eller inte, -om den är noll används den ifrån varvet innan i stället. Om den också är noll -används den från två varv tidigare osv. +kompenseras nästa gång en givare detekteras. Detta görs med funktionen +\texttt{choose\_position()}. Den funktionen jämför positionen beräknad av +\texttt{get\_position()} och positionen vald av nuvarande givare. + +Vid varje givare kontrollerar \texttt{choose\_position()} vilken givare +\texttt{car.position} ligger närmast genom att jämföra den nuvarande +(uppskattade) positionen med de kända positionerna varje givare befinner sig på. +Funktionen beräknar skillnaden i antalet givare mellan denna och den givare som +valdes med givardetektionen. I normala fall är skillnaden 0 eller 1 (om en +givare missats), men systemet kan hantera att flera givare i rad missas. +(Systemet kan inte hantera en givare som skickar dubbla signaler.) Om +\texttt{choose\_position()} bedömer att en givare missats flyttas +\texttt{car.segment} till den givare som matchar. + +Den insamlade datan behöver justeras när en eller flera givare har missats. Om +datan inte justeras kommer \texttt{car.seg\_times} spara tiden för flera segment +som om det vore ett enda. För att undvika detta sätts både den nuvarande och den +förra segmentstiden till 0. Om en annan del av systemet vill räkna på +segmentstiderna ansvarar den själv för att hoppa över segmentstider som är noll. diff --git a/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex index d131edf..19e3003 100644 --- a/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex +++ b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex @@ -1,10 +1,11 @@ \subsection{Innan start} -Vid uppstart ritas knappar ut på displayenm se figur x. Med dessa knappar går +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. Varje 0,x sekunder skickas ett kommando till -displayen som skickar information om alla knapptryck som skett sedan minnet -efterfrågades senast. Händelserna bearbetas i den kronologiska ordning de -trycktes i och ändrar på variabler enligt de knapptryck som skett. +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. diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex index 821c316..d4221c6 100644 --- a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex +++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex @@ -1,17 +1,12 @@ \subsection{Uppstart} -Vid automatisk körning körs funktionen \emph{do\_boot} vars syfte är att få fram -en initierande konstant (\emph{car\_constant}) och spänningspådrag för den bil -som står på banan. Då bilen är positionerad framför målbågen höjer funktionen -konstanten kontinuerligt i ett tidsintervall på 0.7 sekunder. När väl konstanten -är tillräckligt stor för att bilen ska kunna rulla och passera målbågen så -dämpas höjningen av konstanten och förändringen sker med en lägre frekvens. Vid -passering av den andra givaren så slutar funktionen tillfälligt att förändra -konstanten och låter bilen, med den tilldelade konstanten, åka igenom det tredje -segmentet för att få en uträknad tid. Med tiden det tagit för bilen att ta sig -igenom segmentet räknar funktionen ut vilken förväntad varvtid bilen skulle få -med just den konstanten den hade i segmentet. (beskriva forecastsuträkningen?) -Det sista funktionen gör är att återigen justera konstanten. Om den förväntade -varvtiden är större än 15 sekunder, som är referensvarvtiden för första varvet, -så ökar konstanten och är den förväntade varvtiden mindre än 15 sekunder så -sänks konstanten. +Vid autonom körning 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}. diff --git a/Dokument/Teknisk Dokumentation/text/system/05-display.tex b/Dokument/Teknisk Dokumentation/text/system/05-display.tex index f1baef2..9813e60 100644 --- a/Dokument/Teknisk Dokumentation/text/system/05-display.tex +++ b/Dokument/Teknisk Dokumentation/text/system/05-display.tex @@ -1,6 +1,6 @@ \subsubsection{Display} -I varje programcykel skickas nuvarande värdet på u till två stapeldiagram på -displayen för vardera bil. Se appendix N för mer information om displayens -stapeldiagram. Om ett nytt varv har inletts skrivs dessutom varvnumret och +I varje programcykel skickas värdet på \texttt{car.u} till två stapeldiagram på +displayen för vardera bil. Se REF för information om displayens +stapeldiagram. Om ett nytt varv inleds skrivs dessutom förra varvnumret och varvtiden ut på displayen. |
