10.03.2014 Views

Kapittel 1. Innledning - Institutt for teknisk kybernetikk - NTNU

Kapittel 1. Innledning - Institutt for teknisk kybernetikk - NTNU

Kapittel 1. Innledning - Institutt for teknisk kybernetikk - NTNU

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Forslag til Ut<strong>for</strong>ming <strong>for</strong> Eurobot 2002<br />

nivå. Det finnes kommandoer som får roboten til å gå til et bestemt punkt. Funksjoner<br />

med suffiks_block returnerer ikke før roboten fysisk har utført en kommando. For<br />

eksempel vil funksjonen command_drive_block(dist, time) ikke returnere før roboten har<br />

kjørt dist millimeter eller etter time millisekunder, dersom ikke roboten har stoppet til da.<br />

6.2.3 debug.c<br />

Som navnet tilsier er denne fila ment <strong>for</strong> debugging. Den har en loggefunksjon som<br />

fungerer på samme måte som printf. Men som skriver en linje til fil <strong>for</strong> hvert kall. Fila<br />

blir lukket etter hvert kall, slik at ingen data skal gå tapt ved kræsj.<br />

6.2.4 geometry.c<br />

Inneholder geometri-funksjoner til bruk blant annet ved vei-finning og bildegjenkjenning.<br />

Disse funksjonene er svært generelle og vil kunne brukes i andre sammenhenger. En del<br />

er enkle vektorfunksjoner som lengde og skalarprodukt. Men det er også enkelte mer<br />

spesialiserte funksjoner som <strong>for</strong> eksempel geom_point_line_distance(Point a, Point b,<br />

Point c) som er svært nyttig <strong>for</strong> å finne ut om roboten kolliderer med noe (en annen robot,<br />

en kant) som står i punkt c dersom roboten skal gå fra a til b.<br />

6.2.5 table.c<br />

Kode som er direkte knyttet til spillebrettet ligger i denne fila. Algoritme <strong>for</strong> veifinning er<br />

også implementert her. Algoritmen som den eksisterer prøver å finne en brukbar vei<br />

mellom to vilkårlige punkter. Steg én i algoritmen er å <strong>for</strong>søke den rette veien mellom de<br />

to punktene Dersom dette ikke er mulig, finner algoritmen ett brukbart passeringspunkt<br />

som ligger på midtnormalen på linja mellom start- og sluttpunktet. Algoritmen kjøres så<br />

rekursivt på de to halvdelene av veien inntil en maksimumsgrense <strong>for</strong> rekursjonen. Veien<br />

blir tilslutt <strong>for</strong>bedret ved å fjerne unødvendige svinger.<br />

6.2.6 tasking.c<br />

Funksjoner i denne fila skal være med å avgjøre hvilken oppgave som til enhver tid skal<br />

prioriteres. Task_control() kalles jevnlig fra hoved-AI-tråden og denne funksjonen sørger<br />

<strong>for</strong> å velge rett task.<br />

Hver task har implementert to funksjoner i denne fila. Den ene funksjonen er en<br />

prioritetssjekk som beregner poengsum ut i fra avstand fra robot til et mål, tid anvendt <strong>for</strong><br />

å finne målet og parametre som kan settes fra brukergrensesnittet. Den andre funksjonen<br />

er funksjonen som kjøres når en oppgave har blitt valgt. Denne funksjonen skal sende<br />

riktige kommandoer <strong>for</strong> å styre roboten fram til målet. Funksjonen skal returnere<br />

umiddelbart <strong>for</strong> ikke å henge AI-tråden.<br />

Frode Vik Bredesen, <strong>Institutt</strong> <strong>for</strong> Teknisk Kybernetikk<br />

Norges Teknisk-Naturvitenskaplige Universitet<br />

24

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!