diff options
Diffstat (limited to 'Dokument/Teknisk Dokumentation/text/system/03-korning.tex')
| -rw-r--r-- | Dokument/Teknisk Dokumentation/text/system/03-korning.tex | 34 |
1 files changed, 34 insertions, 0 deletions
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}. |
