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 ++++++++++ 7 files changed, 455 insertions(+) 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 (limited to 'Dokument/Teknisk Dokumentation/appendix') 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. -- 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/Teknisk Dokumentation/appendix') 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/Teknisk Dokumentation/appendix') 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 +++++++++++---------- 1 file changed, 91 insertions(+), 79 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/appendix') 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} -- 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/Teknisk Dokumentation/appendix') 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 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 +++++---- 2 files changed, 16 insertions(+), 13 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/appendix') 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 -- cgit v1.2.1 From 85db9e291b09f02ba3b0004a58ac907c30bea0bf Mon Sep 17 00:00:00 2001 From: Albin Date: Sun, 1 Dec 2019 19:15:16 +0100 Subject: =?UTF-8?q?L=C3=A4st=20igenom=20och=20justerat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex | 1 + Dokument/Teknisk Dokumentation/appendix/02-funktion.tex | 4 +++- Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex | 6 +++--- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'Dokument/Teknisk Dokumentation/appendix') 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 -- 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/Teknisk Dokumentation/appendix') 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 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/Teknisk Dokumentation/appendix') 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 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/Teknisk Dokumentation/appendix') 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