From 294c6bf20787d2c751f323ef7152a14b5432e20d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 15 Oct 2019 12:01:29 +0200 Subject: =?UTF-8?q?Spr=C3=A5k=20och=20stavning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Designspec/system.tex | 75 ++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 39 deletions(-) (limited to 'Dokument/Designspec/system.tex') diff --git a/Dokument/Designspec/system.tex b/Dokument/Designspec/system.tex index 4163c31..bb58e71 100644 --- a/Dokument/Designspec/system.tex +++ b/Dokument/Designspec/system.tex @@ -1,7 +1,7 @@ \section{Delsystem} -Systemet är indelat i två olika delsystem. Dessa system kommer köras -sekvensiellt, alltså det ena efter det andra. Varje sekund kommer dessa två delsystem köras 10 gånger (dvs 10 cykler/sekund). Det första systemet kontrollerar +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. @@ -18,11 +18,11 @@ 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. + 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} - Information som finns tillgänglig är kraftigt begränsad. I praktiken kommer + 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. @@ -30,7 +30,7 @@ figur~\ref{fig:system_diagram} för ett processchema. 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äma bilens position, starta en clocka och för att kalibrera en konstant. Dessa funktioner beskrivs + 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} @@ -38,10 +38,10 @@ mer ingående i \ref{sec:system_a_funcs}. 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. För att räkna ut den beaktas enbart 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. + 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 + 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. @@ -49,50 +49,47 @@ I början av varvet görs inte lika drastiska hastighetsändringar som mot slut 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 cykel. + 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\textunderscore v: Lagring av bilens hastighet från segment, varv och tidigare lopp. Från denna databas kan andra funktioner få information om hur fort bilen tidigare har åkt. \item old\textunderscore position: Lagring av gammal data för bilens 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 m.m. - \item indata: Avgör huruvida en givare har passerats sedan förra cykeln. + \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. -%car_constant - \item car\textunderscore constant: car\textunderscore constant ska direkt påverka new\textunderscore u så att new\textunderscore u tillsammans med track\textunderscore u\textunderscore constant motsvarar den hastighet som anges av new\textunderscore v. car\textunderscore constant ändras endast vid ny indata, vilket innebär att den är konstant under resterande cykler. Genom att jämföra position med indatan kan programmet räkna ut felmarginalen som har uppstått och kalibreras så att man med större precision kan justera new\textunderscore u. + \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: Programmet räknar ut var på banan bilen befinner sig genom att hämta senaste positionen old\textunderscore position och sedan 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\textasteriskcentered (delta)T, där V = old\textunderscore v och (delta)T = tidskillnaden mellan senaste cykel. Om det finns ny indata denna cykel, så är positionen känd och denna data används istället för att utgå ifrån gammal. + \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\textunderscore position\textunderscore dif: Endast aktiv om gemensam målgång aktiverad. Jämför bilarnas position med varandra. Funktionen utgår ifrån respektive bils placering (från old\textunderscore position) och hastighet (från old\textunderscore v) -och ger ett värde på placeringsskillnaden för en viss hastighet. Detta kommer -sedan användas för att sätta bilarnas nya hastighet. Värdet blir stort om skillnaden i placering är stor men justeras också efter hastigeten. Dvs om bilarna ligger långt ifrån varandra men åker ganska fort kommer inte värdet bli lika stort som om bilarna legat lika långt ifrån varandra men haft lägre hastighet. Värdet är positivt om bil 1 ligger före bil 2 och negativt om bil 2 ligger före bil 1. På så sätt kan nästa funktion avgöra vilken bil som ligger först. -Värdet används sedan för att beräkna nästa hastighet (new\textunderscore v) som kommer ökas eller minskas för att få bilarna att köra ikapp varandra. + \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: Den varvtid som manuellt har satts innan programet startade. - \item target dif: Differensen mellan den önskade tiden och positionen relativt till den faktiska tiden och positionen. Görs genom att subtrahera de önskade värdena med de faktiska värdena. + \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 agressivness: Justerar hur stora ändringar som görs på new\textunderscore v. Vid början av ett varv finns det mycket tid kvar och new\textunderscore v kan ändras lite i taget istället för att göra stora förändringar direkt. Dessutom är det onödigt att göra stora ändringar om bilarna befinner sig ungefär där de bör vara. agressivness räknas ut via; clock, hur mycket av varvtiden återstår, target\textunderscore dif, hur långt ifrån målet befinner sig bilen och om gemensam målgång är aktiv tar agresivness även hänsyn till car\textunderscore position\textunderscore dif, hur långt avståndet mellan de två bilarna är. + \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. -%u_constant_map - \item u\textunderscore constant\textunderscore map: En kartläggning över banan och de spänningsnivåer som behöver sättas så att spänningen blir jämn. Detta eftersom att spänningstillförseln beter sig olika för olika delar av banan. Kartläggningen kommer bygga på det register med inlagrad data som tagits fram genom tester. - \item target\textunderscore dif: Bilens position relativt till var den borde vara vid den nuvarande tiden. + \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\textunderscore u\textunderscore constant: Detta ät det förbestämda spänningsvärdet för ett visst subsegment på banan. Värdet tas fram manuellt genom prövning och lagras i u \textunderscore constant \textunderscore map. Ur position tar track \textunderscore u \textunderscore 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\textunderscore map: En kartläggning över banan och hur över hur fort man kan köra i olika delar av banan. Kartläggningen kommer bygga på det register med inlagrad data som tagits fram genom tester. - - \item speed\textunderscore constant: Den förbestämda maxhastigheten för nuvarande subsegment. Värdet tas fram manuellt genom prövning och lagras i speed\textunderscore map. Ur position tar speed\textunderscore constant fram rätt hastighet. - -% new_v -\item new\textunderscore v: Beräknar den hastighet som bilen ska få nästa cykel. Funktionen tar förra cykelns hastighet (old\textunderscore v) -och lägger till eller tar bort lite beroende på hur långt ifrån målet som bilarna ligger (target\textunderscore dif) och, om gemensam -målgång är aktiverad, hur långt ifrån varandra bilarna är (car\textunderscore position\textunderscore dif). Funktionen beror -också på agressivness, högre agressivness ger större skillnad mellan new\textunderscore v och old\textunderscore v medan ett lågt värde gör att new\textunderscore v -inte kommer ändras särskillt mycket. -new\textunderscore v används sedan för att sätta -new\textunderscore u. Högre new\textunderscore v ger högre new\textunderscore u och lägre new\textunderscore v ger lägre\textunderscore 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\textunderscore u: Beräknar den spänning som ska appliceras beroende på vilken hastighet new\textunderscore v anger. Ett högre new\textunderscore v innebär ett högre new\textunderscore u. De andra parametrarna som påverkar new\textunderscore u är car\textunderscore constant och track\textunderscore u\textunderscore constant, desto högre dessa värden dessa antar desto högre värde antar också new\textunderscore u. New\textunderscore 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} -- cgit v1.2.1