From bcdea62c386c3afad09659e5d5bcedd7b78fc22e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 13:33:44 +0100 Subject: Dela upp root.tex i olika filer och input{} --- .../Teknisk Dokumentation/text/01-inledning.tex | 25 ++--- Dokument/Teknisk Dokumentation/text/02-metod.tex | 3 - Dokument/Teknisk Dokumentation/text/02-system.tex | 1 + Dokument/Teknisk Dokumentation/text/03-system.tex | 12 --- .../text/03-systembeskrivning.tex | 105 +++++++++++++++++++++ Dokument/Teknisk Dokumentation/text/04-events.tex | 42 +++++++++ .../Teknisk Dokumentation/text/04-resultat.tex | 3 - .../Teknisk Dokumentation/text/05-diskussion.tex | 4 - Dokument/Teknisk Dokumentation/text/05-end.tex | 17 ++++ 9 files changed, 178 insertions(+), 34 deletions(-) delete mode 100644 Dokument/Teknisk Dokumentation/text/02-metod.tex create mode 100644 Dokument/Teknisk Dokumentation/text/02-system.tex delete mode 100644 Dokument/Teknisk Dokumentation/text/03-system.tex create mode 100644 Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex create mode 100644 Dokument/Teknisk Dokumentation/text/04-events.tex delete mode 100644 Dokument/Teknisk Dokumentation/text/04-resultat.tex delete mode 100644 Dokument/Teknisk Dokumentation/text/05-diskussion.tex create mode 100644 Dokument/Teknisk Dokumentation/text/05-end.tex (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex index b6a469a..e3cec75 100644 --- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex +++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex @@ -1,16 +1,17 @@ \section{Inledning} -\subsection{Bakgrund} -Detta projektet har utförts med hjälp av en bilbana samt flera bilar, givare, spänningsaggregat och en dator inkopplad till givarna på banan. 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 utvecklas i Matlab, vilket ligger till grund för styrning av bilarna. +\subsection{Bakgrund} Detta projektet har utförts med hjälp av en bilbana samt +flera bilar, givare, spänningsaggregat och en dator inkopplad till givarna på +banan. 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 utvecklas +i Matlab, vilket ligger till grund för styrning av bilarna. \subsection{Syfte och mål} -Syftet med projektet var att konstruera ett system som kör bilar runt en bilbana -%(Se figur~\ref{fig:track_modell}). -Till bilbanan finns det 9 ``givare'' som när -de passeras skickar en signal till en dator. Genom att mäta tidsskillnaden -mellan signalerna kan man räkna ut hur lång tid det tog för en bil att åka -mellan två givare. Bilbanan är även kopplad till en dator där det finns -möjlighet att justera bilarnas gaspådrag med en spänningstillförsel. Med hjälp -av denna information ska ett system skapas som kör en eller två bilar runt -bilbanan på en inställbar varvtid mellan 12 och 15 sekunder, samt gör att -bilarna åker i mål så nära varandra i tiden som möjligt. + +Syftet med projektet var att konstruera ett system som skulle få bilar att +automatiskt köra runt en bilbana. +%(Se figur~\ref{fig:track_modell}). +Med hjälp av informationen som har kunnat läsas av från givarna så skulle det +skapas ett system som skulle få bilar med olika egenskaper att köra runt på de +två olika banorna på en vald referenstid. Huvudmålet är indelat i flera olika +krav. Se avsnitt 3.2 i kravspecifikationen. diff --git a/Dokument/Teknisk Dokumentation/text/02-metod.tex b/Dokument/Teknisk Dokumentation/text/02-metod.tex deleted file mode 100644 index 8efb181..0000000 --- a/Dokument/Teknisk Dokumentation/text/02-metod.tex +++ /dev/null @@ -1,3 +0,0 @@ -\section{Metod} -Tillvägagångssätt för utvecklign av systemet. Skriv massa positiva saker om git. - diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex new file mode 100644 index 0000000..379a847 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/02-system.tex @@ -0,0 +1 @@ +\section{Begrepp och systemöversikt} diff --git a/Dokument/Teknisk Dokumentation/text/03-system.tex b/Dokument/Teknisk Dokumentation/text/03-system.tex deleted file mode 100644 index b39a995..0000000 --- a/Dokument/Teknisk Dokumentation/text/03-system.tex +++ /dev/null @@ -1,12 +0,0 @@ -\section{System} - Nån text - \subsection{Delsystem} - \subsubsection{Bana} - \subsubsection{Display} - \subsection{Funktioner och scripts} - \subsubsection{main} - \subsubsection{get\_postition} - % osv. - -% \input{system/a} -% \input{system/b} diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex new file mode 100644 index 0000000..cefb5e9 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex @@ -0,0 +1,105 @@ +\section{Systembeskrivning} + +\subsection{Innan start} + +Vid uppstart ritas knappar ut på displayenm 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. + +\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. + +\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}. + +\subsection{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}. + +\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 +varvtiden ut på displayen. + +\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. diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex new file mode 100644 index 0000000..e2395e8 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/04-events.tex @@ -0,0 +1,42 @@ +\section{Händelser} + +\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}) + 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 +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. diff --git a/Dokument/Teknisk Dokumentation/text/04-resultat.tex b/Dokument/Teknisk Dokumentation/text/04-resultat.tex deleted file mode 100644 index ea11986..0000000 --- a/Dokument/Teknisk Dokumentation/text/04-resultat.tex +++ /dev/null @@ -1,3 +0,0 @@ -\section{Resultat} -Det gick åt skogen -Kanske visa lite grafer. diff --git a/Dokument/Teknisk Dokumentation/text/05-diskussion.tex b/Dokument/Teknisk Dokumentation/text/05-diskussion.tex deleted file mode 100644 index f26ef6e..0000000 --- a/Dokument/Teknisk Dokumentation/text/05-diskussion.tex +++ /dev/null @@ -1,4 +0,0 @@ -\section{Diskussion} -Undrar varför -\subsection{Problem med hårdvaran} -Här skyller vi ifrån oss. diff --git a/Dokument/Teknisk Dokumentation/text/05-end.tex b/Dokument/Teknisk Dokumentation/text/05-end.tex new file mode 100644 index 0000000..59708fd --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/05-end.tex @@ -0,0 +1,17 @@ +\section{Programslut} + +display\_post\_race\_graphs(seg\_times1, seg\_times2, lap\_times1, lap\_times2, +ref\_time) hanterar knapptryck för att byta mellan de två vyerna. Varje 0,4 +sekunder skickas ett kommando till displayen som kopierar det interna minnet +till minnet som delas med styrdatorn. Minnet som delas med styrdatorn läses av +och eventuella knapptryck hanteras genom anrop till antingen +draw\_lap\_graph(...) eller draw\_segment\_graph(...). + +draw\_lap\_graph(lap\_times1, lap\_times2, ref\_time) ritar varvtider för +ena bilen i taget och skriver ut medelvärde och standardavvikelse, se figur xx. + +Hur mycket ska jag skriva om implementationen här? + +draw\_segment\_graph(seg\_times1, seg\_times2) + +Samma fråga här som raden ovanför. -- cgit v1.2.1 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/03-systembeskrivning.tex | 103 +-------------------- .../text/system/01-innan-start.tex | 10 ++ .../text/system/02-uppstart.tex | 17 ++++ .../text/system/03-korning.tex | 34 +++++++ .../Teknisk Dokumentation/text/system/04-gas.tex | 29 ++++++ .../text/system/05-display.tex | 6 ++ 6 files changed, 101 insertions(+), 98 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex create mode 100644 Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex create mode 100644 Dokument/Teknisk Dokumentation/text/system/03-korning.tex create mode 100644 Dokument/Teknisk Dokumentation/text/system/04-gas.tex create mode 100644 Dokument/Teknisk Dokumentation/text/system/05-display.tex (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex index cefb5e9..c0a4007 100644 --- a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex @@ -1,103 +1,10 @@ \section{Systembeskrivning} -\subsection{Innan start} - -Vid uppstart ritas knappar ut på displayenm 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. - -\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. - -\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}. - -\subsection{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}. - -\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 -varvtiden ut på displayen. +\input{text/system/01-innan-start} +\input{text/system/02-uppstart} +\input{text/system/03-korning} +\input{text/system/04-gas} +\input{text/system/05-display} \subsection{Avslut} diff --git a/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex new file mode 100644 index 0000000..d131edf --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex @@ -0,0 +1,10 @@ +\subsection{Innan start} + +Vid uppstart ritas knappar ut på displayenm 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. diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex new file mode 100644 index 0000000..821c316 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex @@ -0,0 +1,17 @@ +\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. 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}. diff --git a/Dokument/Teknisk Dokumentation/text/system/04-gas.tex b/Dokument/Teknisk Dokumentation/text/system/04-gas.tex new file mode 100644 index 0000000..d303456 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/system/04-gas.tex @@ -0,0 +1,29 @@ +\subsection{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}. diff --git a/Dokument/Teknisk Dokumentation/text/system/05-display.tex b/Dokument/Teknisk Dokumentation/text/system/05-display.tex new file mode 100644 index 0000000..f1baef2 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/system/05-display.tex @@ -0,0 +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 +varvtiden ut på displayen. -- cgit v1.2.1 From a59338a23eef7d4590ca00c4a8c293a08f22f7ba Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 15:42:19 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20syfte=20och=20m=C3=A5l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/01-inledning.tex | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex index e3cec75..d851465 100644 --- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex +++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex @@ -8,10 +8,6 @@ i Matlab, vilket ligger till grund för styrning av bilarna. \subsection{Syfte och mål} -Syftet med projektet var att konstruera ett system som skulle få bilar att -automatiskt köra runt en bilbana. -%(Se figur~\ref{fig:track_modell}). -Med hjälp av informationen som har kunnat läsas av från givarna så skulle det -skapas ett system som skulle få bilar med olika egenskaper att köra runt på de -två olika banorna på en vald referenstid. Huvudmålet är indelat i flera olika -krav. Se avsnitt 3.2 i kravspecifikationen. +Syftet med projektet är att lära sig att jobba i ett projektarbete utifrån projektmodellen Lips. Målet med projektet är att konstruera ett system som klarar av alla krav som finns i kravspecifikationen. Se kravspecifikationen samt kursmål. + +REF... \ No newline at end of file -- 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/03-systembeskrivning.tex | 1 - .../text/system/03-korning.tex | 43 +++++++++++++++++++--- .../Teknisk Dokumentation/text/system/04-gas.tex | 28 -------------- 3 files changed, 37 insertions(+), 35 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex index c0a4007..96b8be4 100644 --- a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex @@ -3,7 +3,6 @@ \input{text/system/01-innan-start} \input{text/system/02-uppstart} \input{text/system/03-korning} -\input{text/system/04-gas} \input{text/system/05-display} \subsection{Avslut} 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}. diff --git a/Dokument/Teknisk Dokumentation/text/system/04-gas.tex b/Dokument/Teknisk Dokumentation/text/system/04-gas.tex index d303456..8b13789 100644 --- a/Dokument/Teknisk Dokumentation/text/system/04-gas.tex +++ b/Dokument/Teknisk Dokumentation/text/system/04-gas.tex @@ -1,29 +1 @@ -\subsection{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') 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 c0616c2e752b2c786b89a3aa84d185b970ae042e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 15:49:28 +0100 Subject: =?UTF-8?q?Gustavs=20=C3=A4ndringar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../text/03-systembeskrivning.tex | 18 ++++++- Dokument/Teknisk Dokumentation/text/04-events.tex | 61 ++++++++-------------- .../text/system/01-innan-start.tex | 11 ++-- .../text/system/02-uppstart.tex | 25 ++++----- .../text/system/05-display.tex | 6 +-- 5 files changed, 57 insertions(+), 64 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') 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. -- cgit v1.2.1 From 30ee810bf9abac962ea29eb6537b4fc0d0f235db Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 17:11:42 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20bakgrunden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/01-inledning.tex | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex index d851465..1a451aa 100644 --- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex +++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex @@ -1,10 +1,9 @@ \section{Inledning} -\subsection{Bakgrund} Detta projektet har utförts med hjälp av en bilbana samt -flera bilar, givare, spänningsaggregat och en dator inkopplad till givarna på -banan. 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 utvecklas -i Matlab, vilket ligger till grund för styrning av bilarna. +\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 utvecklades +i Matlab. \subsection{Syfte och mål} -- cgit v1.2.1 From 5d6a40d50e078d928a8568bb78e01bcbcc95bbd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 17:11:48 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20systembeskrivning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/02-system.tex | 53 +++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex index 379a847..d2b7266 100644 --- a/Dokument/Teknisk Dokumentation/text/02-system.tex +++ b/Dokument/Teknisk Dokumentation/text/02-system.tex @@ -1 +1,54 @@ \section{Begrepp och systemöversikt} + +Runt om bilbanan finns 9 sensorer (kallade ''givare´´) som skickar en signal när +en bil åker under dem. En av dessa givare agerar målgång (kallad ''målgivare´´) +och skickar en egen signal systemet kan läsa av. Givarna delar naturligt in +banan i nio delar, kallade ''segment´´. Dessa segment har i sin tur delats in i +mindre delsegment, kallade ''subsegment´´. Banan består av totalt 80 subsegment. +För vardera bana och subsegment 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 +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 bara ä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 det är de hanterar. 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 autonomnt. +\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" (se REF) är aktiv för bana N. + \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} -- cgit v1.2.1 From 57126a5ab66c180c6340f0331b5663e51b2aab13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 17:11:56 +0100 Subject: Fixa citattecken --- Dokument/Teknisk Dokumentation/text/02-system.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex index d2b7266..516aadf 100644 --- a/Dokument/Teknisk Dokumentation/text/02-system.tex +++ b/Dokument/Teknisk Dokumentation/text/02-system.tex @@ -1,10 +1,10 @@ \section{Begrepp och systemöversikt} -Runt om bilbanan finns 9 sensorer (kallade ''givare´´) som skickar en signal när -en bil åker under dem. En av dessa givare agerar målgång (kallad ''målgivare´´) +Runt om bilbanan finns 9 sensorer (kallade ''givare'') som skickar en signal när +en bil åker under dem. En av dessa givare agerar målgång (kallad ''målgivare'') och skickar en egen signal systemet kan läsa av. Givarna delar naturligt in -banan i nio delar, kallade ''segment´´. Dessa segment har i sin tur delats in i -mindre delsegment, kallade ''subsegment´´. Banan består av totalt 80 subsegment. +banan i nio delar, kallade ''segment''. Dessa segment har i sin tur delats in i +mindre delsegment, kallade ''subsegment''. Banan består av totalt 80 subsegment. För vardera bana och subsegment 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 @@ -46,7 +46,7 @@ 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" (se REF) är aktiv för bana N. + \item \texttt{bootN.status} - Om den så kallade ''bootstrapen'' (se REF) är aktiv för bana N. \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. -- 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') 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') 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/01-inledning.tex | 4 +--- Dokument/Teknisk Dokumentation/text/04-events.tex | 3 ++- Dokument/Teknisk Dokumentation/text/05-end.tex | 2 +- Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex | 2 +- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 6 +++--- Dokument/Teknisk Dokumentation/text/system/05-display.tex | 2 +- 6 files changed, 9 insertions(+), 10 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex index 1a451aa..b177771 100644 --- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex +++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex @@ -7,6 +7,4 @@ i Matlab. \subsection{Syfte och mål} -Syftet med projektet är att lära sig att jobba i ett projektarbete utifrån projektmodellen Lips. Målet med projektet är att konstruera ett system som klarar av alla krav som finns i kravspecifikationen. Se kravspecifikationen samt kursmål. - -REF... \ No newline at end of file +Syftet med projektet är att lära sig att jobba i ett projektarbete utifrån projektmodellen Lips. Målet med projektet är att konstruera ett system som klarar av alla krav som finns i kravspecifikationen. Se kravspecifikationen \ref{app:kravbeskrivning} samt kursmål. \ No newline at end of file diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex index 9deab9a..6f72713 100644 --- a/Dokument/Teknisk Dokumentation/text/04-events.tex +++ b/Dokument/Teknisk Dokumentation/text/04-events.tex @@ -1,7 +1,8 @@ \section{Missade givare} +\label{sec:missade givare} Programmet gör redan en uppskattning av bilens position (\texttt{get\_position()}) - och justerar denna vid ny givare (lägg till referens här). + och justerar denna vid ny givare, se \ref{sec:system:korning:position}. 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 diff --git a/Dokument/Teknisk Dokumentation/text/05-end.tex b/Dokument/Teknisk Dokumentation/text/05-end.tex index 59708fd..25d1503 100644 --- a/Dokument/Teknisk Dokumentation/text/05-end.tex +++ b/Dokument/Teknisk Dokumentation/text/05-end.tex @@ -1,5 +1,5 @@ \section{Programslut} - +\label{sec:programslut} display\_post\_race\_graphs(seg\_times1, seg\_times2, lap\_times1, lap\_times2, ref\_time) hanterar knapptryck för att byta mellan de två vyerna. Varje 0,4 sekunder skickas ett kommando till displayen som kopierar det interna minnet diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex index d4221c6..18e8ad1 100644 --- a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex +++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex @@ -1,5 +1,5 @@ \subsection{Uppstart} - +\label{sec:systembeskrivning:uppstart} 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 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 diff --git a/Dokument/Teknisk Dokumentation/text/system/05-display.tex b/Dokument/Teknisk Dokumentation/text/system/05-display.tex index 9813e60..6c41495 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 värdet på \texttt{car.u} till två stapeldiagram på -displayen för vardera bil. Se REF för information om displayens +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. -- 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/02-system.tex | 6 ++++-- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex index 516aadf..6f596f4 100644 --- a/Dokument/Teknisk Dokumentation/text/02-system.tex +++ b/Dokument/Teknisk Dokumentation/text/02-system.tex @@ -11,7 +11,7 @@ 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 bara är i systemet sparad i +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 det är de hanterar. Dessa variabler hänvisas till som @@ -46,7 +46,9 @@ 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'' (se REF) är aktiv för bana N. + \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. 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 c2c096bae6272af37277e284206b92d2e2097b70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 19:27:57 +0100 Subject: Flytta display till egen underrubrik --- Dokument/Teknisk Dokumentation/text/system/05-display.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/system/05-display.tex b/Dokument/Teknisk Dokumentation/text/system/05-display.tex index 6c41495..5b36342 100644 --- a/Dokument/Teknisk Dokumentation/text/system/05-display.tex +++ b/Dokument/Teknisk Dokumentation/text/system/05-display.tex @@ -1,4 +1,4 @@ -\subsubsection{Display} +\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 -- cgit v1.2.1 From a841b5051524359535319d3673c7a2c40c711815 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 13:08:56 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20fel=20i=20syfte=20och=20m=C3=A5l=20samt?= =?UTF-8?q?=20i=20bakgrund?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/01-inledning.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex index b177771..22d7e82 100644 --- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex +++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex @@ -2,9 +2,9 @@ \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 utvecklades +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 jobba i ett projektarbete utifrån projektmodellen Lips. Målet med projektet är att konstruera ett system som klarar av alla krav som finns i kravspecifikationen. Se kravspecifikationen \ref{app:kravbeskrivning} samt kursmål. \ No newline at end of file +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 klarar av alla krav som finns i kravspecifikationen. Se kravspecifikationen \ref{app:kravbeskrivning} samt kursmål. \ No newline at end of file -- cgit v1.2.1 From 4e0b5ba003637282429715cce752b6bd79a451a3 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 13:11:45 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20system=20=C3=B6versikt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/02-system.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex index 6f596f4..af2711d 100644 --- a/Dokument/Teknisk Dokumentation/text/02-system.tex +++ b/Dokument/Teknisk Dokumentation/text/02-system.tex @@ -14,7 +14,7 @@ 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 det är de hanterar. Dessa variabler hänvisas till som +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. @@ -24,7 +24,7 @@ varje variabel som är specifierad nedan, en för bana 1 och en för bana 2. \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 autonomnt. +\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. -- cgit v1.2.1 From e06c2312dbd882d1c9385190559ac64e3dcfe9d8 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 14:09:21 +0100 Subject: =?UTF-8?q?=C3=84ndrade=2080cm,=20med=20att=20det=20var=20f=C3=B6r?= =?UTF-8?q?=20exakt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex index 9d724d7..559be9c 100644 --- a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex @@ -9,8 +9,7 @@ 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. +direkt. Trycker användaren på s stoppas varje bil var för sig och fordonet stoppas när programmet uppskattar att bilen befinner sig 80~cm innan målgivaren. Därefter avslutas programmet 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 -- 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') 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 646d1bb2c68b628a149c78fbd94a734943d3c252 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 14:20:24 +0100 Subject: =?UTF-8?q?=C3=A4ndrade=20stavfel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/04-events.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex index 6f72713..5bb0052 100644 --- a/Dokument/Teknisk Dokumentation/text/04-events.tex +++ b/Dokument/Teknisk Dokumentation/text/04-events.tex @@ -3,8 +3,8 @@ Programmet gör redan en uppskattning av bilens position (\texttt{get\_position()}) och justerar denna vid ny givare, se \ref{sec:system:korning:position}. -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 +Eftersom \texttt{get\_new\_v()} utgår ifrån denna uppskattning, behövs ingen +anpassning 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 \texttt{choose\_position()}. Den funktionen jämför positionen beräknad av \texttt{get\_position()} och positionen vald av nuvarande givare. -- 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') 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 fc761b7de094a1a05038aff7e8292df06b96a753 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 2 Dec 2019 14:47:49 +0100 Subject: Missade givare --- Dokument/Teknisk Dokumentation/text/04-events.tex | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex index 5bb0052..653f774 100644 --- a/Dokument/Teknisk Dokumentation/text/04-events.tex +++ b/Dokument/Teknisk Dokumentation/text/04-events.tex @@ -6,16 +6,14 @@ Programmet gör redan en uppskattning av bilens position (\texttt{get\_position( Eftersom \texttt{get\_new\_v()} utgår ifrån denna uppskattning, behövs ingen anpassning 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 -\texttt{choose\_position()}. Den funktionen jämför positionen beräknad av -\texttt{get\_position()} och positionen vald av nuvarande givare. +\texttt{choose\_position()}. 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å. +\texttt{car.position} ligger närmast genom att jämföra den \emph{beräknade} 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 +valdes med givardetektionen. I normala fall är skillnaden 0 (ingen missad givare) 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 +(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. -- cgit v1.2.1 From 2d22d6e710523027e3abc61944a4473d4d24b0a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 14:53:28 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20resultat-del=20med=20figurer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/06-resultat.tex | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Dokument/Teknisk Dokumentation/text/06-resultat.tex (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/06-resultat.tex b/Dokument/Teknisk Dokumentation/text/06-resultat.tex new file mode 100644 index 0000000..be9ba5c --- /dev/null +++ b/Dokument/Teknisk Dokumentation/text/06-resultat.tex @@ -0,0 +1,21 @@ +\section{Resultat} + +\begin{figure} + \centering + \includegraphics[width=0.5\linewidth]{Figures/segment_times} + \caption{Genomsnittlig segmentstid för de två körningarna från redovisningen.} + \label{fig:seg_times} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=0.45\linewidth]{Figures/lap_times_with_calibration} + \caption{Varvtider för de två körningarna från redovisningen, inklusive + kalibreringsvarven.} + + \vspace*{\floatsep}% https://tex.stackexchange.com/q/26521/5764 + + \includegraphics[width=0.45\linewidth]{Figures/lap_times_without_calibration} + \caption{Varvtider för de två körningarna från redovisningen, exklusive + kalibreringsvarven.} +\end{figure} -- 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') 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 8f86a548c3d6fdc47519b2d931a18adc42d320a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 17:32:25 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20riktiga=20figurer=20och=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Teknisk Dokumentation/text/06-resultat.tex | 29 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/06-resultat.tex b/Dokument/Teknisk Dokumentation/text/06-resultat.tex index be9ba5c..44ac4b2 100644 --- a/Dokument/Teknisk Dokumentation/text/06-resultat.tex +++ b/Dokument/Teknisk Dokumentation/text/06-resultat.tex @@ -8,14 +8,37 @@ \end{figure} \begin{figure} - \centering - \includegraphics[width=0.45\linewidth]{Figures/lap_times_with_calibration} + \centering + \begin{tikzpicture} + \begin{axis} [xmin=0, xmax=15.5,ymin=10,ymax=20, xlabel=Varv, ylabel={Tid (s)}, + legend pos=outer north east] + \addplot+ [blue, mark options={blue}, mark=square*] table [col sep=comma, x index=0, y index = 1] {stats/lap.csv}; + \addlegendentry{Körning 1} + \addplot+ [red, mark options={red}, mark=*] table [col sep=comma, x index=0, y index = 2] {stats/lap.csv}; + \addlegendentry{Körning 2} + \end{axis} + \end{tikzpicture} \caption{Varvtider för de två körningarna från redovisningen, inklusive kalibreringsvarven.} \vspace*{\floatsep}% https://tex.stackexchange.com/q/26521/5764 - \includegraphics[width=0.45\linewidth]{Figures/lap_times_without_calibration} + \begin{tikzpicture} + \begin{axis} [xmin=5.5, xmax=15.5,ymin=12,ymax=16, xlabel=Varv, ylabel={Tid (s)}, + legend pos=outer north east] + \addplot+ [blue, mark options={blue}, mark=square*] table [col sep=comma, x index=0, y index = 1] {stats/lap.csv}; + \addlegendentry{Körning 1} + \addplot[blue, domain=0:20] {13}; + \addlegendentry{Referenstid körning 1} + \addplot+ [red, mark options={red}, mark=*] table [col sep=comma, x index=0, y index = 2] {stats/lap.csv}; + \addlegendentry{Körning 2} + \addplot [red, domain=0:20] {14}; + \addlegendentry{Referenstid körning 2} + \draw[dotted] (axis cs:0,12.5) -- (axis cs:16,12.5); + \draw[dotted] (axis cs:0,13.5) -- (axis cs:16,13.5); + \draw[dotted] (axis cs:0,14.5) -- (axis cs:16,14.5); + \end{axis} + \end{tikzpicture} \caption{Varvtider för de två körningarna från redovisningen, exklusive kalibreringsvarven.} \end{figure} -- cgit v1.2.1 From 30e76420c54823f5b7c8388bdbee59882e44018a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 17:50:49 +0100 Subject: Byt ut segmenttidsdiagram --- Dokument/Teknisk Dokumentation/text/06-resultat.tex | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/06-resultat.tex b/Dokument/Teknisk Dokumentation/text/06-resultat.tex index 44ac4b2..e024dd8 100644 --- a/Dokument/Teknisk Dokumentation/text/06-resultat.tex +++ b/Dokument/Teknisk Dokumentation/text/06-resultat.tex @@ -2,7 +2,20 @@ \begin{figure} \centering - \includegraphics[width=0.5\linewidth]{Figures/segment_times} + \begin{tikzpicture} + \begin{axis}[ + ylabel=Tid (s), + legend pos = outer north east, + ybar interval=0.75 + ] + \addplot+ [] coordinates {(1, 1.25) (2, 0.34) (3, 1.33) (4, 2.06) (5, 0.85) + (6, 1.74) (7, 2.55) (8, 1.97) (9, 1.28) (10, 1)}; + \addlegendentry{Körning 1} + \addplot+ [] coordinates {(1, 1.27) (2, 0.30) (3, 1.44) (4, 2.14) (5, 1.01) + (6, 2.22) (7, 2.83) (8, 2.14) (9, 1.32) (10, 1)}; + \addlegendentry{Körning 2} + \end{axis} + \end{tikzpicture} \caption{Genomsnittlig segmentstid för de två körningarna från redovisningen.} \label{fig:seg_times} \end{figure} @@ -20,6 +33,7 @@ \end{tikzpicture} \caption{Varvtider för de två körningarna från redovisningen, inklusive kalibreringsvarven.} + \label{fig:laptimes-calibration} \vspace*{\floatsep}% https://tex.stackexchange.com/q/26521/5764 @@ -41,4 +55,5 @@ \end{tikzpicture} \caption{Varvtider för de två körningarna från redovisningen, exklusive kalibreringsvarven.} + \label{fig:laptimes-no-calibration} \end{figure} -- cgit v1.2.1 From 89540240a89ee1991d7c6cb19b71f39e0a7fcb72 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 18:26:24 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20system=C3=B6versikt=20s=C3=A5=20att?= =?UTF-8?q?=20de=20tog=20h=C3=A4nsyn=20till=20Victors=20kommentarer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/02-system.tex | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex index af2711d..b47e496 100644 --- a/Dokument/Teknisk Dokumentation/text/02-system.tex +++ b/Dokument/Teknisk Dokumentation/text/02-system.tex @@ -1,10 +1,7 @@ \section{Begrepp och systemöversikt} -Runt om bilbanan finns 9 sensorer (kallade ''givare'') som skickar en signal när -en bil åker under dem. En av dessa givare agerar målgång (kallad ''målgivare'') -och skickar en egen signal systemet kan läsa av. Givarna delar naturligt in -banan i nio delar, kallade ''segment''. Dessa segment har i sin tur delats in i -mindre delsegment, kallade ''subsegment''. Banan består av totalt 80 subsegment. +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. För vardera bana och subsegment 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 -- 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') 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 22d5dc7d6204a38623b6f5c14b0ab21c0703388a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 18:54:06 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20bootstrap-graf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../text/system/02-uppstart.tex | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex index 18e8ad1..4dfe25f 100644 --- a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex +++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex @@ -10,3 +10,39 @@ 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}. + +\begin{figure} + \centering + \begin{tikzpicture} + \draw + (0,0) -- + (1,0) -- + (1,1) -- + (2,1) -- + (2,2) -- + (3,2) -- + (3,3) -- + (4,3) -- + (4,5) -- + (7,5) -- + (7,5.5) -- + (10,5.5); + \draw [dotted] (10, 5.5) -- (14, 5.5); + \draw [->] (0,0) -- (15, 0) node[right]{$t$}; + \draw [->] (0,0) -- (0, 8) node[above]{Spänning}; + \draw [dotted] (4, 0) -- (4, 0.5) node[right]{Målgivarutslag} -- (4,3); + \draw [dotted] (10,0) -- (10, 3) node[right]{Bootstrap slut} -- (10, 5.5); + \draw [decoration={brace, raise=2pt}, decorate] (1,1) -- (2,1); % dt + \node at (1.5, 1.5) {$dt_1$}; + \draw [decoration={brace, raise=2pt}, decorate] (1,0) -- (1,1); + \node at (0.5, 0.5) {$dU_1$}; + \draw [decoration={brace, raise=2pt}, decorate] (4,3) -- (4,5); + \node at (3.5, 4) {$dU_2$}; + \draw [decoration={brace, raise=2pt}, decorate] (4,5) -- (7,5); + \node at (5.5, 5.5) {$dt_2$}; + \draw [decoration={brace, mirror, raise=2pt}, decorate] (7,5) -- (7,5.5); + \node at (7.55,5.25) {$dU_3$}; + \end{tikzpicture} + \caption{Metod för start av bil.} + \label{fig:bootstrap} +\end{figure} -- 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') 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 7145d00df265b5f20b91b69a0bb18052c5af2811 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 19:03:21 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20uppstarten=20och=20lade=20till=20boo?= =?UTF-8?q?tstrap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex index 18e8ad1..5b817b3 100644 --- a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex +++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex @@ -1,6 +1,6 @@ \subsection{Uppstart} \label{sec:systembeskrivning:uppstart} -Vid autonom körning körs funktionen \texttt{do\_boot()} som arbetar fram en +Vid autonom körning utgår systemet ifrån en bootstrap som är till 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 -- cgit v1.2.1 From a3406e896907214428e436c3000917b1653eafbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 19:02:07 +0100 Subject: Missade givare section -> subsection --- Dokument/Teknisk Dokumentation/text/04-events.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex index 653f774..e302ae3 100644 --- a/Dokument/Teknisk Dokumentation/text/04-events.tex +++ b/Dokument/Teknisk Dokumentation/text/04-events.tex @@ -1,4 +1,4 @@ -\section{Missade givare} +\subsection{Missade givare} \label{sec:missade givare} Programmet gör redan en uppskattning av bilens position (\texttt{get\_position()}) -- cgit v1.2.1 From 9b024aee96a76d5ee3e89d4a433bf7b13f0fa227 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 19:07:17 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20uppstarten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex index fae2b11..02b8869 100644 --- a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex +++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex @@ -1,6 +1,6 @@ \subsection{Uppstart} \label{sec:systembeskrivning:uppstart} -Vid autonom körning utgår systemet ifrån en bootstrap som är till för uppstarten av bilarna. Då körs funktionen \texttt{do\_boot()} som arbetar fram en +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 -- cgit v1.2.1 From 173c038da1c9590c9ab6b4f8292760e842e2f118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 19:25:31 +0100 Subject: =?UTF-8?q?Skapa=20grund=20f=C3=B6r=20resultatdel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Teknisk Dokumentation/text/06-resultat.tex | 29 ++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/06-resultat.tex b/Dokument/Teknisk Dokumentation/text/06-resultat.tex index e024dd8..5813682 100644 --- a/Dokument/Teknisk Dokumentation/text/06-resultat.tex +++ b/Dokument/Teknisk Dokumentation/text/06-resultat.tex @@ -1,9 +1,34 @@ \section{Resultat} +Vid redovisningstillfället slutfördes två körningar på 15 varv vardera där de +fem första var kalibreringsvarv (enligt krav 20 och 22). Vid den första +körningen var referenstiden inställd på 13 sekunder och vid den andra var +referenstiden inställd på 14 sekunder. De två körningarna finns uppritade i +figur~\ref{fig:laptimes-calibration} med kalibreringsvarven och i figur~ +\ref{fig:laptimes-no-calibration} utan kalibreringsvarven med vald referenstid +och den maximalt tillåtna avvikelsen på 0,5 sekunder (enligt krav 21) inritat. +Figur~\ref{fig:segtimes} visar den genomsnittliga segmentstiden vid vardera +körning. + +Vid den första körningen höll bilen en genomsnittlig varvtid på 13,22~sekunder +med en standardavvikelse på 0,24~sekunder. $\pm$0,5~sekunder överträddes vid två +av varven med varvtider på 13,54 och 13,52~sekunder. + +Vid den andra körningen höll bilen en genomsnittlig varvtid på 14,47~sekunder +med en standardavvikelse på 0,26~sekunder. $\pm$0,5~sekunder överträddes vid +fyra av varven med en maximal överträdelse på 0,31~sekunder långsammare än +maximal tillåten varvtid (14,5~sekunder). + +Ingen av dessa körningar uppfyllde kraven på prestanda, alltså krav 20, 21 och +23. + +Givarna lästes av mer än 10 gånger per sekund. Se REF för information om hur +detta mäts. + \begin{figure} \centering \begin{tikzpicture} - \begin{axis}[ + \begin{axis} [ ylabel=Tid (s), legend pos = outer north east, ybar interval=0.75 @@ -17,7 +42,7 @@ \end{axis} \end{tikzpicture} \caption{Genomsnittlig segmentstid för de två körningarna från redovisningen.} - \label{fig:seg_times} + \label{fig:segtimes} \end{figure} \begin{figure} -- cgit v1.2.1 From 3c77a830145250529d0fe9ee774017de141e5fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Mon, 2 Dec 2019 20:03:46 +0100 Subject: =?UTF-8?q?F=C3=B6rs=C3=B6k=20till=20utveckling=20av=20syfte=20och?= =?UTF-8?q?=20m=C3=A5l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/01-inledning.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex index 22d7e82..240de8f 100644 --- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex +++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex @@ -7,4 +7,4 @@ 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 klarar av alla krav som finns i kravspecifikationen. Se kravspecifikationen \ref{app:kravbeskrivning} samt kursmål. \ No newline at end of file +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. \ No newline at end of file -- 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') 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 f22b0b441fa581bdd974d7b3a4dcd0a81d523995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 21:00:19 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20figurer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/text/01-inledning.tex | 16 +++++++++++++++- .../Teknisk Dokumentation/text/03-systembeskrivning.tex | 11 ++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex index 240de8f..0b38944 100644 --- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex +++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex @@ -1,5 +1,12 @@ \section{Inledning} +\begin{figure} + \centering + \includegraphics[width=\linewidth] {Figures/BanaModell} + \caption{En modell av bilbanan.} + \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 @@ -7,4 +14,11 @@ 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. \ No newline at end of file +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. + diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex index 559be9c..5236af7 100644 --- a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex @@ -1,5 +1,12 @@ \section{Systembeskrivning} +\begin{figure} + \centering + \includegraphics [height=0.8\textheight] {Figures/flow} + \caption{Flödesschema över systemet.} + \label{fig:flow} +\end{figure} + \input{text/system/01-innan-start} \input{text/system/02-uppstart} \input{text/system/03-korning} @@ -9,7 +16,9 @@ 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 och fordonet stoppas när programmet uppskattar att bilen befinner sig 80~cm innan målgivaren. Därefter avslutas programmet när båda bilarna stannat. +direkt. Trycker användaren på s stoppas varje bil var för sig och fordonet +stoppas när programmet uppskattar att bilen befinner sig 80~cm innan målgivaren. +Därefter avslutas programmet 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 -- 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/02-system.tex | 3 ++- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/text') diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex index b47e496..71eefd5 100644 --- a/Dokument/Teknisk Dokumentation/text/02-system.tex +++ b/Dokument/Teknisk Dokumentation/text/02-system.tex @@ -1,8 +1,9 @@ \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. -För vardera bana och subsegment har ett värde på önskad spänningstillförsel till +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 eftersom bilarna vid vissa delar av banan inte kan åka lika snabbt som vid andra 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