From 8d9ccfab5b095e7656d9b63fd3b54557106e46d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Sat, 30 Nov 2019 13:37:05 +0100 Subject: =?UTF-8?q?Lade=20till=20txt=20med=20m=C3=B6jlig=20justering=20til?= =?UTF-8?q?l=20syfte=20och=20m=C3=A5l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Davids txt filer/Syfte och m\303\245l.txt" | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 "Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och m\303\245l.txt" (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och m\303\245l.txt" "b/Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och m\303\245l.txt" new file mode 100644 index 0000000..7d1cd8b --- /dev/null +++ "b/Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och m\303\245l.txt" @@ -0,0 +1,6 @@ +Syftet med projektet var att konstruera ett system som kör bilar 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å diverse bilar att köra runt på de 2 olika +banorna på en vald referenstid. Huvudmålet är indelat i flera olika krav. +Se avsnitt 3.2. \ No newline at end of file -- cgit v1.2.1 From 0d4bc96672ee78f7cf65d9daa7c127a536760c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 30 Nov 2019 13:40:55 +0100 Subject: =?UTF-8?q?F=C3=B6rsta=20utkast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 622 +++++++++++++++++++++++++++++++- 1 file changed, 611 insertions(+), 11 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 89fa89c..55bf363 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -2,6 +2,7 @@ %\usepackage[square]{natbib}\bibliographystyle{plainnat}\setcitestyle{numbers} \usepackage[round]{natbib}\bibliographystyle{plainnat} +\usepackage{parskip} % Configure the document \title{Teknisk dokumentation} @@ -67,7 +68,7 @@ \multicolumn{1}{|c}{\bfseries Granskad}\\ \hline \hline - 0.1 & 2019-11-26 & Förberedande struktur & Albin & \\ + 0.1 & 2019-11-30 & Första utkast & Alla & \\ \hline \end{tabular} @@ -79,20 +80,619 @@ \tableofcontents \cleardoublepage -\input{text/01-inledning} -\input{text/02-metod} -\input{text/03-system} -\input{text/04-resultat} -\input{text/05-diskussion} +\section{Inledning} +\subsection{Bakgrund} +\subsection{Syfte och mål} + +\section{Begrepp och systemöversikt} +\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 "do\_boot" vars syfte är att få fram en +initierande konstant ("car\_constant") 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å höjs inte konstanten lika mycket +och gör det desto mer sällan. 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 segment 3 för att få en uträknad tid. med +tiden det tagit för bilen att ta sig igenom segment 3 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. emp{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}. + +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öje \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. + +\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} + +\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. + \bibliography{references} \cleardoublepage \appendix -\input{appendix/01-handhavande} -\input{appendix/02-funktion} -\input{appendix/03-testprocedur} -\input{appendix/04-testprotokoll} -\input{appendix/05-kravbeskrivning} +\section{Handhavande} +Proceduren till handhavande för Matlab: + +Starta Matlab 2015b. Observera att användaren måste använda datorn som finns +inne i bilbanerummet och som är inkopplade till bilbanan. Väl inne i Matlab +öppna filvägen för hårdisk X: och hitta sökvägen till yc4\_2019. + +Därefter markera och högerklicka på mappen kod och där kommer ett alternativ som +heter Add To Path. Välj sedan Select Folders And Subfolders som dyker upp när +musen pekar på Add To Path. Därefter expandera bilbana mappen följt av yc4 +mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn +i Matlab. + +När koden körs i Matlab är dags att starta bilarna detta görs genom att via den +externa touch displayen. Där finns möjligheterna att välja antalet banor som ska +köras samt möjligheten att justera referenstiden. Kryssa även i om någon av +banorna ska köras manuellt. Därefter starta genom att trycka på knappen nere i +det högra hörnet på displayen. + +När programmet ska avslutas klickar användaren i kommentar fönstret i Matlab och +klickar på q om bilen ska stanna direkt. Om användaren istället vill att +bilen/bilarna ska stanna precis innan målgivaren klickar användaren på s +(observera att detta fungerar endast efter varv ett). + +När programmet avslutas finns möjligheterna att se varvtiden/varvtiderna, +segmentstiden/segmentstiderna samt att avsluta. Detta väljs utifrån de tre +knapparna längst ner på displayen. Dessa knappar är Varv för att se varvtid, +Segment för att se segmentstider. Samt knappen Avsluta. + +Om knappen Varv väljs kommer information såsom “target” vilket är vald varvtid. +“Mean” som är genomsnittlig varvtid och “Stdev” är standardavvikelsen. För att +se varvtiden för den andra banan klicka på knappen uppe i högra hörnet. + +Om programmet kraschar: Om programmet kraschar öppna main.m. Därefter skriv in +ctrl och enter i avgränsningen som heter "\%\% END OF RACE" som finns i slutet av +koden main.m. + +\section{Funktioner och filer} + +\subsection{System} + +choose\_position(position, segment, track, track\_len) + +Körs när en givare passerats. Gör en bedömning om en givare (eller flera) har +missats genom att kontrollera vilken givare som är närmast den nuvarande +uppskattade position och kompenserar om en givare bedöms ha missats. + +clamp(n, m, M) + +En hjälpfunktion som returnerar n om $m < n < M$, annars m om $n < m$, annars M +om $n > M$. + +detect\_missed(position, segment, track, track\_len) + +Returnerar true om position ligger utanför det nuvarande segmentet. + +do\_boot(car, boot) + +Anropas en gång per programcykel i den så kallade boostrap-fasen. Se ANNAN DEL +AV TEXTEN för information. + +do\_car(car, t, displa\_data, boot) + +Anropas en gång per programcykel. Se ANNAN DEL AV TEXTEN och EN ANNAN DEL +AV TEXTEN för information om hur en programcykel ser ut och NÅGOT MER. + +do\_gov(car) + +Anropas varje gång en givare passerats. Vid målgivaren jämförs referenstiden och +den förra varvtiden och car.constant anpassas efter differensen mellan dem. Om +differensen är högre ändras car.constant mer, och vice versa om differensen är +låg. Vid givare 5 och 8 jämförs referenstiden och en uppskattning av hur lång +tid det nuvarande varvet troligen kommer ta. Se EN ANNAN DEL AV TEXTEN för +mer information. + +fit\_percents(percents, lap\_time, seg\_times) + +Anropas vid varje nytt varv. Räknar ut den procentuella tiden varje segment tog +det förra varvet och sparar medelvärdet mellan den förra procentsatsen och den +nya, uträknade procentsatsen. Procentsatsen normeras sedan så summan är 1 +(100%). + +format\_seg\_times(car) + +Anropas när körningen avslutas. Returnerar den genomsnittliga tiden för varje +segment. + +get\_aprox\_v(cur\_seg, car) + +Anropas varje programcykel. Uppskattar bilens nuvarande hastighet genom att +dividera den senast uppmätta segmentstiden med segmentets längd. + +get\_new\_u(new\_v, seg\_constant + +FLYTTA BERÄKNINGEN TILL DO\_CAR, BEHÖVER INTE VARA EN EGEN FUNKTION + +get\_new\_v(position, list) + +Anropas varje programcykel. Söker igenom bankartan och returnerar värdet v som +matchar position. + +get\_position(aprox\_v, prev\_p, delta\_t) + +Anropas varje programcykel. Räknar ut hur långt bilen rört sig sedan senaste +programcykeln. + +get\_seg\_constant(position, lap\_constants, track, track\_len) + +TA BORT + +get\_time\_as\_string(millis) + +Omvandlar en mängd millisekunder till formatet "mm:ss.s". Till exempel omvandlas 1250 +ms till "00:01.3" och 11240 till "00:11.2". + +main.m + +Huvudskriptet som startar hela systemet. + +\subsection{Display} + +bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value, type, pattern): + +Skapar ett stapeldiagram med ett hörn i (*x1*, *y1*) och ett diagonellt +hörn i (*x2*, *y2*). *direction* är en av 'O', 'U', 'L' och 'R' och +bestämmer åt vilket håll "upp" är på stapeln. 'O' står för upp ('oben' +på tyska), 'U' står för ner ('unter' på tyska), 'L' står för vänster +('links') och 'R' står för höger ('rechts'). Värdet stapeldiagrammet ska +visa specifieras med *update\_bar\_graph*. *start\_value* och +*end\_value* bestämmer vad som ska vara noll- respektive maxvärde för +stapeldiagrammet. *no* är stapeldiagrammets nummer och behöver +specifieras när stapeldiagrammets värde ska uppdateras. *type* sätts +till 0 för en enkel stapel och 1 för en stapel inuti en ram. + +box(x1, y1, x2, y2, n1) + +Ritar en rektangel med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) +och mönster-nummer *n1*. + +clear\_display() + +Rensa displayen. + +continue\_line(x2, y2) + +Fortsätt en linje från den senast specifierade linjens slut till (*x2*, +*y2*). + +delete\_area(x1, y1, x2, y2) + +Ta bort (släck) alla pixlar i det rektangulära området mellan (*x1*, +*y1*) och (*x2*, *y2*). + +draw\_line(x1, y1, x2, y2) + +Rita en linje mellan (*x1*, *y1*) och (*x2*, *y2*). + +draw rectangle(x1, y1, x2, y2) + +Rita en rektangel (ej ifylld) mellan (*x1*, *y1*) och (*x2*, *y2*). + +fill\_area(x1, y1, x2, y2) + +Tänd alla pixlar i det rektangulära området mellan (*x1*, *y1*) och +(*x2*, *y2*). + +fill\_area\_with\_pattern(x1, y1, x2, y2, n1) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +mönster *n1*. + +fill\_display() + +Tänd alla pixlar på displayen. + +flashing\_area(x1, y1, x2, y2) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +blinkande pixlar. Blinkintervallet kan sättas med *set\_flashing\_time*. + +flashing\_area\_with\_pattern(x1, y1, x2, y2) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +blinkande pixlar i ett mönster. Blinkintervallet kan sättas med +*set\_flashing\_time*. + +invert\_area(x1, y1, x2, y2) + +Tänd alla släckta pixlar och släck alla tända pixlar i det rektangulära +området mellan (*x1*, *y1*) och (*x2*, *y2*). + +invert\_display() + +Tänd alla släcka pixlar och släck alla tända pixlar på hela displayen. + +key(x1, y1, x2, y2, down\_code, up\_code, just, text) + +Skapa en tryckbar knapp (till skillnad från en omkopplare, se +*toggle(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och +texten *text*. Hur texten justeras beror på *just* där 'R' gör texten +högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör +texten vänsterjusterad ('left'). Om knappen trycks ned läggs +*down\_code* i displayens interna minne och om knappen släpps läggs +*up\_code* i displayens interna minne. + +point(x1, y1) + +Rita en punkt i (*x1*, *y1*). Punktens storlek kan anpassas med +*set\_point\_size*. + +put\_text(x, y, justification, text) + +Skriv ut texten *text* i (*x*, *y*). Hur texten justeras beror på +*justification* där 'R' gör texten högerjusterad ('right'), 'C' gör +texten centerjusterad och 'L' gör texten vänsterjusterad ('left'). Om +*justification* är 'R' bestämmer *x* och *y* textens övre högra +koordinat, om *justification* är 'C' bestämmer *x* och *y* textens +mittre koordinat och om *justification* är 'L' bestämmer *x* och *y* +textens övre vänstra koordinat. + +redraw\_bar\_graph(num) + +Tvinga stapeldiagram *num* att ritas om. + +remove\_flashing\_area(x1, y1, x2, y2) + +Ta bort blinkade pixlar i det rektangulära området mellan (*x1*, *y1*) +och (*x2*, *y2*). + +request\_bar\_graph\_value(num) + +Lägg nuvarande värdet för stapeldiagram *num* i displayens interna +minne. + +restore\_display\_from\_clipboard() + +Flytta innehållet från displayens urklipp till displayen. + +restore\_display\_from\_clipboard\_to\_point(x1, y1) + +Flytta innehållet från displayens urklipp till displayen med övre +vänstra hörn i (*x1*, *y1*). Spara ett område med +\_save\_area\_to\_clipboard(...). + +save\_area\_to\_clipboard(x1, y1, x2, y2) + +Kopiera innehållet i den rektangel mellan (*x1*, *y1*) och (*x2*, *y2*) +till displayens urklipp. Återställ med +*restore\_display\_from\_clipboard\_to\_point(...)*. + +save\_display\_to\_clipboard() + +Kopiera displayens nuvarande innehåll till displayens urklipp. Återställ +med *restore\_display\_from\_clipboard()*. + +set\_display\_visible(visible) + +Sätt om displayen ska vara synlig (*visible* = true) eller om displayen +ska vara osynlig (*visible* = false). Att displayen är osynlig innebär +att innehållet inte syns men finns kvar i bakgrunden och kan visas igen +om *set\_display\_visible(true)* skickas. + +set\_drawing\_mode(n1) + +Sätt displayens ritläge. *n1* = 1 innebär att pixlar slås på eller av +(som vanligt) enligt kommandot som skickas, *n1* = 2 innebär att pixlar +enbart slås av (som ett suddgummi) och *n1* = 3 innebär att pixlar +inverteras (släckta pixlar slås på och tända pixlar stängs av) + +set\_flashing\_time(n1) + +Sätt intervallet blinkande objekt blinkar i. *n1* är ett intervall i +tiondelar av en sekund mellan 0,1 sekunder och 1,5 sekunder. + +set\_line\_pattern(n1) + +Sätt mönstret linjer ritas ut med. + +set\_point\_size(n1, n2) + +Sätt storleken på punkter och linjer som ritas ut. *n1* är storleken i +x-led (mellan 1 och 15 pixlar) och *n2* är storleken i y-led (mellan 1 +och 15 pixlar). + +set\_text\_flashing(n1) + +Sätt om ny text som skrivs ut ska blinka eller inte. *n1* = 1 slår på +blinkande och *n1* = 2 stänger av blinkande. + +set\_text\_font(font\_num) + +Sätt typsnittet på ny text som skrivs ut. Se *REF* för information om de +olika typsnitten. + +set\_text\_zoom(x\_scale, y\_scale) + +Sätt skalfaktorn för ny text som skrivs ut. *x\_scale* är skalfaktorn i +x-led (mellan x1 och x8) och *y\_scale* är skalfaktorn i y-led (mellan +x1 och x8). + +set\_touch\_sound\_response(state) + +Sätt om displayen ska göra ljud när knappar trycks ned. *state* = 1 slår +på ljudet och *state* = 0 stänger av ljudet. + +toggle(x1, y1, x2, y2, down\_code, up\_code, just, text) + +Skapa en tryckbar omkopplare (till skillnad från en knapp, se +*key(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och +texten *text*. Hur texten justeras beror på *just* där 'R' gör texten +högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör +texten vänsterjusterad ('left'). Om knappen aktiveras läggs *down\_code* +i displayens interna minne och om knappen avaktiveras läggs *up\_code* i +displayens interna minne. + +update\_bar\_graph(num, val) + +Skicka värdet *val* till stapeldiagram *num*. + +\section{Material} + +Projektgruppen har av beställaren tillhandahållits ett lab med följande utrustning: + +\begin{itemize} + \item En bilbana utrustad med givare vars funktion är att detektera passerade bilar. + \item Två datorer + \item En display med touchfunktionallitet. + \item Ett antal bilar +\end{itemize} + +\section{Sluttest} + +\section{Kravbeskrivning} + +Krav 1. Systemet är helt skrivet i matlab. + +Krav 2. Systemet kan startas oavsett bil på banan.. + +Krav 3. Systemet klarar av att missa givare. + +Krav 4. När ett varv har körts så uppdaterar displayen vilket varv som nyss +genomfördes samt varvtiden. + +Krav 5. Under programmets gång visas det nuvarande gaspådraget. + +Krav 6. Efter att programmet avslutats visas information på displyen. + +Krav 7. Systemet kan köras oavsett vilken bil som placeras på banan. + +Krav 8. Programmet hanterar driftsfall genom att kompensera en större eller +mindre styrsignal. + +Krav 9. Om systemet inte får en nt insignal i form av en passerad givare inom +tio sekunder pausas systemet och användaren får frågan om denne vill fortsätta +eller avsluta. + +Krav 10. Användaren har alternativet att köra en eller båda banorna samt hur +banorna ska köras, autonomnt eller manuellt. Det manuella alternativet uppfyller +inte krav 8 på beslut av beställaren. + +Krav 11. Kravet struket från beslut av beställare. + +Krav 12. Tillsammans med frågan om bana ett eller två ska köras frågar +programmet systemet om banan ska köras manuellt eller autonomt. + +Krav 13. För att starta programmet krävs att man kan öppna matlab och starta +programmet. Därefter kan användaren starta med hjälp av displayen. + +Krav 14. När systemet startar frågar programmet användaren vilka banor som skall +köras samt vilken referenstid de ska ha. + +Krav 15. Systemet ställer de frågor till användaren via touch displayen. + +Krav 16. Enligt de två givna testerna åkte bilarna inte av banan. + +Krav 17. När programmet startas frågar programmet användaren vilken referenstid +som ska strävas efter, detta görs i ett intervall ]12,15[ med justeringar på 0,5 +sekunder upp eller ner. + +Krav 18. Enligt de två visade körningarna stannade inte bilarna under något +tillfälle. + +Krav 19. + +Krav 20. De två testkörningarna resulterade i en standardavvikelse på 0,22 +respektive 0,24. Kravet är delvis uppnått. + +Krav 21. De två testkörningarna resulterade i att bilarna överskred gränsen på +0.5 ett fåtal gånger, kravet delvsi uppnått. + +Krav 22. Kraven var delvis uppfyllda efter 5 varv. + +Krav 23. Kravet struket av beställaren. + +Krav 24. Resultaten sparades och delades med beställaren via email. + +Krav 25. Efter avslutad körning visas statistik i form av de plottar som önskas +i kravspecifikationen. + +Krav 26. Efter avslutad körning sparas alla data i en fil. + +Krav 27. Längre upp i dokumentet beskrivs hur tidtagningen gick till och hur den +validerades. + +Krav 28. + +Krav 29. Deltagande i projektet har angett den tid de jobbat efter varje moment. + +Krav 30. Handledaren har inte bidragit med hjälp i mer än 25h. + +Krav 31. Efter att programmet avslutas visas den cykel som tog längst tid, då +den inte passerar 0,1 sekunder. + +Krav 32. Efter två veckor av projektet godkänndes projektplanen. + +Krav 33. Under projektvecka fyra godkändes designspecifikationen av beställaren. + +Krav 34. Under projektvecka fem redovisade projektgruppen kraven 2, 4, 31 samt 25. + +Krav 35. Under projektvecka sju redovisade projektgruppen kraven 3, 5, 10, 17 +samt 18. Även de krav som uppfylldes under bp.4a visades. + +Krav 36. Under projektvecka nio redovisade projektgruppen samtliga Lrav som +uppfyllts tidigare samt alla krav i avsnitt 3.2. + +Krav 37. Programvaran levererades under projektvecka 10. + +Krav 38. Den tekniska dokumentationen levererades under projektvecka 10. + +Krav 39. Under projektvecka tio hölls en slutleverans där gruppen visade upp +samtliga krav och höll en presentation över vad hur arbetet har sett ut. + +Krav 40. Inför varje beslutspunkt har önskade dokument varit beställaren +tillhandahållna innan 09:00 arbetsdagen innan mötet. + +Krav 41. Projektledaren har delat tidsrapportering samt eventuella +mötesprotokoll vid rätt tid de flesta av projektveckorna, kravet är därför +delvis uppnått. + +Krav 42. Alla dokument samt all programvara har samlats i gitlab minst en gång i +veckan sedan projektvecka 2. + +Krav 43. Projektplan, designspecifikation, mötesprotokoll, teknisk +dokumentation, testprotokoll samt efterstudie har gjorts. + +Krav 44. Dokument samt programvaran har bearbetats samt lagrats på +http://gitlab.ida.liu.se/. + +Krav 45. Alla dokument framtagna av projektgruppen har levererats i pdf-format. + +Krav 46. Alla dokument skrivna av projektgruppen är är skrivet på formell +korrekt svenska. + +Krav 47. Dokumentationen innehåller, + +Krav 48. Programmet är uppdelat i funktioner. + +Krav 49. Projektgruppen har samtlats på mint ett möte i veckan där alla +medlemmar har närvarat. Handledaren har inte närvarat vilket resulterar i ett +delvis uppnått krav. + \end{document} -- cgit v1.2.1 From d070bbac594d0f5007aa6fec3a538506740f2fb0 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sat, 30 Nov 2019 13:52:34 +0100 Subject: Lade till bakgrund --- Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt b/Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt new file mode 100644 index 0000000..bcd9bbf --- /dev/null +++ b/Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt @@ -0,0 +1 @@ +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. -- cgit v1.2.1 From 96e58a8f7c80cad4fd08b4673da88bdfe48cfd4a Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sat, 30 Nov 2019 13:57:18 +0100 Subject: =?UTF-8?q?La=20till=20bakgrund=20samt=20syfte=20och=20m=C3=A5l=20?= =?UTF-8?q?till=20root?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 55bf363..a9df6bc 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -82,8 +82,14 @@ \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{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}). +Med hjälp av informationen som har kunnat läsas av från givarna så skulle det +skapas ett system som skulle få diverse bilar att köra runt på de 2 olika +banorna på en vald referenstid. Huvudmålet är indelat i flera olika krav. +Se avsnitt med krav. \section{Begrepp och systemöversikt} \section{Systembeskrivning} -- cgit v1.2.1 From 13131206db0b0e3b6d9e7f5011eb22ce9c8ce26b Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sat, 30 Nov 2019 13:58:27 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20ett=20litet=20fel=20i=20root?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index a9df6bc..f1308c3 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -89,7 +89,7 @@ Syftet med projektet var att konstruera ett system som kör bilar runt en bilban Med hjälp av informationen som har kunnat läsas av från givarna så skulle det skapas ett system som skulle få diverse bilar att köra runt på de 2 olika banorna på en vald referenstid. Huvudmålet är indelat i flera olika krav. -Se avsnitt med krav. +Se avsnitt 3.2 i kravspecifikationen. \section{Begrepp och systemöversikt} \section{Systembeskrivning} -- cgit v1.2.1 From f089f4bf674abef503ac311c2b5d9984e566a15c Mon Sep 17 00:00:00 2001 From: Albin Date: Sat, 30 Nov 2019 14:18:48 +0100 Subject: Missade givare --- .../Albins txt filer/missade givare.txt | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt b/Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt new file mode 100644 index 0000000..f22436b --- /dev/null +++ b/Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt @@ -0,0 +1,26 @@ +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\_plus0} = 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. I så fall ä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. -- cgit v1.2.1 From 7cfc8691fb8576a8366e1fff569f5e2f072865ab Mon Sep 17 00:00:00 2001 From: Albin Date: Sat, 30 Nov 2019 14:57:51 +0100 Subject: =?UTF-8?q?Sm=C3=A5=C3=A4ndringar=20i=20mina=20texter=20och=20lade?= =?UTF-8?q?=20till=20missade=20givare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 39 +++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index f1308c3..15aed79 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -138,7 +138,7 @@ när en givare inte har passerats. Under första varvet görs endast det första 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. emp{car.segment}, som +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}). @@ -153,14 +153,16 @@ 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 * 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 +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}. @@ -173,9 +175,7 @@ i \emph{car.u}. 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 +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 @@ -183,7 +183,7 @@ 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öje \emph{car.constant} +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} @@ -216,6 +216,31 @@ 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. + \section{Programslut} display\_post\_race\_graphs(seg\_times1, seg\_times2, lap\_times1, lap\_times2, -- cgit v1.2.1 From 39eb71db61ce8762ee694130e3b10faee2e92727 Mon Sep 17 00:00:00 2001 From: Albin Date: Sat, 30 Nov 2019 15:36:18 +0100 Subject: =?UTF-8?q?Tankar=20inf=C3=B6r=20m=C3=B6te=20s=C3=B6ndag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...gar fr\303\245n genoml\303\244sning av dok.txt" | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 "Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar fr\303\245n genoml\303\244sning av dok.txt" (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar fr\303\245n genoml\303\244sning av dok.txt" "b/Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar fr\303\245n genoml\303\244sning av dok.txt" new file mode 100644 index 0000000..6190af3 --- /dev/null +++ "b/Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar fr\303\245n genoml\303\244sning av dok.txt" @@ -0,0 +1,64 @@ +Allmänt + Ska funktioner skrivas do_car() eller do_car? + +Bakgund + "Detta projeket" + Vad är en givare? +Begrepp och systemöversikt + Tom +Systembeskrivning + Innan start + "displayenm" + "0,x" är inte fint + Uppstart + automatisk eller autonom? + Funktioner och variabler inte kursiva + Är höjningen värkligen kontinuelig? Mattematiskt nej, språkligt ja + Stor bokstav ny mening (rad 4, -2) + Körning + Position + snyggare matte + Governor + hänvisa till forcasts? + Förändringar är större ju mer ifrån tiden är + Avslut + Hur avslutas programmet? +Händelser +Liten beskrivning av vad som medas med händelser? + Avslutning av körning + "avslutas (först) när båda bilarna står stilla" +Programslut + kursiv stil +Handhavande + bättre beskrivning av sökvägen. + "Dyker upp" lite informellt + "När koden körs i Matlab är dags att" Va? + Ställ bilarna på banan? + "välja antalet banor" Borde bara "välja de banor" + inte punkt före "Samt knappen Avsluta." Citattecken runt knappnamn? + "varvtid" Ska vara referenstid (car.ref_time) + "skriv in" informellt +Funktioner och filer + System + Format behöver göras om + kursiv stil på funktioner? + Mellanslag efter komma? + main.m lite mer förklaring + Display + format för koordinater? + Används alla dessa? Typ flashing_area_with_pattern +Kravbeskrivning + Referera till kravspecen + Gör om till tabell + Referera till var i Tekniska dokumentationen detta beskrivs + Ibland stämmer det inte, tex krav 7 + 8 Vad är en styrsignal? + 9 typo + 17 är inte intervallet slutet? + 21 typo + 36 typo + 38 inte gjord + 43 inte gjord + 44 fel adress, inte ida + 47 ? + \ No newline at end of file -- cgit v1.2.1 From 1b0af267413cfc035ebcc8481c1ff4f5cbac3604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Sat, 30 Nov 2019 21:57:26 +0100 Subject: =?UTF-8?q?Justerade=20text=20f=C3=B6r=20syfte=20och=20m=C3=A5l=20?= =?UTF-8?q?och=20uppstart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 15aed79..37b4b02 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -87,7 +87,7 @@ Detta projektet har utförts med hjälp av en bilbana samt flera bilar, givare, Syftet med projektet var att konstruera ett system som kör bilar 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å diverse bilar att köra runt på de 2 olika +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. \section{Begrepp och systemöversikt} @@ -106,7 +106,7 @@ trycktes i och ändrar på variabler enligt de knapptryck som skett. \subsection{Uppstart} -Vid automatisk körning körs funktionen "do\_boot" vars syfte är att få fram en +Vid automatisk körning körs funktionen \emph{do\_boot} vars syfte är att få fram en initierande konstant ("car\_constant") 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 -- cgit v1.2.1 From a54d1633dd905b2f02b850df8f5170ffa6c57fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Sat, 30 Nov 2019 22:05:56 +0100 Subject: Lite mer just i uppstart --- Dokument/Teknisk Dokumentation/root.tex | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 37b4b02..7ea3286 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -107,17 +107,16 @@ 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 ("car\_constant") för den bil som står på banan. då bilen är +initierande konstant (\emph{car\_constant}) 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å höjs inte konstanten lika mycket -och gör det desto mer sällan. vid passering av den andra givaren så slutar +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 segment 3 för att få en uträknad tid. med +tilldelade konstanten, åka igenom segment 3 för att få en uträknad tid. Med tiden det tagit för bilen att ta sig igenom segment 3 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 +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. -- cgit v1.2.1 From d30684f28d1c3874464c7d558514a0885b1a6a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Sat, 30 Nov 2019 22:27:04 +0100 Subject: =?UTF-8?q?Omformulering=20i=20syfte=20och=20m=C3=A5l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 7ea3286..d667048 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -84,7 +84,7 @@ \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 +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 @@ -107,15 +107,15 @@ 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}) för den bil som står på banan. då bilen är +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 segment 3 för att få en uträknad tid. Med -tiden det tagit för bilen att ta sig igenom segment 3 räknar funktionen ut +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 +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. -- cgit v1.2.1 From 3e69f622238df7aa1a030a611ed702ab95fd78c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Sat, 30 Nov 2019 22:51:26 +0100 Subject: =?UTF-8?q?Lade=20till=20txt=20om=20tankar=20vid=20l=C3=A4sning=20?= =?UTF-8?q?av=20den=20tekniska=20dokumentationen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Davids txt filer/Tankar om TD.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt new file mode 100644 index 0000000..daaf081 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt @@ -0,0 +1,18 @@ +Något mer än "Teknisk dokumentation" som titel + +1.1 +- "dator inkopplad till givarna på banan" -> "en dator som styrenhet"? + +3.2 +- "autonom" istället för "automatisk"? +- Kanske göra grafen på den upptrappade konstanthöjning för bootstrapen i latex? + +3.3.1 +- Överflödigt att skriva hur koden ser ut "car.new_check_point ..." + +En tanke är att skippa skriva alla funktioner och variabler helt och hållet när +vi beskriver vad vår kod gör. Att istället få läsaren att förstå vad som händer +med bilen på banan och kanske inte så mycket vad som händer med våra konstanter +och variabler i koden. Det görs väl någon annanstans? + +Lite stavfel här och där \ No newline at end of file -- cgit v1.2.1 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{} --- .../appendix/01-handhavande.tex | 36 ++ .../Teknisk Dokumentation/appendix/02-funktion.tex | 281 +++++++++ .../Teknisk Dokumentation/appendix/03-material.tex | 10 + .../appendix/03-testprocedur.tex | 0 .../Teknisk Dokumentation/appendix/04-tester.tex | 0 .../appendix/04-testprotokoll.tex | 0 .../appendix/05-kravbeskrivning.tex | 128 ++++ Dokument/Teknisk Dokumentation/root.tex | 648 +-------------------- .../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 + 17 files changed, 643 insertions(+), 672 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/appendix/03-material.tex delete mode 100644 Dokument/Teknisk Dokumentation/appendix/03-testprocedur.tex create mode 100644 Dokument/Teknisk Dokumentation/appendix/04-tester.tex delete mode 100644 Dokument/Teknisk Dokumentation/appendix/04-testprotokoll.tex 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') diff --git a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex index e69de29..40e68f5 100644 --- a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex +++ b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex @@ -0,0 +1,36 @@ +\section{Handhavande} +Proceduren till handhavande för Matlab: + +Starta Matlab 2015b. Observera att användaren måste använda datorn som finns +inne i bilbanerummet och som är inkopplade till bilbanan. Väl inne i Matlab +öppna filvägen för hårdisk X: och hitta sökvägen till yc4\_2019. + +Därefter markera och högerklicka på mappen kod och där kommer ett alternativ som +heter Add To Path. Välj sedan Select Folders And Subfolders som dyker upp när +musen pekar på Add To Path. Därefter expandera bilbana mappen följt av yc4 +mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn +i Matlab. + +När koden körs i Matlab är dags att starta bilarna detta görs genom att via den +externa touch displayen. Där finns möjligheterna att välja antalet banor som ska +köras samt möjligheten att justera referenstiden. Kryssa även i om någon av +banorna ska köras manuellt. Därefter starta genom att trycka på knappen nere i +det högra hörnet på displayen. + +När programmet ska avslutas klickar användaren i kommentar fönstret i Matlab och +klickar på q om bilen ska stanna direkt. Om användaren istället vill att +bilen/bilarna ska stanna precis innan målgivaren klickar användaren på s +(observera att detta fungerar endast efter varv ett). + +När programmet avslutas finns möjligheterna att se varvtiden/varvtiderna, +segmentstiden/segmentstiderna samt att avsluta. Detta väljs utifrån de tre +knapparna längst ner på displayen. Dessa knappar är Varv för att se varvtid, +Segment för att se segmentstider. Samt knappen Avsluta. + +Om knappen Varv väljs kommer information såsom “target” vilket är vald varvtid. +“Mean” som är genomsnittlig varvtid och “Stdev” är standardavvikelsen. För att +se varvtiden för den andra banan klicka på knappen uppe i högra hörnet. + +Om programmet kraschar: Om programmet kraschar öppna main.m. Därefter skriv in +ctrl och enter i avgränsningen som heter "\%\% END OF RACE" som finns i slutet av +koden main.m. diff --git a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex index e69de29..ea97a26 100644 --- a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex +++ b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex @@ -0,0 +1,281 @@ +\section{Funktioner och filer} + +\subsection{System} + +choose\_position(position, segment, track, track\_len) + +Körs när en givare passerats. Gör en bedömning om en givare (eller flera) har +missats genom att kontrollera vilken givare som är närmast den nuvarande +uppskattade position och kompenserar om en givare bedöms ha missats. + +clamp(n, m, M) + +En hjälpfunktion som returnerar n om $m < n < M$, annars m om $n < m$, annars M +om $n > M$. + +detect\_missed(position, segment, track, track\_len) + +Returnerar true om position ligger utanför det nuvarande segmentet. + +do\_boot(car, boot) + +Anropas en gång per programcykel i den så kallade boostrap-fasen. Se ANNAN DEL +AV TEXTEN för information. + +do\_car(car, t, displa\_data, boot) + +Anropas en gång per programcykel. Se ANNAN DEL AV TEXTEN och EN ANNAN DEL +AV TEXTEN för information om hur en programcykel ser ut och NÅGOT MER. + +do\_gov(car) + +Anropas varje gång en givare passerats. Vid målgivaren jämförs referenstiden och +den förra varvtiden och car.constant anpassas efter differensen mellan dem. Om +differensen är högre ändras car.constant mer, och vice versa om differensen är +låg. Vid givare 5 och 8 jämförs referenstiden och en uppskattning av hur lång +tid det nuvarande varvet troligen kommer ta. Se EN ANNAN DEL AV TEXTEN för +mer information. + +fit\_percents(percents, lap\_time, seg\_times) + +Anropas vid varje nytt varv. Räknar ut den procentuella tiden varje segment tog +det förra varvet och sparar medelvärdet mellan den förra procentsatsen och den +nya, uträknade procentsatsen. Procentsatsen normeras sedan så summan är 1 +(100%). + +format\_seg\_times(car) + +Anropas när körningen avslutas. Returnerar den genomsnittliga tiden för varje +segment. + +get\_aprox\_v(cur\_seg, car) + +Anropas varje programcykel. Uppskattar bilens nuvarande hastighet genom att +dividera den senast uppmätta segmentstiden med segmentets längd. + +get\_new\_u(new\_v, seg\_constant + +FLYTTA BERÄKNINGEN TILL DO\_CAR, BEHÖVER INTE VARA EN EGEN FUNKTION + +get\_new\_v(position, list) + +Anropas varje programcykel. Söker igenom bankartan och returnerar värdet v som +matchar position. + +get\_position(aprox\_v, prev\_p, delta\_t) + +Anropas varje programcykel. Räknar ut hur långt bilen rört sig sedan senaste +programcykeln. + +get\_seg\_constant(position, lap\_constants, track, track\_len) + +TA BORT + +get\_time\_as\_string(millis) + +Omvandlar en mängd millisekunder till formatet "mm:ss.s". Till exempel omvandlas 1250 +ms till "00:01.3" och 11240 till "00:11.2". + +main.m + +Huvudskriptet som startar hela systemet. + +\subsection{Display} + +bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value, type, pattern): + +Skapar ett stapeldiagram med ett hörn i (*x1*, *y1*) och ett diagonellt +hörn i (*x2*, *y2*). *direction* är en av 'O', 'U', 'L' och 'R' och +bestämmer åt vilket håll "upp" är på stapeln. 'O' står för upp ('oben' +på tyska), 'U' står för ner ('unter' på tyska), 'L' står för vänster +('links') och 'R' står för höger ('rechts'). Värdet stapeldiagrammet ska +visa specifieras med *update\_bar\_graph*. *start\_value* och +*end\_value* bestämmer vad som ska vara noll- respektive maxvärde för +stapeldiagrammet. *no* är stapeldiagrammets nummer och behöver +specifieras när stapeldiagrammets värde ska uppdateras. *type* sätts +till 0 för en enkel stapel och 1 för en stapel inuti en ram. + +box(x1, y1, x2, y2, n1) + +Ritar en rektangel med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) +och mönster-nummer *n1*. + +clear\_display() + +Rensa displayen. + +continue\_line(x2, y2) + +Fortsätt en linje från den senast specifierade linjens slut till (*x2*, +*y2*). + +delete\_area(x1, y1, x2, y2) + +Ta bort (släck) alla pixlar i det rektangulära området mellan (*x1*, +*y1*) och (*x2*, *y2*). + +draw\_line(x1, y1, x2, y2) + +Rita en linje mellan (*x1*, *y1*) och (*x2*, *y2*). + +draw rectangle(x1, y1, x2, y2) + +Rita en rektangel (ej ifylld) mellan (*x1*, *y1*) och (*x2*, *y2*). + +fill\_area(x1, y1, x2, y2) + +Tänd alla pixlar i det rektangulära området mellan (*x1*, *y1*) och +(*x2*, *y2*). + +fill\_area\_with\_pattern(x1, y1, x2, y2, n1) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +mönster *n1*. + +fill\_display() + +Tänd alla pixlar på displayen. + +flashing\_area(x1, y1, x2, y2) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +blinkande pixlar. Blinkintervallet kan sättas med *set\_flashing\_time*. + +flashing\_area\_with\_pattern(x1, y1, x2, y2) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +blinkande pixlar i ett mönster. Blinkintervallet kan sättas med +*set\_flashing\_time*. + +invert\_area(x1, y1, x2, y2) + +Tänd alla släckta pixlar och släck alla tända pixlar i det rektangulära +området mellan (*x1*, *y1*) och (*x2*, *y2*). + +invert\_display() + +Tänd alla släcka pixlar och släck alla tända pixlar på hela displayen. + +key(x1, y1, x2, y2, down\_code, up\_code, just, text) + +Skapa en tryckbar knapp (till skillnad från en omkopplare, se +*toggle(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och +texten *text*. Hur texten justeras beror på *just* där 'R' gör texten +högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör +texten vänsterjusterad ('left'). Om knappen trycks ned läggs +*down\_code* i displayens interna minne och om knappen släpps läggs +*up\_code* i displayens interna minne. + +point(x1, y1) + +Rita en punkt i (*x1*, *y1*). Punktens storlek kan anpassas med +*set\_point\_size*. + +put\_text(x, y, justification, text) + +Skriv ut texten *text* i (*x*, *y*). Hur texten justeras beror på +*justification* där 'R' gör texten högerjusterad ('right'), 'C' gör +texten centerjusterad och 'L' gör texten vänsterjusterad ('left'). Om +*justification* är 'R' bestämmer *x* och *y* textens övre högra +koordinat, om *justification* är 'C' bestämmer *x* och *y* textens +mittre koordinat och om *justification* är 'L' bestämmer *x* och *y* +textens övre vänstra koordinat. + +redraw\_bar\_graph(num) + +Tvinga stapeldiagram *num* att ritas om. + +remove\_flashing\_area(x1, y1, x2, y2) + +Ta bort blinkade pixlar i det rektangulära området mellan (*x1*, *y1*) +och (*x2*, *y2*). + +request\_bar\_graph\_value(num) + +Lägg nuvarande värdet för stapeldiagram *num* i displayens interna +minne. + +restore\_display\_from\_clipboard() + +Flytta innehållet från displayens urklipp till displayen. + +restore\_display\_from\_clipboard\_to\_point(x1, y1) + +Flytta innehållet från displayens urklipp till displayen med övre +vänstra hörn i (*x1*, *y1*). Spara ett område med +\_save\_area\_to\_clipboard(...). + +save\_area\_to\_clipboard(x1, y1, x2, y2) + +Kopiera innehållet i den rektangel mellan (*x1*, *y1*) och (*x2*, *y2*) +till displayens urklipp. Återställ med +*restore\_display\_from\_clipboard\_to\_point(...)*. + +save\_display\_to\_clipboard() + +Kopiera displayens nuvarande innehåll till displayens urklipp. Återställ +med *restore\_display\_from\_clipboard()*. + +set\_display\_visible(visible) + +Sätt om displayen ska vara synlig (*visible* = true) eller om displayen +ska vara osynlig (*visible* = false). Att displayen är osynlig innebär +att innehållet inte syns men finns kvar i bakgrunden och kan visas igen +om *set\_display\_visible(true)* skickas. + +set\_drawing\_mode(n1) + +Sätt displayens ritläge. *n1* = 1 innebär att pixlar slås på eller av +(som vanligt) enligt kommandot som skickas, *n1* = 2 innebär att pixlar +enbart slås av (som ett suddgummi) och *n1* = 3 innebär att pixlar +inverteras (släckta pixlar slås på och tända pixlar stängs av) + +set\_flashing\_time(n1) + +Sätt intervallet blinkande objekt blinkar i. *n1* är ett intervall i +tiondelar av en sekund mellan 0,1 sekunder och 1,5 sekunder. + +set\_line\_pattern(n1) + +Sätt mönstret linjer ritas ut med. + +set\_point\_size(n1, n2) + +Sätt storleken på punkter och linjer som ritas ut. *n1* är storleken i +x-led (mellan 1 och 15 pixlar) och *n2* är storleken i y-led (mellan 1 +och 15 pixlar). + +set\_text\_flashing(n1) + +Sätt om ny text som skrivs ut ska blinka eller inte. *n1* = 1 slår på +blinkande och *n1* = 2 stänger av blinkande. + +set\_text\_font(font\_num) + +Sätt typsnittet på ny text som skrivs ut. Se *REF* för information om de +olika typsnitten. + +set\_text\_zoom(x\_scale, y\_scale) + +Sätt skalfaktorn för ny text som skrivs ut. *x\_scale* är skalfaktorn i +x-led (mellan x1 och x8) och *y\_scale* är skalfaktorn i y-led (mellan +x1 och x8). + +set\_touch\_sound\_response(state) + +Sätt om displayen ska göra ljud när knappar trycks ned. *state* = 1 slår +på ljudet och *state* = 0 stänger av ljudet. + +toggle(x1, y1, x2, y2, down\_code, up\_code, just, text) + +Skapa en tryckbar omkopplare (till skillnad från en knapp, se +*key(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och +texten *text*. Hur texten justeras beror på *just* där 'R' gör texten +högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör +texten vänsterjusterad ('left'). Om knappen aktiveras läggs *down\_code* +i displayens interna minne och om knappen avaktiveras läggs *up\_code* i +displayens interna minne. + +update\_bar\_graph(num, val) + +Skicka värdet *val* till stapeldiagram *num*. diff --git a/Dokument/Teknisk Dokumentation/appendix/03-material.tex b/Dokument/Teknisk Dokumentation/appendix/03-material.tex new file mode 100644 index 0000000..e5c7df5 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/appendix/03-material.tex @@ -0,0 +1,10 @@ +\section{Material} + +Projektgruppen har av beställaren tillhandahållits ett lab med följande utrustning: + +\begin{itemize} + \item En bilbana utrustad med givare vars funktion är att detektera passerade bilar. + \item Två datorer + \item En display med touchfunktionallitet. + \item Ett antal bilar +\end{itemize} diff --git a/Dokument/Teknisk Dokumentation/appendix/03-testprocedur.tex b/Dokument/Teknisk Dokumentation/appendix/03-testprocedur.tex deleted file mode 100644 index e69de29..0000000 diff --git a/Dokument/Teknisk Dokumentation/appendix/04-tester.tex b/Dokument/Teknisk Dokumentation/appendix/04-tester.tex new file mode 100644 index 0000000..e69de29 diff --git a/Dokument/Teknisk Dokumentation/appendix/04-testprotokoll.tex b/Dokument/Teknisk Dokumentation/appendix/04-testprotokoll.tex deleted file mode 100644 index e69de29..0000000 diff --git a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex index e69de29..93615da 100644 --- a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex @@ -0,0 +1,128 @@ +\section{Kravbeskrivning} + +Krav 1. Systemet är helt skrivet i matlab. + +Krav 2. Systemet kan startas oavsett bil på banan.. + +Krav 3. Systemet klarar av att missa givare. + +Krav 4. När ett varv har körts så uppdaterar displayen vilket varv som nyss +genomfördes samt varvtiden. + +Krav 5. Under programmets gång visas det nuvarande gaspådraget. + +Krav 6. Efter att programmet avslutats visas information på displyen. + +Krav 7. Systemet kan köras oavsett vilken bil som placeras på banan. + +Krav 8. Programmet hanterar driftsfall genom att kompensera en större eller +mindre styrsignal. + +Krav 9. Om systemet inte får en nt insignal i form av en passerad givare inom +tio sekunder pausas systemet och användaren får frågan om denne vill fortsätta +eller avsluta. + +Krav 10. Användaren har alternativet att köra en eller båda banorna samt hur +banorna ska köras, autonomnt eller manuellt. Det manuella alternativet uppfyller +inte krav 8 på beslut av beställaren. + +Krav 11. Kravet struket från beslut av beställare. + +Krav 12. Tillsammans med frågan om bana ett eller två ska köras frågar +programmet systemet om banan ska köras manuellt eller autonomt. + +Krav 13. För att starta programmet krävs att man kan öppna matlab och starta +programmet. Därefter kan användaren starta med hjälp av displayen. + +Krav 14. När systemet startar frågar programmet användaren vilka banor som skall +köras samt vilken referenstid de ska ha. + +Krav 15. Systemet ställer de frågor till användaren via touch displayen. + +Krav 16. Enligt de två givna testerna åkte bilarna inte av banan. + +Krav 17. När programmet startas frågar programmet användaren vilken referenstid +som ska strävas efter, detta görs i ett intervall ]12,15[ med justeringar på 0,5 +sekunder upp eller ner. + +Krav 18. Enligt de två visade körningarna stannade inte bilarna under något +tillfälle. + +Krav 19. + +Krav 20. De två testkörningarna resulterade i en standardavvikelse på 0,22 +respektive 0,24. Kravet är delvis uppnått. + +Krav 21. De två testkörningarna resulterade i att bilarna överskred gränsen på +0.5 ett fåtal gånger, kravet delvsi uppnått. + +Krav 22. Kraven var delvis uppfyllda efter 5 varv. + +Krav 23. Kravet struket av beställaren. + +Krav 24. Resultaten sparades och delades med beställaren via email. + +Krav 25. Efter avslutad körning visas statistik i form av de plottar som önskas +i kravspecifikationen. + +Krav 26. Efter avslutad körning sparas alla data i en fil. + +Krav 27. Längre upp i dokumentet beskrivs hur tidtagningen gick till och hur den +validerades. + +Krav 28. + +Krav 29. Deltagande i projektet har angett den tid de jobbat efter varje moment. + +Krav 30. Handledaren har inte bidragit med hjälp i mer än 25h. + +Krav 31. Efter att programmet avslutas visas den cykel som tog längst tid, då +den inte passerar 0,1 sekunder. + +Krav 32. Efter två veckor av projektet godkänndes projektplanen. + +Krav 33. Under projektvecka fyra godkändes designspecifikationen av beställaren. + +Krav 34. Under projektvecka fem redovisade projektgruppen kraven 2, 4, 31 samt 25. + +Krav 35. Under projektvecka sju redovisade projektgruppen kraven 3, 5, 10, 17 +samt 18. Även de krav som uppfylldes under bp.4a visades. + +Krav 36. Under projektvecka nio redovisade projektgruppen samtliga Lrav som +uppfyllts tidigare samt alla krav i avsnitt 3.2. + +Krav 37. Programvaran levererades under projektvecka 10. + +Krav 38. Den tekniska dokumentationen levererades under projektvecka 10. + +Krav 39. Under projektvecka tio hölls en slutleverans där gruppen visade upp +samtliga krav och höll en presentation över vad hur arbetet har sett ut. + +Krav 40. Inför varje beslutspunkt har önskade dokument varit beställaren +tillhandahållna innan 09:00 arbetsdagen innan mötet. + +Krav 41. Projektledaren har delat tidsrapportering samt eventuella +mötesprotokoll vid rätt tid de flesta av projektveckorna, kravet är därför +delvis uppnått. + +Krav 42. Alla dokument samt all programvara har samlats i gitlab minst en gång i +veckan sedan projektvecka 2. + +Krav 43. Projektplan, designspecifikation, mötesprotokoll, teknisk +dokumentation, testprotokoll samt efterstudie har gjorts. + +Krav 44. Dokument samt programvaran har bearbetats samt lagrats på +http://gitlab.ida.liu.se/. + +Krav 45. Alla dokument framtagna av projektgruppen har levererats i pdf-format. + +Krav 46. Alla dokument skrivna av projektgruppen är är skrivet på formell +korrekt svenska. + +Krav 47. Dokumentationen innehåller, + +Krav 48. Programmet är uppdelat i funktioner. + +Krav 49. Projektgruppen har samtlats på mint ett möte i veckan där alla +medlemmar har närvarat. Handledaren har inte närvarat vilket resulterar i ett +delvis uppnått krav. diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index d667048..3244fac 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -80,649 +80,21 @@ \tableofcontents \cleardoublepage -\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{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. -\section{Begrepp och systemöversikt} -\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. - -\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. - -\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. - +\input{text/01-inledning} +\input{text/02-system} +\input{text/03-systembeskrivning} +\input{text/04-events} +\input{text/05-end} \bibliography{references} \cleardoublepage \appendix -\section{Handhavande} -Proceduren till handhavande för Matlab: - -Starta Matlab 2015b. Observera att användaren måste använda datorn som finns -inne i bilbanerummet och som är inkopplade till bilbanan. Väl inne i Matlab -öppna filvägen för hårdisk X: och hitta sökvägen till yc4\_2019. - -Därefter markera och högerklicka på mappen kod och där kommer ett alternativ som -heter Add To Path. Välj sedan Select Folders And Subfolders som dyker upp när -musen pekar på Add To Path. Därefter expandera bilbana mappen följt av yc4 -mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn -i Matlab. - -När koden körs i Matlab är dags att starta bilarna detta görs genom att via den -externa touch displayen. Där finns möjligheterna att välja antalet banor som ska -köras samt möjligheten att justera referenstiden. Kryssa även i om någon av -banorna ska köras manuellt. Därefter starta genom att trycka på knappen nere i -det högra hörnet på displayen. - -När programmet ska avslutas klickar användaren i kommentar fönstret i Matlab och -klickar på q om bilen ska stanna direkt. Om användaren istället vill att -bilen/bilarna ska stanna precis innan målgivaren klickar användaren på s -(observera att detta fungerar endast efter varv ett). - -När programmet avslutas finns möjligheterna att se varvtiden/varvtiderna, -segmentstiden/segmentstiderna samt att avsluta. Detta väljs utifrån de tre -knapparna längst ner på displayen. Dessa knappar är Varv för att se varvtid, -Segment för att se segmentstider. Samt knappen Avsluta. - -Om knappen Varv väljs kommer information såsom “target” vilket är vald varvtid. -“Mean” som är genomsnittlig varvtid och “Stdev” är standardavvikelsen. För att -se varvtiden för den andra banan klicka på knappen uppe i högra hörnet. - -Om programmet kraschar: Om programmet kraschar öppna main.m. Därefter skriv in -ctrl och enter i avgränsningen som heter "\%\% END OF RACE" som finns i slutet av -koden main.m. - -\section{Funktioner och filer} - -\subsection{System} - -choose\_position(position, segment, track, track\_len) - -Körs när en givare passerats. Gör en bedömning om en givare (eller flera) har -missats genom att kontrollera vilken givare som är närmast den nuvarande -uppskattade position och kompenserar om en givare bedöms ha missats. - -clamp(n, m, M) - -En hjälpfunktion som returnerar n om $m < n < M$, annars m om $n < m$, annars M -om $n > M$. - -detect\_missed(position, segment, track, track\_len) - -Returnerar true om position ligger utanför det nuvarande segmentet. - -do\_boot(car, boot) - -Anropas en gång per programcykel i den så kallade boostrap-fasen. Se ANNAN DEL -AV TEXTEN för information. - -do\_car(car, t, displa\_data, boot) - -Anropas en gång per programcykel. Se ANNAN DEL AV TEXTEN och EN ANNAN DEL -AV TEXTEN för information om hur en programcykel ser ut och NÅGOT MER. - -do\_gov(car) - -Anropas varje gång en givare passerats. Vid målgivaren jämförs referenstiden och -den förra varvtiden och car.constant anpassas efter differensen mellan dem. Om -differensen är högre ändras car.constant mer, och vice versa om differensen är -låg. Vid givare 5 och 8 jämförs referenstiden och en uppskattning av hur lång -tid det nuvarande varvet troligen kommer ta. Se EN ANNAN DEL AV TEXTEN för -mer information. - -fit\_percents(percents, lap\_time, seg\_times) - -Anropas vid varje nytt varv. Räknar ut den procentuella tiden varje segment tog -det förra varvet och sparar medelvärdet mellan den förra procentsatsen och den -nya, uträknade procentsatsen. Procentsatsen normeras sedan så summan är 1 -(100%). - -format\_seg\_times(car) - -Anropas när körningen avslutas. Returnerar den genomsnittliga tiden för varje -segment. - -get\_aprox\_v(cur\_seg, car) - -Anropas varje programcykel. Uppskattar bilens nuvarande hastighet genom att -dividera den senast uppmätta segmentstiden med segmentets längd. - -get\_new\_u(new\_v, seg\_constant - -FLYTTA BERÄKNINGEN TILL DO\_CAR, BEHÖVER INTE VARA EN EGEN FUNKTION - -get\_new\_v(position, list) - -Anropas varje programcykel. Söker igenom bankartan och returnerar värdet v som -matchar position. - -get\_position(aprox\_v, prev\_p, delta\_t) - -Anropas varje programcykel. Räknar ut hur långt bilen rört sig sedan senaste -programcykeln. - -get\_seg\_constant(position, lap\_constants, track, track\_len) - -TA BORT - -get\_time\_as\_string(millis) - -Omvandlar en mängd millisekunder till formatet "mm:ss.s". Till exempel omvandlas 1250 -ms till "00:01.3" och 11240 till "00:11.2". - -main.m - -Huvudskriptet som startar hela systemet. - -\subsection{Display} - -bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value, type, pattern): - -Skapar ett stapeldiagram med ett hörn i (*x1*, *y1*) och ett diagonellt -hörn i (*x2*, *y2*). *direction* är en av 'O', 'U', 'L' och 'R' och -bestämmer åt vilket håll "upp" är på stapeln. 'O' står för upp ('oben' -på tyska), 'U' står för ner ('unter' på tyska), 'L' står för vänster -('links') och 'R' står för höger ('rechts'). Värdet stapeldiagrammet ska -visa specifieras med *update\_bar\_graph*. *start\_value* och -*end\_value* bestämmer vad som ska vara noll- respektive maxvärde för -stapeldiagrammet. *no* är stapeldiagrammets nummer och behöver -specifieras när stapeldiagrammets värde ska uppdateras. *type* sätts -till 0 för en enkel stapel och 1 för en stapel inuti en ram. - -box(x1, y1, x2, y2, n1) - -Ritar en rektangel med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) -och mönster-nummer *n1*. - -clear\_display() - -Rensa displayen. - -continue\_line(x2, y2) - -Fortsätt en linje från den senast specifierade linjens slut till (*x2*, -*y2*). - -delete\_area(x1, y1, x2, y2) - -Ta bort (släck) alla pixlar i det rektangulära området mellan (*x1*, -*y1*) och (*x2*, *y2*). - -draw\_line(x1, y1, x2, y2) - -Rita en linje mellan (*x1*, *y1*) och (*x2*, *y2*). - -draw rectangle(x1, y1, x2, y2) - -Rita en rektangel (ej ifylld) mellan (*x1*, *y1*) och (*x2*, *y2*). - -fill\_area(x1, y1, x2, y2) - -Tänd alla pixlar i det rektangulära området mellan (*x1*, *y1*) och -(*x2*, *y2*). - -fill\_area\_with\_pattern(x1, y1, x2, y2, n1) - -Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med -mönster *n1*. - -fill\_display() - -Tänd alla pixlar på displayen. - -flashing\_area(x1, y1, x2, y2) - -Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med -blinkande pixlar. Blinkintervallet kan sättas med *set\_flashing\_time*. - -flashing\_area\_with\_pattern(x1, y1, x2, y2) - -Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med -blinkande pixlar i ett mönster. Blinkintervallet kan sättas med -*set\_flashing\_time*. - -invert\_area(x1, y1, x2, y2) - -Tänd alla släckta pixlar och släck alla tända pixlar i det rektangulära -området mellan (*x1*, *y1*) och (*x2*, *y2*). - -invert\_display() - -Tänd alla släcka pixlar och släck alla tända pixlar på hela displayen. - -key(x1, y1, x2, y2, down\_code, up\_code, just, text) - -Skapa en tryckbar knapp (till skillnad från en omkopplare, se -*toggle(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och -texten *text*. Hur texten justeras beror på *just* där 'R' gör texten -högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör -texten vänsterjusterad ('left'). Om knappen trycks ned läggs -*down\_code* i displayens interna minne och om knappen släpps läggs -*up\_code* i displayens interna minne. - -point(x1, y1) - -Rita en punkt i (*x1*, *y1*). Punktens storlek kan anpassas med -*set\_point\_size*. - -put\_text(x, y, justification, text) - -Skriv ut texten *text* i (*x*, *y*). Hur texten justeras beror på -*justification* där 'R' gör texten högerjusterad ('right'), 'C' gör -texten centerjusterad och 'L' gör texten vänsterjusterad ('left'). Om -*justification* är 'R' bestämmer *x* och *y* textens övre högra -koordinat, om *justification* är 'C' bestämmer *x* och *y* textens -mittre koordinat och om *justification* är 'L' bestämmer *x* och *y* -textens övre vänstra koordinat. - -redraw\_bar\_graph(num) - -Tvinga stapeldiagram *num* att ritas om. - -remove\_flashing\_area(x1, y1, x2, y2) - -Ta bort blinkade pixlar i det rektangulära området mellan (*x1*, *y1*) -och (*x2*, *y2*). - -request\_bar\_graph\_value(num) - -Lägg nuvarande värdet för stapeldiagram *num* i displayens interna -minne. - -restore\_display\_from\_clipboard() - -Flytta innehållet från displayens urklipp till displayen. - -restore\_display\_from\_clipboard\_to\_point(x1, y1) - -Flytta innehållet från displayens urklipp till displayen med övre -vänstra hörn i (*x1*, *y1*). Spara ett område med -\_save\_area\_to\_clipboard(...). - -save\_area\_to\_clipboard(x1, y1, x2, y2) - -Kopiera innehållet i den rektangel mellan (*x1*, *y1*) och (*x2*, *y2*) -till displayens urklipp. Återställ med -*restore\_display\_from\_clipboard\_to\_point(...)*. - -save\_display\_to\_clipboard() - -Kopiera displayens nuvarande innehåll till displayens urklipp. Återställ -med *restore\_display\_from\_clipboard()*. - -set\_display\_visible(visible) - -Sätt om displayen ska vara synlig (*visible* = true) eller om displayen -ska vara osynlig (*visible* = false). Att displayen är osynlig innebär -att innehållet inte syns men finns kvar i bakgrunden och kan visas igen -om *set\_display\_visible(true)* skickas. - -set\_drawing\_mode(n1) - -Sätt displayens ritläge. *n1* = 1 innebär att pixlar slås på eller av -(som vanligt) enligt kommandot som skickas, *n1* = 2 innebär att pixlar -enbart slås av (som ett suddgummi) och *n1* = 3 innebär att pixlar -inverteras (släckta pixlar slås på och tända pixlar stängs av) - -set\_flashing\_time(n1) - -Sätt intervallet blinkande objekt blinkar i. *n1* är ett intervall i -tiondelar av en sekund mellan 0,1 sekunder och 1,5 sekunder. - -set\_line\_pattern(n1) - -Sätt mönstret linjer ritas ut med. - -set\_point\_size(n1, n2) - -Sätt storleken på punkter och linjer som ritas ut. *n1* är storleken i -x-led (mellan 1 och 15 pixlar) och *n2* är storleken i y-led (mellan 1 -och 15 pixlar). - -set\_text\_flashing(n1) - -Sätt om ny text som skrivs ut ska blinka eller inte. *n1* = 1 slår på -blinkande och *n1* = 2 stänger av blinkande. - -set\_text\_font(font\_num) - -Sätt typsnittet på ny text som skrivs ut. Se *REF* för information om de -olika typsnitten. - -set\_text\_zoom(x\_scale, y\_scale) - -Sätt skalfaktorn för ny text som skrivs ut. *x\_scale* är skalfaktorn i -x-led (mellan x1 och x8) och *y\_scale* är skalfaktorn i y-led (mellan -x1 och x8). - -set\_touch\_sound\_response(state) - -Sätt om displayen ska göra ljud när knappar trycks ned. *state* = 1 slår -på ljudet och *state* = 0 stänger av ljudet. - -toggle(x1, y1, x2, y2, down\_code, up\_code, just, text) - -Skapa en tryckbar omkopplare (till skillnad från en knapp, se -*key(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och -texten *text*. Hur texten justeras beror på *just* där 'R' gör texten -högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör -texten vänsterjusterad ('left'). Om knappen aktiveras läggs *down\_code* -i displayens interna minne och om knappen avaktiveras läggs *up\_code* i -displayens interna minne. - -update\_bar\_graph(num, val) - -Skicka värdet *val* till stapeldiagram *num*. - -\section{Material} - -Projektgruppen har av beställaren tillhandahållits ett lab med följande utrustning: - -\begin{itemize} - \item En bilbana utrustad med givare vars funktion är att detektera passerade bilar. - \item Två datorer - \item En display med touchfunktionallitet. - \item Ett antal bilar -\end{itemize} - -\section{Sluttest} - -\section{Kravbeskrivning} - -Krav 1. Systemet är helt skrivet i matlab. - -Krav 2. Systemet kan startas oavsett bil på banan.. - -Krav 3. Systemet klarar av att missa givare. - -Krav 4. När ett varv har körts så uppdaterar displayen vilket varv som nyss -genomfördes samt varvtiden. - -Krav 5. Under programmets gång visas det nuvarande gaspådraget. - -Krav 6. Efter att programmet avslutats visas information på displyen. - -Krav 7. Systemet kan köras oavsett vilken bil som placeras på banan. - -Krav 8. Programmet hanterar driftsfall genom att kompensera en större eller -mindre styrsignal. - -Krav 9. Om systemet inte får en nt insignal i form av en passerad givare inom -tio sekunder pausas systemet och användaren får frågan om denne vill fortsätta -eller avsluta. - -Krav 10. Användaren har alternativet att köra en eller båda banorna samt hur -banorna ska köras, autonomnt eller manuellt. Det manuella alternativet uppfyller -inte krav 8 på beslut av beställaren. - -Krav 11. Kravet struket från beslut av beställare. - -Krav 12. Tillsammans med frågan om bana ett eller två ska köras frågar -programmet systemet om banan ska köras manuellt eller autonomt. - -Krav 13. För att starta programmet krävs att man kan öppna matlab och starta -programmet. Därefter kan användaren starta med hjälp av displayen. - -Krav 14. När systemet startar frågar programmet användaren vilka banor som skall -köras samt vilken referenstid de ska ha. - -Krav 15. Systemet ställer de frågor till användaren via touch displayen. - -Krav 16. Enligt de två givna testerna åkte bilarna inte av banan. - -Krav 17. När programmet startas frågar programmet användaren vilken referenstid -som ska strävas efter, detta görs i ett intervall ]12,15[ med justeringar på 0,5 -sekunder upp eller ner. - -Krav 18. Enligt de två visade körningarna stannade inte bilarna under något -tillfälle. - -Krav 19. - -Krav 20. De två testkörningarna resulterade i en standardavvikelse på 0,22 -respektive 0,24. Kravet är delvis uppnått. - -Krav 21. De två testkörningarna resulterade i att bilarna överskred gränsen på -0.5 ett fåtal gånger, kravet delvsi uppnått. - -Krav 22. Kraven var delvis uppfyllda efter 5 varv. - -Krav 23. Kravet struket av beställaren. - -Krav 24. Resultaten sparades och delades med beställaren via email. - -Krav 25. Efter avslutad körning visas statistik i form av de plottar som önskas -i kravspecifikationen. - -Krav 26. Efter avslutad körning sparas alla data i en fil. - -Krav 27. Längre upp i dokumentet beskrivs hur tidtagningen gick till och hur den -validerades. - -Krav 28. - -Krav 29. Deltagande i projektet har angett den tid de jobbat efter varje moment. - -Krav 30. Handledaren har inte bidragit med hjälp i mer än 25h. - -Krav 31. Efter att programmet avslutas visas den cykel som tog längst tid, då -den inte passerar 0,1 sekunder. - -Krav 32. Efter två veckor av projektet godkänndes projektplanen. - -Krav 33. Under projektvecka fyra godkändes designspecifikationen av beställaren. - -Krav 34. Under projektvecka fem redovisade projektgruppen kraven 2, 4, 31 samt 25. - -Krav 35. Under projektvecka sju redovisade projektgruppen kraven 3, 5, 10, 17 -samt 18. Även de krav som uppfylldes under bp.4a visades. - -Krav 36. Under projektvecka nio redovisade projektgruppen samtliga Lrav som -uppfyllts tidigare samt alla krav i avsnitt 3.2. - -Krav 37. Programvaran levererades under projektvecka 10. - -Krav 38. Den tekniska dokumentationen levererades under projektvecka 10. - -Krav 39. Under projektvecka tio hölls en slutleverans där gruppen visade upp -samtliga krav och höll en presentation över vad hur arbetet har sett ut. - -Krav 40. Inför varje beslutspunkt har önskade dokument varit beställaren -tillhandahållna innan 09:00 arbetsdagen innan mötet. - -Krav 41. Projektledaren har delat tidsrapportering samt eventuella -mötesprotokoll vid rätt tid de flesta av projektveckorna, kravet är därför -delvis uppnått. - -Krav 42. Alla dokument samt all programvara har samlats i gitlab minst en gång i -veckan sedan projektvecka 2. - -Krav 43. Projektplan, designspecifikation, mötesprotokoll, teknisk -dokumentation, testprotokoll samt efterstudie har gjorts. - -Krav 44. Dokument samt programvaran har bearbetats samt lagrats på -http://gitlab.ida.liu.se/. - -Krav 45. Alla dokument framtagna av projektgruppen har levererats i pdf-format. - -Krav 46. Alla dokument skrivna av projektgruppen är är skrivet på formell -korrekt svenska. - -Krav 47. Dokumentationen innehåller, - -Krav 48. Programmet är uppdelat i funktioner. - -Krav 49. Projektgruppen har samtlats på mint ett möte i veckan där alla -medlemmar har närvarat. Handledaren har inte närvarat vilket resulterar i ett -delvis uppnått krav. +\input{appendix/01-handhavande} +\input{appendix/02-funktion} +\input{appendix/03-material} +\input{appendix/04-tester} +\input{appendix/05-kravbeskrivning} \end{document} 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 15e19d92adbda0fe7672a398cd0fb7b4502ce7d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Sun, 1 Dec 2019 14:24:35 +0100 Subject: =?UTF-8?q?Lade=20till=20protokoll=20f=C3=B6r=20test=20innan=20bp4?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Davids txt filer/Testprotokoll 12-11-2019.docx | Bin 0 -> 12935 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docx (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docx b/Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docx new file mode 100644 index 0000000..2b8f821 Binary files /dev/null and b/Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docx differ -- cgit v1.2.1 From 81b23f68fef4181b068985f4f3f6ddbed084bbb1 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 14:37:08 +0100 Subject: =?UTF-8?q?Lade=20till=20ant=C3=A4ckningar=20fr=C3=A5n=20m=C3=B6te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Albins txt filer/m\303\266tesanteckningar.txt" | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 "Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" "b/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" new file mode 100644 index 0000000..1a33a33 --- /dev/null +++ "b/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" @@ -0,0 +1,10 @@ +alla referenser till kod skall skrvas + ex: ...vilket höjer \texttt{car.constant} med... +funktioner ska skrivar med parantes tec \texttt{get\_position()} +variabler i structen skrvs (med texttt) car.seg_times +autonom i ställset för automatisk körning +Behövs en subsection om tidsgrejer. I slutet av system +Snyggare matte och hänvisningar + se gustavs pdf + +Flytta 4.1 till 3.5 -- cgit v1.2.1 From 1850a2ff0eab8bfecb45aa5b981098f9d856b45b Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 14:43:21 +0100 Subject: Stavfel --- .../Albins txt filer/m\303\266tesanteckningar.txt" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" "b/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" index 1a33a33..8ea4cdc 100644 --- "a/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" +++ "b/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" @@ -1,7 +1,7 @@ -alla referenser till kod skall skrvas +Alla referenser till kod skall skrvas ex: ...vilket höjer \texttt{car.constant} med... -funktioner ska skrivar med parantes tec \texttt{get\_position()} -variabler i structen skrvs (med texttt) car.seg_times +funktioner ska skrivar med parantes tex \texttt{get\_position()} +variabler i structen skrivs (med texttt och \_) car.seg_times autonom i ställset för automatisk körning Behövs en subsection om tidsgrejer. I slutet av system Snyggare matte och hänvisningar -- cgit v1.2.1 From 41dced54e4d52ec82967a17cbf8ecb8caa50407a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 14:44:05 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20hj=C3=A4lptext=20om=20latex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Teknisk Dokumentation/ekvationer-referenser.pdf | Bin 0 -> 113030 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/ekvationer-referenser.pdf (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/ekvationer-referenser.pdf b/Dokument/Teknisk Dokumentation/ekvationer-referenser.pdf new file mode 100644 index 0000000..49fd7f6 Binary files /dev/null and b/Dokument/Teknisk Dokumentation/ekvationer-referenser.pdf differ -- cgit v1.2.1 From 950ca171c77ee8958950a560663e41fbf100619e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 14:45:42 +0100 Subject: =?UTF-8?q?Ut=C3=B6kade=20m=C3=B6tesanteckingar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Albins txt filer/m\303\266tesanteckningar.txt" | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" "b/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" index 8ea4cdc..c3249d2 100644 --- "a/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" +++ "b/Dokument/Teknisk Dokumentation/Albins txt filer/m\303\266tesanteckningar.txt" @@ -1,10 +1,15 @@ Alla referenser till kod skall skrvas ex: ...vilket höjer \texttt{car.constant} med... + funktioner ska skrivar med parantes tex \texttt{get\_position()} + variabler i structen skrivs (med texttt och \_) car.seg_times + autonom i ställset för automatisk körning + Behövs en subsection om tidsgrejer. I slutet av system -Snyggare matte och hänvisningar - se gustavs pdf + +Snyggare matte och hänvisningar, se gustavs pdf (i mappen "Teknisk +Dokumentation") Flytta 4.1 till 3.5 -- 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') 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') 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') 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 eccbea9d9c7a32b36baab3d2ad237aa4f33a6083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Sun, 1 Dec 2019 15:47:36 +0100 Subject: Lade till beskrivning av highToc samt om hur test gick till --- Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt | 3 +++ Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt create mode 100644 Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt new file mode 100644 index 0000000..82bb9ce --- /dev/null +++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt @@ -0,0 +1,3 @@ +Inför en delleverans skrevs det upp krav och funktioner som skulle testas. +I testet kördes de funktioner som skulle uppfylla kraven och utfallet +av körningarna dokumenterades i ett testprotokoll. \ No newline at end of file diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt new file mode 100644 index 0000000..861a0e4 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt @@ -0,0 +1,5 @@ +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 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') 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') 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 facd97c5ff4dcec805ce1fba6fda12d355928530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 15:57:47 +0100 Subject: Dokumenthistorik --- Dokument/Teknisk Dokumentation/root.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 3244fac..1420a2f 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -69,12 +69,13 @@ \hline \hline 0.1 & 2019-11-30 & Första utkast & Alla & \\ + 0.2 & 2019-12-01 & Andra utkast & Alla & \\ \hline \end{tabular} \cleardoublepage \pagenumbering{arabic}\cfoot{\thepage} -\input{text/00-sammanfattning} +% \input{text/00-sammanfattning} \cleardoublepage \tableofcontents -- cgit v1.2.1 From fd327fb44ac889ad6bc828da132758064e106b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 16:01:21 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20projektmedlemmar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 1420a2f..c3180d1 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -54,7 +54,22 @@ \begin{center} \begin{tabular}{|l|l|l|} \hline - \textbf{Namn} & \textbf{Ansvar} & \textbf{E-post}\\ + \textbf{Namn} & \textbf{Ansvar} & \textbf{Kontaktinformation}\\ + \hline + Mattias Uvesten & Projektledare (PL) & 0768697559\\ + && \url{matvu053@student.liu.se} \\ + \hline + Gustav Sörnäs & Dokument, display (DOK, DSP) & 0703279113\\ + && \url{gusso230@student.liu.se} \\ + \hline + Alexander Tuneskog & Hastighet (SPD) & 0725559873 \\ + && \url{aletu130@student.liu.se} \\ + \hline + David Thorén & Tester, gemensam målgång (TST, GML) & 0721838605 \\ + && \url{davth346@student.liu.se} \\ + \hline + Albin Wahlén & Kalibrering, positionering (KLB, POS) & 0762016054 \\ + && \url{albwa833@student.liu.se} \\ \hline \end{tabular} \end{center} @@ -67,9 +82,11 @@ \multicolumn{1}{|c}{\bfseries Utförda av} & \multicolumn{1}{|c}{\bfseries Granskad}\\ \hline + 0.1 & 2019-11-28 & Struktur & Alla \\ + \hline + 0.2 & 2019-11-30 & Första utkast & Alla & \\ \hline - 0.1 & 2019-11-30 & Första utkast & Alla & \\ - 0.2 & 2019-12-01 & Andra utkast & Alla & \\ + 0.3 & 2019-12-01 & Andra utkast & Alla & \\ \hline \end{tabular} -- cgit v1.2.1 From 3e0f6f0cf53ce2ca0f4e1f93b8df93184ff35ba4 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 16:31:06 +0100 Subject: =?UTF-8?q?Skrev=20om=20i=20Handhavande,=20tog=20bort=20och=20f?= =?UTF-8?q?=C3=B6rtydligade=20text,=20skrev=20dit=20vart=20bilen=20ska=20p?= =?UTF-8?q?laceras=20innan=20start?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appendix/01-handhavande.tex | 23 +++++----------------- 1 file changed, 5 insertions(+), 18 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex index 40e68f5..19201fc 100644 --- a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex +++ b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex @@ -1,21 +1,8 @@ \section{Handhavande} -Proceduren till handhavande för Matlab: - Starta Matlab 2015b. Observera att användaren måste använda datorn som finns -inne i bilbanerummet och som är inkopplade till bilbanan. Väl inne i Matlab -öppna filvägen för hårdisk X: och hitta sökvägen till yc4\_2019. - -Därefter markera och högerklicka på mappen kod och där kommer ett alternativ som -heter Add To Path. Välj sedan Select Folders And Subfolders som dyker upp när -musen pekar på Add To Path. Därefter expandera bilbana mappen följt av yc4 -mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn -i Matlab. +inne i bilbanerummet och som är inkopplade till bilbanan. Inne i Matlab ska användaren navigera sig till yc4 mappen och öppna den. Därefter markera och högerklicka på mappen kod och välj alternativet ''Add To Path''. Klicka på ''Select Folders And Subfolders'' som dyker upp när musen pekar på ''Add To Path''. Därefter expandera bilbana mappen följt av yc4 mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn i Matlab. -När koden körs i Matlab är dags att starta bilarna detta görs genom att via den -externa touch displayen. Där finns möjligheterna att välja antalet banor som ska -köras samt möjligheten att justera referenstiden. Kryssa även i om någon av -banorna ska köras manuellt. Därefter starta genom att trycka på knappen nere i -det högra hörnet på displayen. +Därefter välj vilka banor som ska köras via den externa touch displayen. Justera också referenstiden genom att klicka på plusstecknet eller minustecknet (notera att referenstiden ändras med 0.5 s intervall). Kryssa även i om någon av banorna ska köras manuellt. Starta genom att trycka på knappen nere i det högra hörnet på displayen. Observera att bilarna måste placeras några decimeter innan målgivaren före start. När programmet ska avslutas klickar användaren i kommentar fönstret i Matlab och klickar på q om bilen ska stanna direkt. Om användaren istället vill att @@ -27,10 +14,10 @@ segmentstiden/segmentstiderna samt att avsluta. Detta väljs utifrån de tre knapparna längst ner på displayen. Dessa knappar är Varv för att se varvtid, Segment för att se segmentstider. Samt knappen Avsluta. -Om knappen Varv väljs kommer information såsom “target” vilket är vald varvtid. -“Mean” som är genomsnittlig varvtid och “Stdev” är standardavvikelsen. För att +Om knappen Varv väljs kommer information såsom ''target'' vilket är vald varvtid. +“mean” som är genomsnittlig varvtid och “Stdev” är standardavvikelsen. För att se varvtiden för den andra banan klicka på knappen uppe i högra hörnet. Om programmet kraschar: Om programmet kraschar öppna main.m. Därefter skriv in -ctrl och enter i avgränsningen som heter "\%\% END OF RACE" som finns i slutet av +ctrl och enter i avgränsningen som heter ''\%\% END OF RACE'' som finns i slutet av koden main.m. -- cgit v1.2.1 From ae0f08469d5fd37dadf0317f4141e381db935245 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 16:43:00 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20ett=20fel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex index 19201fc..93c1c83 100644 --- a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex +++ b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex @@ -15,7 +15,7 @@ knapparna längst ner på displayen. Dessa knappar är Varv för att se varvtid, Segment för att se segmentstider. Samt knappen Avsluta. Om knappen Varv väljs kommer information såsom ''target'' vilket är vald varvtid. -“mean” som är genomsnittlig varvtid och “Stdev” är standardavvikelsen. För att +“mean” som är genomsnittlig varvtid och “stdev” är standardavvikelsen. För att se varvtiden för den andra banan klicka på knappen uppe i högra hörnet. Om programmet kraschar: Om programmet kraschar öppna main.m. Därefter skriv in -- cgit v1.2.1 From 3882a65c742c84065df4ba8bacec66964f3f97f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 16:52:23 +0100 Subject: Formatera kravbeskrivning --- .../appendix/05-kravbeskrivning.tex | 170 +++++++++++---------- .../Teknisk Dokumentation/lips-no_customer.cls | 2 +- 2 files changed, 92 insertions(+), 80 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex index 93615da..beb6d5f 100644 --- a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex @@ -1,128 +1,140 @@ \section{Kravbeskrivning} -Krav 1. Systemet är helt skrivet i matlab. +\begin{requirements} + \requirementno & Programmet är skrivet i Matlab. & Ja \\\hline -Krav 2. Systemet kan startas oavsett bil på banan.. + \requirementno & Systemet går att köra autonomnt & Ja \\\hline -Krav 3. Systemet klarar av att missa givare. + \requirementno & Systemet hanterar missade givare. Verifieras dels med en inprogrammerad + inställbar sannolikhet att en given givare hoppas över, dels av beställaren + under BP5. & Ja \\\hline -Krav 4. När ett varv har körts så uppdaterar displayen vilket varv som nyss -genomfördes samt varvtiden. + \requirementno & När ett varv har körts visar displayen varvnummer och varvtid. + & Ja \\\hline -Krav 5. Under programmets gång visas det nuvarande gaspådraget. + \requirementno & Det nuvarande gaspådraget visas kontinuerligt på displayen. & + Ja \\\hline -Krav 6. Efter att programmet avslutats visas information på displyen. + \requirementno & Statistik om körningen visas vid avslutad körning på displayen. + Se REF. & Ja \\\hline -Krav 7. Systemet kan köras oavsett vilken bil som placeras på banan. + \requirementno & Systemet anpassar automatiskt spänningstillförseln beroende på + egenskaperna för bilen och banan. & Ja \\\hline -Krav 8. Programmet hanterar driftsfall genom att kompensera en större eller -mindre styrsignal. + \requirementno & Systemet anpassar automatiskt spänningstillförseln beroende på + egenskaperna för bilen och banan. & Ja \\\hline -Krav 9. Om systemet inte får en nt insignal i form av en passerad givare inom -tio sekunder pausas systemet och användaren får frågan om denne vill fortsätta -eller avsluta. + \requirementno & Om en givare inte passeras inom nio sekunder pausas systemet och + användaren får frågan om programmet ska fortsätta eller avsluta. & Ja \\\hline -Krav 10. Användaren har alternativet att köra en eller båda banorna samt hur -banorna ska köras, autonomnt eller manuellt. Det manuella alternativet uppfyller -inte krav 8 på beslut av beställaren. + \requirementno & Vid uppstart väljer användaren vilken av banorna som ska köras eller om + båda ska köras samtidigt. & Ja \\\hline -Krav 11. Kravet struket från beslut av beställare. + \requirementno & Struket av beställaren. & N/A \\\hline -Krav 12. Tillsammans med frågan om bana ett eller två ska köras frågar -programmet systemet om banan ska köras manuellt eller autonomt. + \requirementno & Vid uppstart väljer användaren om en bana ska köras autonomnt eller + manuellt. Banorna kan köras i alla kombinationer av autonomt och manuellt styre. + & Ja \\\hline -Krav 13. För att starta programmet krävs att man kan öppna matlab och starta -programmet. Därefter kan användaren starta med hjälp av displayen. - -Krav 14. När systemet startar frågar programmet användaren vilka banor som skall -köras samt vilken referenstid de ska ha. + \requirementno & Systemet startas genom att enbart köra filen \texttt{main.m}. + Se REF. & Ja \\\hline -Krav 15. Systemet ställer de frågor till användaren via touch displayen. + \requirementno & Se krav 10 och 12. Delen om gemensam målgång är struken av + beställaren. & Ja \\\hline -Krav 16. Enligt de två givna testerna åkte bilarna inte av banan. + \requirementno & All inmatning vid uppstart sker via displayen. & Ja \\\hline -Krav 17. När programmet startas frågar programmet användaren vilken referenstid -som ska strävas efter, detta görs i ett intervall ]12,15[ med justeringar på 0,5 -sekunder upp eller ner. + \requirementno & På redovisingen åkte bilarna antingen av banan efter ett varv eller + inte alls. & Nej \\\hline -Krav 18. Enligt de två visade körningarna stannade inte bilarna under något -tillfälle. + \requirementno & Referenstiden går att välja på displayen i intervallet 12 till 15 + sekunder med steg om 0,5 sekunder. & Ja \\\hline -Krav 19. + \requirementno & På redovisningen stannade inte bilarna någon gång. & Ja \\\hline -Krav 20. De två testkörningarna resulterade i en standardavvikelse på 0,22 -respektive 0,24. Kravet är delvis uppnått. + \requirementno && \\\hline -Krav 21. De två testkörningarna resulterade i att bilarna överskred gränsen på -0.5 ett fåtal gånger, kravet delvsi uppnått. + \requirementno & På redovisnigen slutfördes två körningar om 15 varv varav fem + kalibreringsvarv. Standardavvikelsen låg på 0,22 sekunder respektive 0,24 + sekunder. & Nej \\\hline -Krav 22. Kraven var delvis uppfyllda efter 5 varv. + \requirementno & Under de två testkörningarna överskreds gränsen om $\pm$ 0,5 sekunder + ett antal gånger. & Nej \\\hline -Krav 23. Kravet struket av beställaren. + \requirementno & Krav 20 och 21 mäter endast varvtider från varv 6 och framåt. & + Ja \\\hline -Krav 24. Resultaten sparades och delades med beställaren via email. + \requirementno & Struket av beställaren. & N/A \\\hline -Krav 25. Efter avslutad körning visas statistik i form av de plottar som önskas -i kravspecifikationen. + \requirementno & Statistik från körningarna vid redovisingen har delats med beställaren + via e-post. & Ja \\\hline -Krav 26. Efter avslutad körning sparas alla data i en fil. + \requirementno & Vid avslutad körning visas grafer över varvtid och genomsnittlig tid + per segment. & Delvis \\\hline -Krav 27. Längre upp i dokumentet beskrivs hur tidtagningen gick till och hur den -validerades. + \requirementno & Vid avslutad körning sparas statistik om körningen i en + \texttt{.mat}-fil. & Ja \\\hline -Krav 28. + \requirementno & Se REF. & \\\hline -Krav 29. Deltagande i projektet har angett den tid de jobbat efter varje moment. + \requirementno & & \\\hline -Krav 30. Handledaren har inte bidragit med hjälp i mer än 25h. + \requirementno & Gruppmedlemmarna har tidsrapporterat under hela projektet och håller + sig på ett ungefär till tidsgränsen. Se externt tidsrapporteringsdokument. & Ja + \\\hline -Krav 31. Efter att programmet avslutas visas den cykel som tog längst tid, då -den inte passerar 0,1 sekunder. + \requirementno & Handledaren har inte bidragit med hjälp i mer än 25h. & Ja \\\hline -Krav 32. Efter två veckor av projektet godkänndes projektplanen. + \requirementno & Vid avslutad körning visas den det längsta mellanrummet mellan två + avläsningar av banan. Se REF. & Ja \\\hline -Krav 33. Under projektvecka fyra godkändes designspecifikationen av beställaren. + \requirementno & Krav 32. Projektplanen var godkänd två veckor efter + beställarmötet. & Ja \\\hline -Krav 34. Under projektvecka fem redovisade projektgruppen kraven 2, 4, 31 samt 25. + \requirementno & Designspecifikationen godkändes under projektvecka 4. & Ja \\\hline -Krav 35. Under projektvecka sju redovisade projektgruppen kraven 3, 5, 10, 17 -samt 18. Även de krav som uppfylldes under bp.4a visades. + \requirementno & BP4a redovisades under projektvecka 5. & Ja \\\hline -Krav 36. Under projektvecka nio redovisade projektgruppen samtliga Lrav som -uppfyllts tidigare samt alla krav i avsnitt 3.2. + \requirementno & BP4b redovisades under projektvecka 6. & Ja \\\hline -Krav 37. Programvaran levererades under projektvecka 10. + \requirementno & BP5 redovisades under projektvecka 9. & Ja \\\hline -Krav 38. Den tekniska dokumentationen levererades under projektvecka 10. + \requirementno & Programvaran kommer levereras under projektvecka 10. & -- \\\hline -Krav 39. Under projektvecka tio hölls en slutleverans där gruppen visade upp -samtliga krav och höll en presentation över vad hur arbetet har sett ut. + \requirementno & Den tekniska dokumentationen kommer levereras under + projektvecka 10. & -- \\\hline -Krav 40. Inför varje beslutspunkt har önskade dokument varit beställaren -tillhandahållna innan 09:00 arbetsdagen innan mötet. + \requirementno & En slutleverans kommer hållas under projektvecka 10. Vid slutleveransen + kommer projektgruppen gå igenom samtliga krav och i övrigt presentera arbetets + gång. & -- \\\hline -Krav 41. Projektledaren har delat tidsrapportering samt eventuella -mötesprotokoll vid rätt tid de flesta av projektveckorna, kravet är därför -delvis uppnått. + \requirementno & Inför varje beslutspunkt har önskade dokument varit beställaren + tillhanda innan 09:00 arbetsdagen innan mötet. & Ja \\\hline -Krav 42. Alla dokument samt all programvara har samlats i gitlab minst en gång i -veckan sedan projektvecka 2. + \requirementno & Projektledaren har delat tidsrapportering samt eventuella + mötesprotokoll vid rätt tid de flesta projektveckor. & Delvis \\\hline -Krav 43. Projektplan, designspecifikation, mötesprotokoll, teknisk -dokumentation, testprotokoll samt efterstudie har gjorts. + \requirementno & Alla dokument och all programvara har funnits tillgänglig på + \url{https://gitlab.liu.se/} sedan projektvecka 2. & Ja \\\hline -Krav 44. Dokument samt programvaran har bearbetats samt lagrats på -http://gitlab.ida.liu.se/. + \requirementno & Projektplan, designspecifikation, mötesprotokoll, testprotokoll och teknisk + dokumentation har framställts. Efterstudie kommer framställas vid ett senare + tillfälle. & Ja \\\hline -Krav 45. Alla dokument framtagna av projektgruppen har levererats i pdf-format. + \requirementno & Se krav 42. & Ja \\\hline -Krav 46. Alla dokument skrivna av projektgruppen är är skrivet på formell -korrekt svenska. + \requirementno & Alla dokument framtagna av projektgruppen har levererats som + PDF-dokument. & Ja \\\hline -Krav 47. Dokumentationen innehåller, + \requirementno & Alla framtagna dokument är skrivna på formell och korrekt + svenska. & Ja \\\hline -Krav 48. Programmet är uppdelat i funktioner. + \requirementno & Dokumentationen innehåller följande figurer: varvtid mot varvnummer och + genomsnittlig tid för varje segment. & Delvis \\\hline -Krav 49. Projektgruppen har samtlats på mint ett möte i veckan där alla -medlemmar har närvarat. Handledaren har inte närvarat vilket resulterar i ett -delvis uppnått krav. + \requirementno & Programmet är uppdelat i funktioner. & Ja \\\hline + + \requirementno & Projektgruppen har samtlats på minst ett möte i veckan där alla + medlemmar har närvarat. Handledaren har inte närvarat. & Delvis \\\hline + +\end{requirements} diff --git a/Dokument/Teknisk Dokumentation/lips-no_customer.cls b/Dokument/Teknisk Dokumentation/lips-no_customer.cls index 3ccaa3d..e002545 100644 --- a/Dokument/Teknisk Dokumentation/lips-no_customer.cls +++ b/Dokument/Teknisk Dokumentation/lips-no_customer.cls @@ -90,7 +90,7 @@ dottedtoc \def\name@Email{E-post} \def\name@Requirement{Krav} \def\name@Description{Beskrivning} - \def\name@Priority{Prioritet} + \def\name@Priority{Uppfyllt} \def\name@contprev{forts. från föregående sida} \def\name@contnext{forts. på nästa sida} \def\name@Author{Författare} -- cgit v1.2.1 From 047d717e9769d7009ee7a42a383252f7cfd3e569 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 16:57:47 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20till=20r=C3=A4tt=20versionnummer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index c3180d1..f46c71e 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -8,7 +8,7 @@ \title{Teknisk dokumentation} \author{Yc4} \date{\today} -\version{0.1} +\version{0.3} \reviewed{}{} \approved{}{} -- cgit v1.2.1 From d7e377e5af673c88a789e3c9b0eff9585128b458 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 17:01:23 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20felstavat=20ord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex index beb6d5f..1803e6b 100644 --- a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex @@ -3,7 +3,7 @@ \begin{requirements} \requirementno & Programmet är skrivet i Matlab. & Ja \\\hline - \requirementno & Systemet går att köra autonomnt & Ja \\\hline + \requirementno & Systemet går att köra autonomt & Ja \\\hline \requirementno & Systemet hanterar missade givare. Verifieras dels med en inprogrammerad inställbar sannolikhet att en given givare hoppas över, dels av beställaren -- 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') 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') 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') 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 --- Dokument/Teknisk Dokumentation/root.tex | 2 +- .../text/system/03-korning.tex | 58 ++++++++++++---------- 2 files changed, 34 insertions(+), 26 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index c3180d1..f46c71e 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -8,7 +8,7 @@ \title{Teknisk dokumentation} \author{Yc4} \date{\today} -\version{0.1} +\version{0.3} \reviewed{}{} \approved{}{} 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 e555332c8255bf43c52aa4090c35a2b9c1b94521 Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 17:31:46 +0100 Subject: =?UTF-8?q?Vad=20ska=20g=C3=B6ras=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Albins txt filer/vad ska g\303\266ras.txt" | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 "Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" "b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" new file mode 100644 index 0000000..64b350a --- /dev/null +++ "b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" @@ -0,0 +1,11 @@ +Inledning - kolla igenom +Begrepp och systemöversikt - kolla igenom +Referenser! - Albin +Funktioner och filer - format - Gustav + main.m - Albin +Displayfunktioner - rensa - Gustav +Material - utveckla - Alex +Lägg in Davis ändringar - Albin +Kravbesktivning - Läs igenom - Albin + + -- 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') 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 --- .../Teknisk Dokumentation/appendix/02-funktion.tex | 20 +++++++++++--------- .../appendix/05-kravbeskrivning.tex | 9 +++++---- Dokument/Teknisk Dokumentation/text/01-inledning.tex | 4 +--- Dokument/Teknisk Dokumentation/text/04-events.tex | 3 ++- Dokument/Teknisk Dokumentation/text/05-end.tex | 2 +- .../text/system/02-uppstart.tex | 2 +- .../Teknisk Dokumentation/text/system/03-korning.tex | 6 +++--- .../Teknisk Dokumentation/text/system/05-display.tex | 2 +- 8 files changed, 25 insertions(+), 23 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex index ea97a26..0d97295 100644 --- a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex +++ b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex @@ -1,12 +1,13 @@ \section{Funktioner och filer} \subsection{System} - +\label{app:funktioner och filer:system} choose\_position(position, segment, track, track\_len) Körs när en givare passerats. Gör en bedömning om en givare (eller flera) har missats genom att kontrollera vilken givare som är närmast den nuvarande -uppskattade position och kompenserar om en givare bedöms ha missats. +uppskattade position och kompenserar om en givare bedöms ha missats. Se +\ref{sec:missade givare} clamp(n, m, M) @@ -19,13 +20,14 @@ Returnerar true om position ligger utanför det nuvarande segmentet. do\_boot(car, boot) -Anropas en gång per programcykel i den så kallade boostrap-fasen. Se ANNAN DEL -AV TEXTEN för information. +Anropas en gång per programcykel i den så kallade boostrap-fasen. Se +\ref{sec:systembeskrivning:uppstart} för information. do\_car(car, t, displa\_data, boot) -Anropas en gång per programcykel. Se ANNAN DEL AV TEXTEN och EN ANNAN DEL -AV TEXTEN för information om hur en programcykel ser ut och NÅGOT MER. +Anropas en gång per programcykel. Se \ref{sec:systembeskrivning:korning} och EN ANNAN DEL +AV TEXTEN (vadå?) för information om hur en programcykel ser ut och NÅGOT MER +(vadå?). do\_gov(car) @@ -33,7 +35,7 @@ Anropas varje gång en givare passerats. Vid målgivaren jämförs referenstiden den förra varvtiden och car.constant anpassas efter differensen mellan dem. Om differensen är högre ändras car.constant mer, och vice versa om differensen är låg. Vid givare 5 och 8 jämförs referenstiden och en uppskattning av hur lång -tid det nuvarande varvet troligen kommer ta. Se EN ANNAN DEL AV TEXTEN för +tid det nuvarande varvet troligen kommer ta. Se \ref{sec:systembeskrivning:governor} för mer information. fit\_percents(percents, lap\_time, seg\_times) @@ -81,7 +83,7 @@ main.m Huvudskriptet som startar hela systemet. \subsection{Display} - +\label{app:funktioner och filer:display} bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value, type, pattern): Skapar ett stapeldiagram med ett hörn i (*x1*, *y1*) och ett diagonellt @@ -252,7 +254,7 @@ blinkande och *n1* = 2 stänger av blinkande. set\_text\_font(font\_num) -Sätt typsnittet på ny text som skrivs ut. Se *REF* för information om de +Sätt typsnittet på ny text som skrivs ut. Se *REF*(vadå?) för information om de olika typsnitten. set\_text\_zoom(x\_scale, y\_scale) diff --git a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex index 1803e6b..ce9a833 100644 --- a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex @@ -1,4 +1,5 @@ \section{Kravbeskrivning} +\label{app:kravbeskrivning} \begin{requirements} \requirementno & Programmet är skrivet i Matlab. & Ja \\\hline @@ -16,7 +17,7 @@ Ja \\\hline \requirementno & Statistik om körningen visas vid avslutad körning på displayen. - Se REF. & Ja \\\hline + Se \ref{sec:programslut}. & Ja \\\hline \requirementno & Systemet anpassar automatiskt spänningstillförseln beroende på egenskaperna för bilen och banan. & Ja \\\hline @@ -37,7 +38,7 @@ & Ja \\\hline \requirementno & Systemet startas genom att enbart köra filen \texttt{main.m}. - Se REF. & Ja \\\hline + Se \ref{app:funktioner och filer:system}. & Ja \\\hline \requirementno & Se krav 10 och 12. Delen om gemensam målgång är struken av beställaren. & Ja \\\hline @@ -75,7 +76,7 @@ \requirementno & Vid avslutad körning sparas statistik om körningen i en \texttt{.mat}-fil. & Ja \\\hline - \requirementno & Se REF. & \\\hline + \requirementno & Se REF (vad?). & \\\hline \requirementno & & \\\hline @@ -86,7 +87,7 @@ \requirementno & Handledaren har inte bidragit med hjälp i mer än 25h. & Ja \\\hline \requirementno & Vid avslutad körning visas den det längsta mellanrummet mellan två - avläsningar av banan. Se REF. & Ja \\\hline + avläsningar av banan. Se \ref{sec:system:korning:cykel}. & Ja \\\hline \requirementno & Krav 32. Projektplanen var godkänd två veckor efter beställarmötet. & Ja \\\hline 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 --- .../Albins txt filer/vad ska g\303\266ras.txt" | 8 ++------ Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex | 1 + Dokument/Teknisk Dokumentation/appendix/02-funktion.tex | 4 +++- .../Teknisk Dokumentation/appendix/05-kravbeskrivning.tex | 6 +++--- Dokument/Teknisk Dokumentation/text/02-system.tex | 6 ++++-- Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 12 ++++++------ 6 files changed, 19 insertions(+), 18 deletions(-) (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" "b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" index 64b350a..001f10e 100644 --- "a/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" +++ "b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" @@ -1,11 +1,7 @@ Inledning - kolla igenom -Begrepp och systemöversikt - kolla igenom -Referenser! - Albin Funktioner och filer - format - Gustav - main.m - Albin Displayfunktioner - rensa - Gustav Material - utveckla - Alex -Lägg in Davis ändringar - Albin -Kravbesktivning - Läs igenom - Albin - +gör figurer +\texttt{} fortsätter efter radbrytning diff --git a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex index 93c1c83..8fd7b8e 100644 --- a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex +++ b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex @@ -1,4 +1,5 @@ \section{Handhavande} +\label{app:handhavande} Starta Matlab 2015b. Observera att användaren måste använda datorn som finns inne i bilbanerummet och som är inkopplade till bilbanan. Inne i Matlab ska användaren navigera sig till yc4 mappen och öppna den. Därefter markera och högerklicka på mappen kod och välj alternativet ''Add To Path''. Klicka på ''Select Folders And Subfolders'' som dyker upp när musen pekar på ''Add To Path''. Därefter expandera bilbana mappen följt av yc4 mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn i Matlab. diff --git a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex index 0d97295..45d061d 100644 --- a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex +++ b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex @@ -80,7 +80,9 @@ ms till "00:01.3" och 11240 till "00:11.2". main.m -Huvudskriptet som startar hela systemet. +Det script som programmet ligger i. I main.m ligger alla funktioner. +Det är denna fil som ska startas +vid systemuppstart, se \ref{app:handhavande} \subsection{Display} \label{app:funktioner och filer:display} diff --git a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex index ce9a833..e5a06c7 100644 --- a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex +++ b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex @@ -1,6 +1,6 @@ \section{Kravbeskrivning} \label{app:kravbeskrivning} - +För fullständig beskrivning av kraven, se kravspecifikationen. \begin{requirements} \requirementno & Programmet är skrivet i Matlab. & Ja \\\hline @@ -38,7 +38,7 @@ & Ja \\\hline \requirementno & Systemet startas genom att enbart köra filen \texttt{main.m}. - Se \ref{app:funktioner och filer:system}. & Ja \\\hline + Se \ref{app:handhavande}. & Ja \\\hline \requirementno & Se krav 10 och 12. Delen om gemensam målgång är struken av beställaren. & Ja \\\hline @@ -76,7 +76,7 @@ \requirementno & Vid avslutad körning sparas statistik om körningen i en \texttt{.mat}-fil. & Ja \\\hline - \requirementno & Se REF (vad?). & \\\hline + \requirementno & Se \ref{sec:system:korning:cykel}. & \\\hline \requirementno & & \\\hline 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 6fe1a0a10635c13e3816ab6166eb41ccdd9f9282 Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 19:16:37 +0100 Subject: =?UTF-8?q?vad=20ska=20g=C3=B6ras?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" | 1 + 1 file changed, 1 insertion(+) (limited to 'Dokument') diff --git "a/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" "b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" index 001f10e..18d6e88 100644 --- "a/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" +++ "b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska g\303\266ras.txt" @@ -5,3 +5,4 @@ Material - utveckla - Alex gör figurer \texttt{} fortsätter efter radbrytning +forcasts! -- cgit v1.2.1 From 23925ff216782f6014cf69c055af2b0b8b9b3b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 1 Dec 2019 19:27:19 +0100 Subject: Formatera funktioner och rensa --- .../Teknisk Dokumentation/appendix/02-funktion.tex | 355 ++++++--------------- 1 file changed, 95 insertions(+), 260 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex index 45d061d..20313af 100644 --- a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex +++ b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex @@ -2,284 +2,119 @@ \subsection{System} \label{app:funktioner och filer:system} -choose\_position(position, segment, track, track\_len) -Körs när en givare passerats. Gör en bedömning om en givare (eller flera) har -missats genom att kontrollera vilken givare som är närmast den nuvarande -uppskattade position och kompenserar om en givare bedöms ha missats. Se -\ref{sec:missade givare} +\texttt{choose\_position(position, segment, track, track\_len)} - Körs när en +givare passerats. Gör en bedömning om en givare (eller flera) har missats genom +att kontrollera vilken givare som är närmast den nuvarande uppskattade position +och kompenserar om en givare bedöms ha missats. Se \ref{sec:missade givare} -clamp(n, m, M) +\texttt{clamp(n, m, M)} - En hjälpfunktion som returnerar $n$ om $m < n < M$, +$m$ om $n < m$ och $M$ om $n > M$. -En hjälpfunktion som returnerar n om $m < n < M$, annars m om $n < m$, annars M -om $n > M$. +\texttt{detect\_missed(position, segment, track, track\_len)} - Returnerar true +om position ligger utanför det nuvarande segmentet. -detect\_missed(position, segment, track, track\_len) +\texttt{do\_boot(car, boot)} - Anropas en gång per programcykel i den så kallade +boostrap-fasen. Se \ref{sec:systembeskrivning:uppstart} för information. -Returnerar true om position ligger utanför det nuvarande segmentet. +\texttt{do\_car(car, t, displa\_data, boot)} - Anropas en gång per programcykel. +Se \ref{sec:systembeskrivning:korning} och EN ANNAN DEL AV TEXTEN (vadå?) för +information om hur en programcykel ser ut och NÅGOT MER (vadå?). -do\_boot(car, boot) +\texttt{do\_gov(car)} - Anropas varje gång en givare passerats. Vid målgivaren +jämförs referenstiden och den förra varvtiden och car.constant anpassas efter +differensen mellan dem. Om differensen är högre ändras car.constant mer, och +vice versa om differensen är låg. Vid givare 5 och 8 jämförs referenstiden och +en uppskattning av hur lång tid det nuvarande varvet troligen kommer ta. Se +\ref{sec:systembeskrivning:governor} för mer information. -Anropas en gång per programcykel i den så kallade boostrap-fasen. Se -\ref{sec:systembeskrivning:uppstart} för information. +\texttt{fit\_percents(percents, lap\_time, seg\_times)} - Anropas vid varje nytt +varv. Räknar ut den procentuella tiden varje segment tog det förra varvet och +sparar medelvärdet mellan den förra procentsatsen och den nya, uträknade +procentsatsen. Procentsatsen normeras sedan så summan är 1 (100%). -do\_car(car, t, displa\_data, boot) +\texttt{format\_seg\_times(car)} - Anropas när körningen avslutas. Returnerar +den genomsnittliga tiden för varje segment. -Anropas en gång per programcykel. Se \ref{sec:systembeskrivning:korning} och EN ANNAN DEL -AV TEXTEN (vadå?) för information om hur en programcykel ser ut och NÅGOT MER -(vadå?). +\texttt{get\_aprox\_v(cur\_seg, car)} - Anropas varje programcykel. Uppskattar +bilens nuvarande hastighet genom att dividera den senast uppmätta segmentstiden +med segmentets längd. -do\_gov(car) +% \texttt{get\_new\_u(new\_v, seg\_constant} - FLYTTA BERÄKNINGEN TILL DO\_CAR, +% BEHÖVER INTE VARA EN EGEN FUNKTION -Anropas varje gång en givare passerats. Vid målgivaren jämförs referenstiden och -den förra varvtiden och car.constant anpassas efter differensen mellan dem. Om -differensen är högre ändras car.constant mer, och vice versa om differensen är -låg. Vid givare 5 och 8 jämförs referenstiden och en uppskattning av hur lång -tid det nuvarande varvet troligen kommer ta. Se \ref{sec:systembeskrivning:governor} för -mer information. +\texttt{get\_new\_v(position, list)} - Anropas varje programcykel. Söker igenom +bankartan och returnerar värdet v som matchar position. -fit\_percents(percents, lap\_time, seg\_times) +\texttt{get\_position(aprox\_v, prev\_p, delta\_t)} - Anropas varje +programcykel. Räknar ut hur långt bilen rört sig sedan senaste programcykeln. -Anropas vid varje nytt varv. Räknar ut den procentuella tiden varje segment tog -det förra varvet och sparar medelvärdet mellan den förra procentsatsen och den -nya, uträknade procentsatsen. Procentsatsen normeras sedan så summan är 1 -(100%). +% \texttt{get\_seg\_constant(position, lap\_constants, track, track\_len)} - TA +% BORT -format\_seg\_times(car) +\texttt{get\_time\_as\_string(millis)} - Omvandlar en mängd millisekunder till +formatet "mm:ss.s". Till exempel omvandlas 1250 ms till "00:01.3" och 11240 till +"00:11.2". -Anropas när körningen avslutas. Returnerar den genomsnittliga tiden för varje -segment. - -get\_aprox\_v(cur\_seg, car) - -Anropas varje programcykel. Uppskattar bilens nuvarande hastighet genom att -dividera den senast uppmätta segmentstiden med segmentets längd. - -get\_new\_u(new\_v, seg\_constant - -FLYTTA BERÄKNINGEN TILL DO\_CAR, BEHÖVER INTE VARA EN EGEN FUNKTION - -get\_new\_v(position, list) - -Anropas varje programcykel. Söker igenom bankartan och returnerar värdet v som -matchar position. - -get\_position(aprox\_v, prev\_p, delta\_t) - -Anropas varje programcykel. Räknar ut hur långt bilen rört sig sedan senaste -programcykeln. - -get\_seg\_constant(position, lap\_constants, track, track\_len) - -TA BORT - -get\_time\_as\_string(millis) - -Omvandlar en mängd millisekunder till formatet "mm:ss.s". Till exempel omvandlas 1250 -ms till "00:01.3" och 11240 till "00:11.2". - -main.m - -Det script som programmet ligger i. I main.m ligger alla funktioner. -Det är denna fil som ska startas -vid systemuppstart, se \ref{app:handhavande} +\texttt{main.m} - Huvudskriptet som startar hela systemet. Det script som +programmet ligger i. I main.m ligger alla funktioner. Det är denna fil som ska +startas vid systemuppstart, se \ref{app:handhavande} \subsection{Display} \label{app:funktioner och filer:display} -bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value, type, pattern): - -Skapar ett stapeldiagram med ett hörn i (*x1*, *y1*) och ett diagonellt -hörn i (*x2*, *y2*). *direction* är en av 'O', 'U', 'L' och 'R' och -bestämmer åt vilket håll "upp" är på stapeln. 'O' står för upp ('oben' -på tyska), 'U' står för ner ('unter' på tyska), 'L' står för vänster -('links') och 'R' står för höger ('rechts'). Värdet stapeldiagrammet ska -visa specifieras med *update\_bar\_graph*. *start\_value* och -*end\_value* bestämmer vad som ska vara noll- respektive maxvärde för -stapeldiagrammet. *no* är stapeldiagrammets nummer och behöver -specifieras när stapeldiagrammets värde ska uppdateras. *type* sätts -till 0 för en enkel stapel och 1 för en stapel inuti en ram. - -box(x1, y1, x2, y2, n1) - -Ritar en rektangel med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) -och mönster-nummer *n1*. - -clear\_display() - -Rensa displayen. - -continue\_line(x2, y2) - -Fortsätt en linje från den senast specifierade linjens slut till (*x2*, -*y2*). - -delete\_area(x1, y1, x2, y2) - -Ta bort (släck) alla pixlar i det rektangulära området mellan (*x1*, -*y1*) och (*x2*, *y2*). - -draw\_line(x1, y1, x2, y2) - -Rita en linje mellan (*x1*, *y1*) och (*x2*, *y2*). - -draw rectangle(x1, y1, x2, y2) - -Rita en rektangel (ej ifylld) mellan (*x1*, *y1*) och (*x2*, *y2*). - -fill\_area(x1, y1, x2, y2) - -Tänd alla pixlar i det rektangulära området mellan (*x1*, *y1*) och -(*x2*, *y2*). - -fill\_area\_with\_pattern(x1, y1, x2, y2, n1) - -Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med -mönster *n1*. - -fill\_display() - -Tänd alla pixlar på displayen. - -flashing\_area(x1, y1, x2, y2) - -Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med -blinkande pixlar. Blinkintervallet kan sättas med *set\_flashing\_time*. - -flashing\_area\_with\_pattern(x1, y1, x2, y2) - -Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med -blinkande pixlar i ett mönster. Blinkintervallet kan sättas med -*set\_flashing\_time*. - -invert\_area(x1, y1, x2, y2) - -Tänd alla släckta pixlar och släck alla tända pixlar i det rektangulära -området mellan (*x1*, *y1*) och (*x2*, *y2*). - -invert\_display() - -Tänd alla släcka pixlar och släck alla tända pixlar på hela displayen. -key(x1, y1, x2, y2, down\_code, up\_code, just, text) - -Skapa en tryckbar knapp (till skillnad från en omkopplare, se -*toggle(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och -texten *text*. Hur texten justeras beror på *just* där 'R' gör texten -högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör -texten vänsterjusterad ('left'). Om knappen trycks ned läggs -*down\_code* i displayens interna minne och om knappen släpps läggs -*up\_code* i displayens interna minne. - -point(x1, y1) - -Rita en punkt i (*x1*, *y1*). Punktens storlek kan anpassas med -*set\_point\_size*. - -put\_text(x, y, justification, text) - -Skriv ut texten *text* i (*x*, *y*). Hur texten justeras beror på -*justification* där 'R' gör texten högerjusterad ('right'), 'C' gör -texten centerjusterad och 'L' gör texten vänsterjusterad ('left'). Om -*justification* är 'R' bestämmer *x* och *y* textens övre högra -koordinat, om *justification* är 'C' bestämmer *x* och *y* textens -mittre koordinat och om *justification* är 'L' bestämmer *x* och *y* -textens övre vänstra koordinat. - -redraw\_bar\_graph(num) - -Tvinga stapeldiagram *num* att ritas om. - -remove\_flashing\_area(x1, y1, x2, y2) - -Ta bort blinkade pixlar i det rektangulära området mellan (*x1*, *y1*) -och (*x2*, *y2*). - -request\_bar\_graph\_value(num) - -Lägg nuvarande värdet för stapeldiagram *num* i displayens interna -minne. - -restore\_display\_from\_clipboard() - -Flytta innehållet från displayens urklipp till displayen. - -restore\_display\_from\_clipboard\_to\_point(x1, y1) - -Flytta innehållet från displayens urklipp till displayen med övre -vänstra hörn i (*x1*, *y1*). Spara ett område med -\_save\_area\_to\_clipboard(...). - -save\_area\_to\_clipboard(x1, y1, x2, y2) - -Kopiera innehållet i den rektangel mellan (*x1*, *y1*) och (*x2*, *y2*) -till displayens urklipp. Återställ med -*restore\_display\_from\_clipboard\_to\_point(...)*. - -save\_display\_to\_clipboard() - -Kopiera displayens nuvarande innehåll till displayens urklipp. Återställ -med *restore\_display\_from\_clipboard()*. - -set\_display\_visible(visible) - -Sätt om displayen ska vara synlig (*visible* = true) eller om displayen -ska vara osynlig (*visible* = false). Att displayen är osynlig innebär -att innehållet inte syns men finns kvar i bakgrunden och kan visas igen -om *set\_display\_visible(true)* skickas. - -set\_drawing\_mode(n1) - -Sätt displayens ritläge. *n1* = 1 innebär att pixlar slås på eller av -(som vanligt) enligt kommandot som skickas, *n1* = 2 innebär att pixlar -enbart slås av (som ett suddgummi) och *n1* = 3 innebär att pixlar -inverteras (släckta pixlar slås på och tända pixlar stängs av) - -set\_flashing\_time(n1) - -Sätt intervallet blinkande objekt blinkar i. *n1* är ett intervall i -tiondelar av en sekund mellan 0,1 sekunder och 1,5 sekunder. - -set\_line\_pattern(n1) - -Sätt mönstret linjer ritas ut med. - -set\_point\_size(n1, n2) - -Sätt storleken på punkter och linjer som ritas ut. *n1* är storleken i -x-led (mellan 1 och 15 pixlar) och *n2* är storleken i y-led (mellan 1 -och 15 pixlar). - -set\_text\_flashing(n1) - -Sätt om ny text som skrivs ut ska blinka eller inte. *n1* = 1 slår på -blinkande och *n1* = 2 stänger av blinkande. - -set\_text\_font(font\_num) - -Sätt typsnittet på ny text som skrivs ut. Se *REF*(vadå?) för information om de -olika typsnitten. - -set\_text\_zoom(x\_scale, y\_scale) - -Sätt skalfaktorn för ny text som skrivs ut. *x\_scale* är skalfaktorn i -x-led (mellan x1 och x8) och *y\_scale* är skalfaktorn i y-led (mellan -x1 och x8). - -set\_touch\_sound\_response(state) - -Sätt om displayen ska göra ljud när knappar trycks ned. *state* = 1 slår -på ljudet och *state* = 0 stänger av ljudet. - -toggle(x1, y1, x2, y2, down\_code, up\_code, just, text) - -Skapa en tryckbar omkopplare (till skillnad från en knapp, se -*key(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och -texten *text*. Hur texten justeras beror på *just* där 'R' gör texten -högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör -texten vänsterjusterad ('left'). Om knappen aktiveras läggs *down\_code* -i displayens interna minne och om knappen avaktiveras läggs *up\_code* i +\texttt{bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value, +type, pattern)} - Skapar ett stapeldiagram med ett hörn i \texttt{(x1, y1)} och ett +diagonellt hörn i \texttt{(x2, y2)}. \texttt{direction} är en av 'O', 'U', 'L' och 'R' och +bestämmer åt vilket håll "upp" är på stapeln. 'O' står för upp ('oben' på +tyska), 'U' står för ner ('unter'), 'L' står för vänster ('links') och 'R' står +för höger ('rechts'). Värdet stapeldiagrammet ska visa specifieras med +\texttt{update\_bar\_graph}. \texttt{start\_value} och \texttt{end\_value} +bestämmer vad som ska vara noll- respektive maxvärde för stapeldiagrammet. +\texttt{no} är stapeldiagrammets nummer och behöver specifieras när +stapeldiagrammets värde ska uppdateras. \texttt{type} sätts till 0 för en enkel stapel +och 1 för en stapel inuti en ram. + +\texttt{clear\_display()} - Rensar displayen. + +\texttt{continue\_line(x2, y2)} - Fortsätter en linje från den senast specifierade +linjens slut till \texttt{(x2, y2)}. + +\texttt{draw\_line(x1, y1, x2, y2)} - Ritar en linje mellan \texttt{(x1, y1)} och +\texttt{(x2, y2)}. + +\texttt{key(x1, y1, x2, y2, down\_code, up\_code, just, text)} - Skapar en +tryckbar knapp (till skillnad från en omkopplare, se \texttt{toggle()}) med +diagonella hörn i \texttt{(x1, y1)} och \texttt{(x1, y1)} och texten \texttt{text}. Hur +texten justeras beror på \texttt{just} där 'R' gör texten högerjusterad ('right'), 'C' +gör texten centerjusterad och 'L' gör texten vänsterjusterad ('left'). Om +knappen trycks ned läggs \texttt{down\_code} i displayens interna minne och om knappen +släpps läggs \texttt{up\_code} i displayens interna minne. + +\texttt{point(x1, y1)} - Ritar en punkt i \texttt{(x1, y1)}. Punktens storlek kan +anpassas med \texttt{set\_point\_size}. + +\texttt{put\_text(x, y, justification, text)} - Skriver texten \texttt{text} i +\texttt{(x, y)}. Hur texten justeras beror på \texttt{justification} där 'R' gör +texten högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör texten +vänsterjusterad ('left'). Om \texttt{justification} är 'R' bestämmer \texttt{x} +och \texttt{x} textens övre högra koordinat, om \texttt{justification} är 'C' +bestämmer \texttt{x} och \texttt{x} textens mittre koordinat och om +\texttt{justification} är 'L' bestämmer \texttt{x} och \texttt{y} textens övre +vänstra koordinat. + +set\_point\_size(n1, n2) - Sätter storleken på punkter och linjer som ritas ut. +\texttt{n1} är storleken i x-led (mellan 1 och 15 pixlar) och \texttt{n2} är +storleken i y-led (mellan 1 och 15 pixlar). + +\texttt{toggle(x1, y1, x2, y2, down\_code, up\_code, just, text)} - Skapar en +tryckbar omkopplare (till skillnad från en knapp, se \texttt{key()}) med +diagonella hörn i \texttt{(x1, y1)} och \texttt{(x1, y1)} och texten +\texttt{text}. Hur texten justeras beror på *just* där 'R' gör texten +högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör texten +vänsterjusterad ('left'). Om knappen aktiveras läggs \texttt{down\_code} i +displayens interna minne och om knappen avaktiveras läggs \texttt{up\_code} i displayens interna minne. -update\_bar\_graph(num, val) - -Skicka värdet *val* till stapeldiagram *num*. +\texttt{update\_bar\_graph(num, val)} - Skickar värdet \texttt{val} till +stapeldiagram *num*. -- 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') 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 768a3bcf62dc65005857ff61cc3e0dd9d974b919 Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Sun, 1 Dec 2019 22:24:42 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20felstavade/gl=C3=B6mda=20epost-adresser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index f46c71e..3094326 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -24,7 +24,7 @@ \orderer{Erik Frisk, Linköpings universitet} \ordererphone{+46(0)13-285714} -\ordereremail{ordere@liu.se} +\ordereremail{erik.frisk@liu.se} %\customer{Kund, Företag X} %\customerphone{+46 xxxxxx} @@ -32,7 +32,7 @@ \courseresponsible{Urban Forsberg} \courseresponsiblephone{+46(0)13-281350} -\courseresponsibleemail{urban.frsberg@liu.se} +\courseresponsibleemail{urban.forsberg@liu.se} \supervisor{Viktor Leek} \supervisorphone{+46(0)13-284493} -- 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') 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') 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') 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') 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') 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 bb0e77e2cfae0f9d800e985d6f9f2d77b8115f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Thor=C3=A9n?= Date: Mon, 2 Dec 2019 14:29:15 +0100 Subject: =?UTF-8?q?Skrivit=20text=20om=20forecast=20och=20karta.=20=C3=84v?= =?UTF-8?q?en=20justerat=20highToc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Davids txt filer/Forecasts.txt | 6 ++++++ .../Teknisk Dokumentation/Davids txt filer/Kartan.txt | 5 +++++ .../Teknisk Dokumentation/Davids txt filer/highToc.txt | 17 ++++++++++++----- 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt create mode 100644 Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt new file mode 100644 index 0000000..2089418 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt @@ -0,0 +1,6 @@ +Forecasts beräknar den approximerade varvtiden utifrån tid fram tills senast +passerad givare samt hastighet i tidigare segment. Genom att veta en +genomsnittlig hasftighet 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. \ No newline at end of file diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt new file mode 100644 index 0000000..32a7339 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt @@ -0,0 +1,5 @@ +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. \ No newline at end of file diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt index 861a0e4..98e70f8 100644 --- a/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt +++ b/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt @@ -1,5 +1,12 @@ -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 garantera 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}. + +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. \ No newline at end of file -- cgit v1.2.1 From 88f6dd1f607addcea89ba33add08d7d9e611fefd Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 14:31:47 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20handhavande?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex index 8fd7b8e..668a1c3 100644 --- a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex +++ b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex @@ -1,7 +1,7 @@ \section{Handhavande} \label{app:handhavande} Starta Matlab 2015b. Observera att användaren måste använda datorn som finns -inne i bilbanerummet och som är inkopplade till bilbanan. Inne i Matlab ska användaren navigera sig till yc4 mappen och öppna den. Därefter markera och högerklicka på mappen kod och välj alternativet ''Add To Path''. Klicka på ''Select Folders And Subfolders'' som dyker upp när musen pekar på ''Add To Path''. Därefter expandera bilbana mappen följt av yc4 mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn i Matlab. +inne i bilbanerummet och som är inkopplade till bilbanan. Inne i Matlab ska användaren navigera sig till ''Kod'' mappen (som finns tillgängliga för alla i projektet). Börja med att högerklicka på mappen ''Kod'' och välj alternativet ''Add To Path''. Klicka på ''Select Folders And Subfolders'' som dyker upp när musen pekar på ''Add To Path''. Därefter expandera bilbana mappen följt av yc4 mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn i Matlab. Därefter välj vilka banor som ska köras via den externa touch displayen. Justera också referenstiden genom att klicka på plusstecknet eller minustecknet (notera att referenstiden ändras med 0.5 s intervall). Kryssa även i om någon av banorna ska köras manuellt. Starta genom att trycka på knappen nere i det högra hörnet på displayen. Observera att bilarna måste placeras några decimeter innan målgivaren före start. @@ -19,6 +19,6 @@ Om knappen Varv väljs kommer information såsom ''target'' vilket är vald varv “mean” som är genomsnittlig varvtid och “stdev” är standardavvikelsen. För att se varvtiden för den andra banan klicka på knappen uppe i högra hörnet. -Om programmet kraschar: Om programmet kraschar öppna main.m. Därefter skriv in +Om programmet kraschar öppna main.m. Därefter skriv in ctrl och enter i avgränsningen som heter ''\%\% END OF RACE'' som finns i slutet av koden main.m. -- 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') 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 186d5ac6f52e1a198c8e6b1235c45978c0aa6da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 14:36:37 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20grafer=20till=20resultat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Figures/lap_times_with_calibration.png | Bin 0 -> 75980 bytes .../Figures/lap_times_without_calibration.png | Bin 0 -> 95074 bytes .../Teknisk Dokumentation/Figures/segment_times.png | Bin 0 -> 119760 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.png create mode 100644 Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.png create mode 100644 Dokument/Teknisk Dokumentation/Figures/segment_times.png (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.png b/Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.png new file mode 100644 index 0000000..b4ab83a Binary files /dev/null and b/Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.png differ diff --git a/Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.png b/Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.png new file mode 100644 index 0000000..d7059c0 Binary files /dev/null and b/Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.png differ diff --git a/Dokument/Teknisk Dokumentation/Figures/segment_times.png b/Dokument/Teknisk Dokumentation/Figures/segment_times.png new file mode 100644 index 0000000..c73c9b6 Binary files /dev/null and b/Dokument/Teknisk Dokumentation/Figures/segment_times.png differ -- 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') 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 a93a5ad7fcd49c16150cfdce07e79ce8fe898411 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 2 Dec 2019 14:50:54 +0100 Subject: =?UTF-8?q?L=C3=A4gga=20till=20BanaModell=20i=20figures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf | Bin 0 -> 226411 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf b/Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf new file mode 100644 index 0000000..8e003e9 Binary files /dev/null and b/Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf differ -- 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/root.tex | 2 ++ Dokument/Teknisk Dokumentation/text/06-resultat.tex | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 Dokument/Teknisk Dokumentation/text/06-resultat.tex (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 3094326..8bb8f01 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -3,6 +3,7 @@ %\usepackage[square]{natbib}\bibliographystyle{plainnat}\setcitestyle{numbers} \usepackage[round]{natbib}\bibliographystyle{plainnat} \usepackage{parskip} +\usepackage{subfigure} % Configure the document \title{Teknisk dokumentation} @@ -103,6 +104,7 @@ \input{text/03-systembeskrivning} \input{text/04-events} \input{text/05-end} +\input{text/06-resultat} \bibliography{references} 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') 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 --- Dokument/Teknisk Dokumentation/root.tex | 3 +++ Dokument/Teknisk Dokumentation/stats/lap.csv | 16 ++++++++++++ .../Teknisk Dokumentation/text/06-resultat.tex | 29 +++++++++++++++++++--- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/stats/lap.csv (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 8bb8f01..df42177 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -5,6 +5,9 @@ \usepackage{parskip} \usepackage{subfigure} +\usepackage{pgfplots} +\usepackage{pgfplotstable} + % Configure the document \title{Teknisk dokumentation} \author{Yc4} diff --git a/Dokument/Teknisk Dokumentation/stats/lap.csv b/Dokument/Teknisk Dokumentation/stats/lap.csv new file mode 100644 index 0000000..6383233 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/stats/lap.csv @@ -0,0 +1,16 @@ +x, y1, y2 +1, 17.06, 18.32 +2, 13.14, 15.37 +3, 12.89, 14.28 +4, 12.66, 13.83 +5, 13.28, 14.13 +6, 12.81, 14.14 +7, 13.23, 14.49 +8, 13.17, 14.60 +9, 13.46, 14.81 +10, 12.96, 14.13 +11, 13.22, 14.77 +12, 13.07, 14.23 +13, 13.54, 14.48 +14, 13.18, 14.77 +15, 13.52, 14.30 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 4ef2a72585e4031fd40a2832d3506150f569a3ff Mon Sep 17 00:00:00 2001 From: Alexander Tuneskog Date: Mon, 2 Dec 2019 17:44:01 +0100 Subject: =?UTF-8?q?=C3=84ndrade=20i=20material?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/appendix/03-material.tex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/appendix/03-material.tex b/Dokument/Teknisk Dokumentation/appendix/03-material.tex index e5c7df5..cd266f6 100644 --- a/Dokument/Teknisk Dokumentation/appendix/03-material.tex +++ b/Dokument/Teknisk Dokumentation/appendix/03-material.tex @@ -3,8 +3,9 @@ Projektgruppen har av beställaren tillhandahållits ett lab med följande utrustning: \begin{itemize} - \item En bilbana utrustad med givare vars funktion är att detektera passerade bilar. - \item Två datorer + \item En bilbana med två banor som är utrustad med givare vars funktion är att detektera passerade bilar. + \item Två datorer. \item En display med touchfunktionallitet. - \item Ett antal bilar + \item Ett antal bilar. + \item Handkontroller för manuellkörning av bilarna. \end{itemize} -- 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') 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 25b9038618fb898b18fbe330dfad37024998c831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 17:52:14 +0100 Subject: =?UTF-8?q?L=C3=A4gg=20till=20segmenttidsstatistik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/stats/seg-1.csv | 16 ++++++++++++++++ Dokument/Teknisk Dokumentation/stats/seg-2.csv | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 Dokument/Teknisk Dokumentation/stats/seg-1.csv create mode 100644 Dokument/Teknisk Dokumentation/stats/seg-2.csv (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/stats/seg-1.csv b/Dokument/Teknisk Dokumentation/stats/seg-1.csv new file mode 100644 index 0000000..08f126d --- /dev/null +++ b/Dokument/Teknisk Dokumentation/stats/seg-1.csv @@ -0,0 +1,16 @@ +2.580456602,0.409669224,1.976335036,2.737245161,1.019580692,1.789976648,2.688915463,2.480555998,1.371502818 +1.089008528,0.149070629,1.823282438,2.123671979,0.729764343,1.629769304,2.599892906,1.779746636,1.220484317 +1.200847511,0.319677008,1.249760579,1.999967153,0.789989992,1.71983782,2.399997263,1.919820712,1.299999145 +1.038647472,0.302946102,1.2001112,1.980000855,0.809882727,1.669918482,2.539808908,1.859977589,1.260176037 +1.281575954,0.469836708,1.199740649,1.949955435,0.859910869,1.759379678,2.460436073,1.939817804,1.360279538 +1.039605841,0.230003678,1.189114766,1.869710111,0.860537008,1.749956119,2.599539121,1.950342751,1.329626797 +1.16859076,0.419928319,1.204048346,1.949035387,0.869844235,1.720143362,2.599659901,1.939470177,1.360757867 +1.121544133,0.39011214,1.289853987,2.049963817,0.870024892,1.699752111,2.529774949,1.980001882,1.248476823 +1.231378788,0.391820849,1.320045164,2.029754249,0.860246179,1.750283901,2.649455037,1.950136091,1.280097171 +1.119519276,0.330008297,1.20004927,2.039708144,0.859411669,1.780598253,2.509887346,1.919954152,1.200445824 +1.251549351,0.390007442,1.30961602,2.060152429,0.879480613,1.740401174,2.479751597,1.900060732,1.216561198 +1.095326713,0.339268649,1.280894386,1.919514828,0.810552662,1.809252141,2.559926779,1.959983235,1.300340613 +1.171503161,0.369915232,1.299916002,2.020044651,0.879948677,1.809843722,2.599910698,2.049844406,1.340514768 +1.061439606,0.31006287,1.229839445,2.199930201,0.859931398,1.779992302,2.589838076,1.959917199,1.190440264 +1.351117042,0.39039818,1.299802407,2.060047388,0.869752538,1.780013173,2.529908389,1.980175011,1.25987289 +1.253474049,0.347515022,1.338160646,2.065913453,0.855257233,1.745941213,2.555780167,1.971320292,1.282638405 diff --git a/Dokument/Teknisk Dokumentation/stats/seg-2.csv b/Dokument/Teknisk Dokumentation/stats/seg-2.csv new file mode 100644 index 0000000..9c794a8 --- /dev/null +++ b/Dokument/Teknisk Dokumentation/stats/seg-2.csv @@ -0,0 +1,16 @@ +2.2904,0.3995,2.3366,3.0478,1.1897,2.1393,2.9396,2.5199,1.4514 +1.1477,0.2381,2.5374,2.3695,0.9699,2.0597,2.7598,2.0899,1.2003 +1.3086,0.3299,1.3698,2.12,0.9399,2.0598,2.7903,2.0896,1.2803 +1.1695,0.2499,1.22,2.0698,0.9399,2.04,2.7099,2.08,1.3601 +1.2126,0.2454,1.2807,1.9226,0.9997,2.15,2.8398,2.1399,1.3402 +1.1695,0.25,1.2797,1.9799,1.0299,2.1697,2.7298,2.1803,1.359 +1.2808,0.3397,1.3303,1.9593,1,2.2297,2.9003,2.0796,1.3703 +1.1415,0.25,1.2898,1.9999,1.0899,2.3699,2.96,2.1098,1.3905 +1.2896,0.3192,1.2906,2.0799,1.0306,2.2692,2.9701,2.1999,1.3697 +1.1099,0.3099,1.25,2.09,0.9798,2.2,2.7798,2.1501,1.2603 +1.3314,0.3097,1.2802,2.0861,1.0437,2.4099,2.9288,2.0311,1.3505 +1.0813,0.31,1.2299,2.0799,0.9501,2.2599,2.7787,2.1712,1.3702 +1.1796,0.3198,1.3399,2.1,1.05,2.3401,2.8897,2.09,1.1803 +1.3416,0.4099,1.3399,2.0599,1.0398,2.3299,2.82,2.1099,1.321 +1.1289,0.25,1.2601,0,0,2.3102,2.7898,2.0898,1.3105 +1.27886,0.302066667,1.442326667,2.140328571,1.018064286,2.222486667,2.839093333,2.142066667,1.32764 -- cgit v1.2.1 From 6b410dd15ae5817a10a540a10d23b514435c36e6 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 2 Dec 2019 18:19:09 +0100 Subject: Lade till filen flow i figures --- Dokument/Teknisk Dokumentation/Figures/flow.pdf | Bin 0 -> 30430 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Dokument/Teknisk Dokumentation/Figures/flow.pdf (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/Figures/flow.pdf b/Dokument/Teknisk Dokumentation/Figures/flow.pdf new file mode 100644 index 0000000..f853546 Binary files /dev/null and b/Dokument/Teknisk Dokumentation/Figures/flow.pdf differ -- 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') 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 171c59b7f5c88b63d8e16e464b1489e545c2860a Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 2 Dec 2019 18:38:43 +0100 Subject: Version --- Dokument/Teknisk Dokumentation/root.tex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index df42177..9eb6f3e 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -12,7 +12,7 @@ \title{Teknisk dokumentation} \author{Yc4} \date{\today} -\version{0.3} +\version{0.4} \reviewed{}{} \approved{}{} @@ -92,6 +92,9 @@ \hline 0.3 & 2019-12-01 & Andra utkast & Alla & \\ \hline + 0.4 & 2019-12-02 & Tredje utkast & Alla & \\ + \hline + \end{tabular} \cleardoublepage @@ -109,8 +112,6 @@ \input{text/05-end} \input{text/06-resultat} -\bibliography{references} - \cleardoublepage \appendix \input{appendix/01-handhavande} -- 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') 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 --- Dokument/Teknisk Dokumentation/root.tex | 1 + .../text/system/02-uppstart.tex | 36 ++++++++++++++++++++++ 2 files changed, 37 insertions(+) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 9eb6f3e..fa69833 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -4,6 +4,7 @@ \usepackage[round]{natbib}\bibliographystyle{plainnat} \usepackage{parskip} \usepackage{subfigure} +\usetikzlibrary{decorations.pathreplacing,angles,quotes} \usepackage{pgfplots} \usepackage{pgfplotstable} 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') 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') 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') 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 6e4e1d9e77201ae6dfd2e373acc9cc338b050d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 19:02:30 +0100 Subject: =?UTF-8?q?Tog=20bort=20on=C3=B6diga=20paket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index fa69833..1f29534 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -4,7 +4,7 @@ \usepackage[round]{natbib}\bibliographystyle{plainnat} \usepackage{parskip} \usepackage{subfigure} -\usetikzlibrary{decorations.pathreplacing,angles,quotes} +%\usetikzlibrary{decorations.pathreplacing,angles,quotes} \usepackage{pgfplots} \usepackage{pgfplotstable} -- cgit v1.2.1 From 84dfe6bf789966b92afa6ee65a68b5c0352f1fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Dec 2019 19:04:51 +0100 Subject: =?UTF-8?q?=C3=84ndra=20dokumenthistorik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 1f29534..133c2e7 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -80,18 +80,20 @@ \end{center} \section*{Dokumenthistorik} -\begin{tabular}{p{.06\textwidth}|p{.1\textwidth}|p{.45\textwidth}|p{.13\textwidth}|p{.13\textwidth}} - \multicolumn{1}{c}{\bfseries Version} & +\begin{tabular}{|p{.06\textwidth}|p{.1\textwidth}|p{.45\textwidth}|p{.13\textwidth}|p{.13\textwidth}|} + \hline + \multicolumn{1}{|c}{\bfseries Version} & \multicolumn{1}{|c}{\bfseries Datum} & \multicolumn{1}{|c}{\bfseries Utförda förändringar} & \multicolumn{1}{|c}{\bfseries Utförda av} & - \multicolumn{1}{|c}{\bfseries Granskad}\\ + \multicolumn{1}{|c|}{\bfseries Granskad}\\ \hline - 0.1 & 2019-11-28 & Struktur & Alla \\ + \hline + 0.1 & 2019-11-28 & Struktur & Alla & \\ \hline 0.2 & 2019-11-30 & Första utkast & Alla & \\ \hline - 0.3 & 2019-12-01 & Andra utkast & Alla & \\ + 0.3 & 2019-12-01 & Andra utkast & Alla & 2019-12-02 \\ \hline 0.4 & 2019-12-02 & Tredje utkast & Alla & \\ \hline -- 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') 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') 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 bf19000a6a56ecd0e481f75037727ddf2d8c7336 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 2 Dec 2019 19:35:27 +0100 Subject: =?UTF-8?q?Tog=20bort=20oanv=C3=A4nd=20paket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/root.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Dokument') diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex index 133c2e7..5accf7f 100644 --- a/Dokument/Teknisk Dokumentation/root.tex +++ b/Dokument/Teknisk Dokumentation/root.tex @@ -3,7 +3,7 @@ %\usepackage[square]{natbib}\bibliographystyle{plainnat}\setcitestyle{numbers} \usepackage[round]{natbib}\bibliographystyle{plainnat} \usepackage{parskip} -\usepackage{subfigure} +%\usepackage{subfigure} %\usetikzlibrary{decorations.pathreplacing,angles,quotes} \usepackage{pgfplots} -- 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') 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') 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') 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') 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