diff options
| author | Gustav Sörnäs <gusso230@student.liu.se> | 2019-10-15 12:09:50 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gusso230@student.liu.se> | 2019-10-15 12:09:50 +0200 |
| commit | 10665954773002ebaf0ebc1efa9f8dcb06e15562 (patch) | |
| tree | d1731af2ac168978e3143ae6a70c42885f27ae27 /Dokument | |
| parent | 294c6bf20787d2c751f323ef7152a14b5432e20d (diff) | |
| download | tfyy51-10665954773002ebaf0ebc1efa9f8dcb06e15562.tar.gz | |
80-tecken maximal radlängd
Diffstat (limited to 'Dokument')
| -rw-r--r-- | Dokument/Designspec/events.tex | 4 | ||||
| -rw-r--r-- | Dokument/Designspec/events/Kallibrering.tex | 24 | ||||
| -rw-r--r-- | Dokument/Designspec/events/manuell.tex | 5 | ||||
| -rw-r--r-- | Dokument/Designspec/events/missade-givare.tex | 7 | ||||
| -rw-r--r-- | Dokument/Designspec/events/off-circuit.tex | 14 | ||||
| -rw-r--r-- | Dokument/Designspec/events/olika-bilar.tex | 5 | ||||
| -rw-r--r-- | Dokument/Designspec/events/start.tex | 14 | ||||
| -rw-r--r-- | Dokument/Designspec/events/warmup.tex | 14 | ||||
| -rw-r--r-- | Dokument/Designspec/syfte.tex | 17 | ||||
| -rw-r--r-- | Dokument/Designspec/system.tex | 177 |
10 files changed, 188 insertions, 93 deletions
diff --git a/Dokument/Designspec/events.tex b/Dokument/Designspec/events.tex index 4300184..a62834c 100644 --- a/Dokument/Designspec/events.tex +++ b/Dokument/Designspec/events.tex @@ -1,7 +1,7 @@ \section{Hantering av händelser} -Under körning kommer det att uppstå händelser som inte är ett fel i -programmet men som programmet fortfarande ska kunna hantera. +Under körning kommer det att uppstå händelser som inte är ett fel i programmet +men som programmet fortfarande ska kunna hantera. \subsection{Start} \input{events/start} diff --git a/Dokument/Designspec/events/Kallibrering.tex b/Dokument/Designspec/events/Kallibrering.tex index 32cf606..8cd28c4 100644 --- a/Dokument/Designspec/events/Kallibrering.tex +++ b/Dokument/Designspec/events/Kallibrering.tex @@ -1,17 +1,23 @@ -För att optimera bilarnas körning och varvtid kommer bilarna behöva -kalibreras. Enligt kravsspecifikationens punkt 22 får det inte köras fler än -5 kalibreringsvarv innan kraven 20 och 21 måste vara uppfyllda. +För att optimera bilarnas körning och varvtid kommer bilarna behöva kalibreras. +Enligt kravsspecifikationens punkt 22 får det inte köras fler än 5 +kalibreringsvarv innan kraven 20 och 21 måste vara uppfyllda. Kalibreringsvarven behöver ta hänsyn till tre moment. Det första är att identifiera vilken konstant en bil behöver, det andra är att optimera för gemensam varvtid och det tredje är att optimera den valda varvtiden. -För att identifiera en bilkonstant börjar programmet med att välja den lägsta spänningen som är möjlig vid starten. Efter första givaren är det möjligt att räkna ut hastigheten samt ta fram en begynnelsekonstant för första segmentet som kan användas för uppskattning av position. Det är också möjligt att se om bilen ligger efter eller kör enligt tid genom att jämföra med tidigare mätdata. Om bilen ligger efter kommer spänningen ökas succesivt tills bilen har nått den önskade tiden mellan segmenten för att uppnå önskad varvtid. När bilen ligger i fas kan den konstant som krävs för den nuvarande bilen räknas ut. +För att identifiera en bilkonstant börjar programmet med att välja den lägsta +spänningen som är möjlig vid starten. Efter första givaren är det möjligt att +räkna ut hastigheten samt ta fram en begynnelsekonstant för första segmentet +som kan användas för uppskattning av position. Det är också möjligt att se om +bilen ligger efter eller kör enligt tid genom att jämföra med tidigare mätdata. +Om bilen ligger efter kommer spänningen ökas succesivt tills bilen har nått den +önskade tiden mellan segmenten för att uppnå önskad varvtid. När bilen ligger i +fas kan den konstant som krävs för den nuvarande bilen räknas ut. -Under -kalibreringsvarven är det också viktigt att anpassa båda bilarnas varvtid mot -varandra. Om båda bilarna har en varvtid som är långsammare än den förväntade -hastigheten ska programmet optimera för en gemensam varvtid före den valda -varvtiden. Med funktioner ska programmet också kunna optimera för både +Under kalibreringsvarven är det också viktigt att anpassa båda bilarnas varvtid +mot varandra. Om båda bilarna har en varvtid som är långsammare än den +förväntade hastigheten ska programmet optimera för en gemensam varvtid före den +valda varvtiden. Med funktioner ska programmet också kunna optimera för både gemensam och vald varvtid. diff --git a/Dokument/Designspec/events/manuell.tex b/Dokument/Designspec/events/manuell.tex index 449324f..a06c43a 100644 --- a/Dokument/Designspec/events/manuell.tex +++ b/Dokument/Designspec/events/manuell.tex @@ -1,2 +1,5 @@ -Enligt kravspecifikationens punkt 12 ska det vara möjligt att välja om en bana ska köras manuellt eller autonomt. Det ska alltså gå att köra ena banan manuellt medan den andra styrs av programmet. Detta styrs via displayen vid uppstart. +Enligt kravspecifikationens punkt 12 ska det vara möjligt att välja om en bana +ska köras manuellt eller autonomt. Det ska alltså gå att köra ena banan +manuellt medan den andra styrs av programmet. Detta styrs via displayen vid +uppstart. diff --git a/Dokument/Designspec/events/missade-givare.tex b/Dokument/Designspec/events/missade-givare.tex index 8c53ad1..a3aff3e 100644 --- a/Dokument/Designspec/events/missade-givare.tex +++ b/Dokument/Designspec/events/missade-givare.tex @@ -2,5 +2,10 @@ Enligt krav 3 i kravspecifikationen ska programmet kunna hantera missade givare och fortsätta köra som normalt. Med metoden som används blir detta inte ett problem. Givarna kommer endast att användas för att justera programmets uppfattning om bilarnas position, medan själva positioneringen räknas ut av -systemet. Om programmet detekterar att en givare inte passeras överhuvudtaget när det var förväntat fortsätter systemet köra bilen enligt beräkningar på vart bilen borde befinna sig tills nästa givare. Vid passering av nästa givare kommer systemet jämföra den uträknade tiden och den faktiska tiden som bilen passerade på. Systemet jämför sedan om tiderna är rimliga och avgör därefter om den tidigare tidsfördröjningen var en missad givare eller något annat. +systemet. Om programmet detekterar att en givare inte passeras överhuvudtaget +när det var förväntat fortsätter systemet köra bilen enligt beräkningar på vart +bilen borde befinna sig tills nästa givare. Vid passering av nästa givare +kommer systemet jämföra den uträknade tiden och den faktiska tiden som bilen +passerade på. Systemet jämför sedan om tiderna är rimliga och avgör därefter om +den tidigare tidsfördröjningen var en missad givare eller något annat. diff --git a/Dokument/Designspec/events/off-circuit.tex b/Dokument/Designspec/events/off-circuit.tex index 6be5833..9298182 100644 --- a/Dokument/Designspec/events/off-circuit.tex +++ b/Dokument/Designspec/events/off-circuit.tex @@ -1,5 +1,11 @@ -Enligt kravspecifikationen ska systemet detektera att en bil åkt av banan inom 10 sekunder. Om systemet -inte får en ny givarsignal inom tio sekunder från den senaste givaren antas bilen ha -fastnat eller åkt av banan och programmet pausas tills bilen är på banan igen -och användaren trycker på ``fortsätt'' på displayen. Med givarnas förväntade tidspassering ska programmet kunna se att en bil inte passerat en givare vid den förväntade tidspasseringen. Har bilen inte passerat någon av givarna inom fem sekunder kan programmet öka spänningsnivån gradvis som vid start för att kontrollera om bilen har stannat. Efter ytterligare 5 sekunder ska programmet pausas och displayen skriva ut att bilen har åkt av banan. +Enligt kravspecifikationen ska systemet detektera att en bil åkt av banan inom +10 sekunder. Om systemet inte får en ny givarsignal inom tio sekunder från den +senaste givaren antas bilen ha fastnat eller åkt av banan och programmet pausas +tills bilen är på banan igen och användaren trycker på ``fortsätt'' på +displayen. Med givarnas förväntade tidspassering ska programmet kunna se att en +bil inte passerat en givare vid den förväntade tidspasseringen. Har bilen inte +passerat någon av givarna inom fem sekunder kan programmet öka spänningsnivån +gradvis som vid start för att kontrollera om bilen har stannat. Efter +ytterligare 5 sekunder ska programmet pausas och displayen skriva ut att bilen +har åkt av banan. diff --git a/Dokument/Designspec/events/olika-bilar.tex b/Dokument/Designspec/events/olika-bilar.tex index 50e9712..4c53011 100644 --- a/Dokument/Designspec/events/olika-bilar.tex +++ b/Dokument/Designspec/events/olika-bilar.tex @@ -1 +1,4 @@ -Enligt kravspecifikation punkt 7 ska programmet automatiskt hantera de olika bilarna som finns. Lösningen är att varje bil ska tilldelas en egen konstant som är specifik för varje bil. Konstanten är framtagen genom en funktion som gör beräkningar både för bilens variabel samt eventuellt drifsfall. +Enligt kravspecifikation punkt 7 ska programmet automatiskt hantera de olika +bilarna som finns. Lösningen är att varje bil ska tilldelas en egen konstant +som är specifik för varje bil. Konstanten är framtagen genom en funktion som +gör beräkningar både för bilens variabel samt eventuellt drifsfall. diff --git a/Dokument/Designspec/events/start.tex b/Dokument/Designspec/events/start.tex index 6f2defc..5a5beeb 100644 --- a/Dokument/Designspec/events/start.tex +++ b/Dokument/Designspec/events/start.tex @@ -1,7 +1,7 @@ -Vid start ska systemet hitta en spänningsnivå tillräckligt hög för att bilen ska -börja rulla men inte så hög att den åker av banan i första kurvan. I början ska -därför spänningen öka lite i taget tills bilen passerat målgivaren. När bilen -passerat målgivaren bibehålls spänningsnivån tills nästa givare passeras. -Då kan programmet göra beräkningar för en inledande konstant för bilen och -det vanliga systemet kan ta vid och kontrollera bilens förväntade position mot -dess uträknade position. +Vid start ska systemet hitta en spänningsnivå tillräckligt hög för att bilen +ska börja rulla men inte så hög att den åker av banan i första kurvan. I början +ska därför spänningen öka lite i taget tills bilen passerat målgivaren. När +bilen passerat målgivaren bibehålls spänningsnivån tills nästa givare passeras. +Då kan programmet göra beräkningar för en inledande konstant för bilen och det +vanliga systemet kan ta vid och kontrollera bilens förväntade position mot dess +uträknade position. diff --git a/Dokument/Designspec/events/warmup.tex b/Dokument/Designspec/events/warmup.tex index 8c81b93..ef4d989 100644 --- a/Dokument/Designspec/events/warmup.tex +++ b/Dokument/Designspec/events/warmup.tex @@ -1,10 +1,12 @@ Enligt kravspecifikations punkt 8 ska programmet hantera olika typer av -driftsfall såsom kall samt varm bana. Metoden för att lösa detta problem är -att programmet automatiskt justerar bilens körning för olika typer av -driftsfall. +driftsfall såsom kall samt varm bana. Metoden för att lösa detta problem är att +programmet automatiskt justerar bilens körning för olika typer av driftsfall. -Programmet ska kunna identifiera förändringar i snitthastighet per -segment och varvtid (även om programmet ger ut samma spänning). Detta kan bero på temperaturförändring i banan. Då systemet identifierat dessa förändringar ska programmet -automatiskt justera en konstant (car\_constant, se sektion~\ref{sec:system_a_funcs}) som korrigeras succesivt tills bilen ligger på vald referenstid. +Programmet ska kunna identifiera förändringar i snitthastighet per segment och +varvtid (även om programmet ger ut samma spänning). Detta kan bero på +temperaturförändring i banan. Då systemet identifierat dessa förändringar ska +programmet automatiskt justera en konstant (car\_constant, se +sektion~\ref{sec:system_a_funcs}) som korrigeras succesivt tills bilen ligger +på vald referenstid. diff --git a/Dokument/Designspec/syfte.tex b/Dokument/Designspec/syfte.tex index 5f6a126..896406e 100644 --- a/Dokument/Designspec/syfte.tex +++ b/Dokument/Designspec/syfte.tex @@ -1,13 +1,14 @@ \section{Syfte och mål} -Syftet med projektet är 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 är 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. \begin{figure} \centering diff --git a/Dokument/Designspec/system.tex b/Dokument/Designspec/system.tex index bb58e71..8e2514e 100644 --- a/Dokument/Designspec/system.tex +++ b/Dokument/Designspec/system.tex @@ -1,9 +1,9 @@ \section{Delsystem} -Systemet är indelat i två olika delsystem. Dessa system körs -sekvensiellt, alltså det ena efter det andra. Varje sekund körs de två delsystemen 10 gånger. Det första systemet kontrollerar -själva bilkörningen medan det andra systemet kontrollerar displayen. Se -figur~\ref{fig:system_diagram} för ett processchema. +Systemet är indelat i två olika delsystem. Dessa system körs sekvensiellt, +alltså det ena efter det andra. Varje sekund körs de två delsystemen 10 gånger. +Det första systemet kontrollerar själva bilkörningen medan det andra systemet +kontrollerar displayen. Se figur~\ref{fig:system_diagram} för ett processchema. \begin{figure} \centering @@ -18,78 +18,147 @@ figur~\ref{fig:system_diagram} för ett processchema. tillgänglig information in, i del A.2a görs beräkningar utifrån tillgänglig data, i del A.2b görs vidare beräkningar (alltså beräkningar som inte baseras direkt på den tillgängliga informationen), och i del A.3 utförs de ändringar - som programmet bedömer är nödvändiga för att klara den valda varvtiden och gemensam målgång. + som programmet bedömer är nödvändiga för att klara den valda varvtiden och + gemensam målgång. \subsubsection{Inhämtning av information} - Informationen som finns tillgänglig är kraftigt begränsad. I praktiken kommer - programmet endast fråga om någon av bilarna passerat en givare sedan + Informationen som finns tillgänglig är kraftigt begränsad. I praktiken + kommer programmet endast fråga om någon av bilarna passerat en givare sedan programmet frågade förra gången. \subsubsection{Behandling av insignaler} - De beräkningar som beror direkt på tillgänglig - information. Då ny indata endast kommer då en bil passerar en givare görs dessa beräkningar inte varje cykel. - Ny indata används för att bestämma bilens position och för att kalibrera en konstant. Dessa funktioner beskrivs -mer ingående i \ref{sec:system_a_funcs}. + De beräkningar som beror direkt på tillgänglig information. Då ny indata + endast kommer då en bil passerar en givare görs dessa beräkningar inte + varje cykel. Ny indata används för att bestämma bilens position och för + att kalibrera en konstant. Dessa funktioner beskrivs mer ingående i + \ref{sec:system_a_funcs}. \subsubsection{Vidare beräkningar} - Den första beräkningen som görs är bilens nuvarande position. Detta görs med - hjälp av en intern bild av banan och vetskapen om vilken hastighet och position bilen - tidigare haft. Sedan beräknas den position som bäst gör att bilen klarar den satta - varvtiden ut med hjälp av den nuvarande tiden och, om gemensam målgång är aktiverat, positionen av den andra bilen. - I början av varvet görs inte lika drastiska hastighetsändringar som mot slutet. + Den första beräkningen som görs är bilens nuvarande position. Detta görs + med hjälp av en intern bild av banan och vetskapen om vilken hastighet och + position bilen tidigare haft. Sedan beräknas den position som bäst gör att + bilen klarar den satta varvtiden ut med hjälp av den nuvarande tiden och, + om gemensam målgång är aktiverat, positionen av den andra bilen. I början + av varvet görs inte lika drastiska hastighetsändringar som mot slutet. - Det sista som händer är att informationen om bilens och banans skick används - för att räkna ut vilket spänningspådrag som krävs för att få bilen att nå - den hastighet och position som krävs. + Det sista som händer är att informationen om bilens och banans skick + används för att räkna ut vilket spänningspådrag som krävs för att få bilen + att nå den hastighet och position som krävs. \subsubsection{Utförande} I utförandet skickas det nya spänningspådraget till banorna. \subsubsection{Funktioner i delsystem A} \label{sec:system_a_funcs} - I figur~\ref{fig:flow_diagram} visas flödet av de funktioner som sker i delsystem A under en programcykel (alltså 10 gånger per sekund). + + I figur~\ref{fig:flow_diagram} visas flödet av de funktioner som sker i + delsystem A under en programcykel (alltså 10 gånger per sekund). Här listas namn på funktionerna och deras funktion: - \begin{itemize} - \item old\_v: Bilens hastighet från olika segment, nuvarande varvet och tidigare lopp. Från denna databas kan andra funktioner få information om hastigheten bilen tidigare haft. - \item old\_position: Bilens tidigare placering. Från denna databas kan andra funktioner få information om var bilen var förra cykeln, var bilen var för ett varv sedan och så vidare. - \item indata: Information om huruvida en givare har passerats sedan förra cykeln. - \item car\_constant: Påverkar new\_u så att new\_u tillsammans med track\_u\_constant motsvarar den hastighet som anges av new\_v. car\_constant ändras endast vid ny indata, vilket innebär att den är konstant under resterande cykler fram tills nästa givare passeras. Genom att jämföra positionen som fås av givarna med indatan kan programmet räkna ut felmarginalen som har uppstått och kalibrera car\_constant new\_u kan justeras med större precision. - - \item position: Var på banan bilen befinner sig. Fås genom att hämta senaste positionen (old\_ position) och addera sträckan bilen har färdats sedan dess senaste värde. Sträckan som bilen har färdats kan räknas ut genom $S = v \cdot \delta t$ där $V = \textrm{old\_v}$ samt $\delta t = \textrm{tiden sen senaste cykeln}.$. Om det finns ny indata denna cykel är positionen känd och den faktiska positionen används istället. - \item clock: Hur länge bilen har varit i det nuvarande segmentet och varvet. + \begin{itemize} + + \item old\_v: Bilens hastighet från olika segment, nuvarande varvet och + tidigare lopp. Från denna databas kan andra funktioner få information + om hastigheten bilen tidigare haft. + + \item old\_position: Bilens tidigare placering. Från denna databas kan + andra funktioner få information om var bilen var förra cykeln, var + bilen var för ett varv sedan och så vidare. - \item car\_position\_diff: Bilarnas position gentemot varandra. Endast aktiv om gemensam målgång aktiverad. Funktionen utgår från respektive bils placering (old\_position) och hastighet (old\_v) -och ger ett värde på placeringsskillnaden för en viss hastighet. Detta används för att sätta bilarnas nya hastighet. Värdet blir stort om skillnaden i placering är stor men justeras också efter hastigeten. Detta betyder att om bilarna befinner sig långt ifrån varandra men har en hög hastighet blir värdet inte lika stort som om bilarna befinner sig lika långt ifrån varandra men har en lägre hastighet. Värdet är positivt om bilen på bana 1 ligger före bilen på bana 2 och negativt om bilen på bana 2 ligger före bilen på bana 1. -Värdet används sedan för att beräkna nästa hastighet (new\_v) som kommer ökas eller minskas för att få bilarna att köra ikapp varandra. + \item indata: Information om huruvida en givare har passerats sedan förra + cykeln. + + \item car\_constant: Påverkar new\_u så att new\_u tillsammans med + track\_u\_constant motsvarar den hastighet som anges av new\_v. + car\_constant ändras endast vid ny indata, vilket innebär att den är + konstant under resterande cykler fram tills nästa givare passeras. + Genom att jämföra positionen som fås av givarna med indatan kan + programmet räkna ut felmarginalen som har uppstått och kalibrera + car\_constant new\_u kan justeras med större precision. + + \item position: Var på banan bilen befinner sig. Fås genom att hämta + senaste positionen (old\_ position) och addera sträckan bilen har + färdats sedan dess senaste värde. Sträckan som bilen har färdats kan + räknas ut genom $S = v \cdot \delta t$ där $V = \textrm{old\_v}$ samt + $\delta t = \textrm{tiden sen senaste cykeln}.$. Om det finns ny indata + denna cykel är positionen känd och den faktiska positionen används + istället. + + \item clock: Hur länge bilen har varit i det nuvarande segmentet och + varvet. + + \item car\_position\_diff: Bilarnas position gentemot varandra. Endast + aktiv om gemensam målgång aktiverad. Funktionen utgår från respektive + bils placering (old\_position) och hastighet (old\_v) och ger ett värde + på placeringsskillnaden för en viss hastighet. Detta används för att + sätta bilarnas nya hastighet. Värdet blir stort om skillnaden i + placering är stor men justeras också efter hastigeten. Detta betyder + att om bilarna befinner sig långt ifrån varandra men har en hög + hastighet blir värdet inte lika stort som om bilarna befinner sig lika + långt ifrån varandra men har en lägre hastighet. Värdet är positivt om + bilen på bana 1 ligger före bilen på bana 2 och negativt om bilen på + bana 2 ligger före bilen på bana 1. Värdet används sedan för att + beräkna nästa hastighet (new\_v) som kommer ökas eller minskas för att + få bilarna att köra ikapp varandra. \item target: Sökt varvtid. Sätts manuellt innan programmet startar. - \item target\_diff: Differensen mellan den önskade tiden och positionen relativt till den faktiska tiden och positionen. Fås genom att subtrahera de önskade värdena med de faktiska värdena. + + \item target\_diff: Differensen mellan den önskade tiden och positionen + relativt till den faktiska tiden och positionen. Fås genom att + subtrahera de önskade värdena med de faktiska värdena. - \item agressiveness: Justerar hur stora ändringar som görs på new\_v. Vid början av ett varv finns det mycket tid kvar och new\_v kan ändras lite i taget istället för att göra stora förändringar direkt. Det är även onödigt att göra stora ändringar om bilarna befinner sig ungefär där de bör vara. agressiveness räknas ut via clock, hur mycket av varvtiden som återstår, target\_diff och hur långt ifrån målet bilen befinner sig. Om gemensam målgång är aktiv tas även hänsyn till car\_position\_diff. - - \item u\_constant\_map: En kartläggning över banan och de spänningsnivåer som behöver sättas så att spänningen blir jämn. Behövs eftersom spänningstillförseln beter sig olika vid olika delar av banan. Kartläggningen bygger på det register med inlagrad data som tas fram genom tester. - \item target\_diff: Bilens position relativt till var den borde befinna sig vid den nuvarande tiden. + \item agressiveness: Justerar hur stora ändringar som görs på new\_v. Vid + början av ett varv finns det mycket tid kvar och new\_v kan ändras lite + i taget istället för att göra stora förändringar direkt. Det är även + onödigt att göra stora ändringar om bilarna befinner sig ungefär där de + bör vara. agressiveness räknas ut via clock, hur mycket av varvtiden + som återstår, target\_diff och hur långt ifrån målet bilen befinner + sig. Om gemensam målgång är aktiv tas även hänsyn till + car\_position\_diff. + + \item u\_constant\_map: En kartläggning över banan och de spänningsnivåer + som behöver sättas så att spänningen blir jämn. Behövs eftersom + spänningstillförseln beter sig olika vid olika delar av banan. + Kartläggningen bygger på det register med inlagrad data som tas fram + genom tester. + + \item target\_diff: Bilens position relativt till var den borde befinna + sig vid den nuvarande tiden. -\item track\_u\_ constant: Det förbestämda spänningsvärdet för ett visst subsegment på banan. Tas fram manuellt genom prövning och lagras i u\_constant\_map. Från position tar track\_u\_constant fram rätt spänningsvärde. + \item track\_u\_ constant: Det förbestämda spänningsvärdet för ett visst + subsegment på banan. Tas fram manuellt genom prövning och lagras i + u\_constant\_map. Från position tar track\_u\_constant fram rätt + spänningsvärde. - \item speed\_map: En kartläggning över banan och hur över hur fort man kan köra i olika delar av banan. Kartläggningen bygger på det register med inlagrad data som tas fram genom tester. - - \item speed\_max: Den förbestämda maxhastigheten för nuvarande subsegment. Tas fram manuellt genom prövning och lagras i speed\_map. Från position tar speed\_constant fram rätt hastighet. - -\item new\_v: Den hastighet som bilen ska få nästa cykel. Tar förra cykelns hastighet (old\_ v) -och lägger till eller drar av beroende på hur långt ifrån målet bilarna ligger (target\_diff) och, om gemensam -målgång är aktiverad, hur långt ifrån varandra bilarna är (car\_position\_diff). Beror -också på agressiveness; högre agressiveness ger större skillnad mellan new\_v och old\_v medan ett lågt värde gör att new\_v -inte ändras särskilt mycket. -new\_v används sedan för att sätta -new\_u. Högre new\_v ger högre new\_u och lägre new\_v ger lägre\_u. + \item speed\_map: En kartläggning över banan och hur över hur fort man + kan köra i olika delar av banan. Kartläggningen bygger på det register + med inlagrad data som tas fram genom tester. + + \item speed\_max: Den förbestämda maxhastigheten för nuvarande + subsegment. Tas fram manuellt genom prövning och lagras i speed\_map. + Från position tar speed\_constant fram rätt hastighet. + + \item new\_v: Den hastighet som bilen ska få nästa cykel. Tar förra + cykelns hastighet (old\_ v) och lägger till eller drar av beroende på + hur långt ifrån målet bilarna ligger (target\_diff) och, om gemensam + målgång är aktiverad, hur långt ifrån varandra bilarna är + (car\_position\_diff). Beror också på agressiveness; högre + agressiveness ger större skillnad mellan new\_v och old\_v medan ett + lågt värde gör att new\_v inte ändras särskilt mycket. new\_v används + sedan för att sätta new\_u. Högre new\_v ger högre new\_u och lägre + new\_v ger lägre\_u. -\item new\_u: Den spänning som ska appliceras beroende på vilken hastighet new\_v anger. Ett högre new\_v innebär ett högre new\_u. De andra parametrarna som påverkar new\_u är car\_constant och track\_u\_constant, desto högre dessa värden dessa antar desto högre värde antar också new\_u. new\_u är programmets sista output, dess värde 0 till 127 är det gaspådrag som appliceras på bilen. + \item new\_u: Den spänning som ska appliceras beroende på vilken + hastighet new\_v anger. Ett högre new\_v innebär ett högre new\_u. De + andra parametrarna som påverkar new\_u är car\_constant och + track\_u\_constant, desto högre dessa värden dessa antar desto högre + värde antar också new\_u. new\_u är programmets sista output, dess + värde 0 till 127 är det gaspådrag som appliceras på bilen. + \end{itemize} \begin{figure} @@ -99,10 +168,10 @@ new\_u. Högre new\_v ger högre new\_u och lägre new\_v ger lägre\_u. \label{fig:flow_diagram} \end{figure} - \subsection{Delsystem B: Display} + \subsection{Delsystem B: Display} - Displayen ter sig enklare än delsystem A. Under körning ska, om ett nytt varv - påbörjats, den senaste varvtiden och varvnumret skickas till displayen. Om - stopp-knappen har tryckts ned ska systemet hoppa till resultat-skärmen och om - inte så ska det fortsätta. + Displayen ter sig enklare än delsystem A. Under körning ska, om ett nytt varv + påbörjats, den senaste varvtiden och varvnumret skickas till displayen. Om + stopp-knappen har tryckts ned ska systemet hoppa till resultat-skärmen och om + inte så ska det fortsätta. |
