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 />

<strong>Kapittel</strong> <strong>1.</strong> <strong>Innledning</strong><br />

Roboten ”Floke” er bygd av medlemmer fra Eksperter i Team, gruppe 2 i landsbyen<br />

”Kreative løsninger med innebygd styringsdatateknikk” våren 2001, ved institutt <strong>for</strong><br />

Teknisk Kybernetikk, <strong>NTNU</strong>. Roboten løser oppgavene som beskrevet i rapporten<br />

”Floke, <strong>NTNU</strong>’s bidrag til Eurobot 2001”.<br />

Nye regler gjelder <strong>for</strong> neste års konkurranse i Paris, dvs ”Eurobot 2002”. Denne<br />

prosjektoppgaven vil analysere roboten, diskutere <strong>for</strong>skjellige <strong>for</strong>andringer som må<br />

gjøres og <strong>for</strong>eta en konklusjon basert på disse vurderingene.<br />

<strong>Kapittel</strong> 2, Robotbeskrivelse, gir en oversikt over hvordan roboten er satt sammen i dag.<br />

Det blir gitt en innføring i hvilke sensorsystem som brukes, hvordan roboten fysisk er satt<br />

sammen, dvs alt av kort, sammenkoblinger, plasseringer og tilkoblinger.<br />

<strong>Kapittel</strong> 3, Miljøbeskrivelse, tar <strong>for</strong> seg det domenet roboten er ment å fungere i. Dette er<br />

i henhold til reglene <strong>for</strong> konkurransen i 2002. De komplette reglene finnes i vedlegg A,<br />

og dette kapitlet gir en kortfattet innblikk i disse, slik at leseren raskt får en oversikt over<br />

hvordan konkurransen vil bli gjennomført.<br />

<strong>Kapittel</strong> 4, Roboten, Vil det bli beskrevet hvilke regler og restriksjoner som gjelder <strong>for</strong><br />

den deltakende roboten. Disse reglene må følges i design og utvikling av hardware,<br />

software og mekanisk ut<strong>for</strong>ming.<br />

<strong>Kapittel</strong> 5, Drøfting av <strong>for</strong>skjellige løsninger, inneholder en oppsummering av de<br />

viktigste <strong>for</strong>skjellene i reglene <strong>for</strong> 2002 kontra 200<strong>1.</strong> Her finner vi også tips og råd fra<br />

<strong>for</strong>rige gruppes erfaring med konkurransen, roboten og fremgangsmåte.<br />

Dessuten vil det bli beskrevet <strong>for</strong>slag til hvordan roboten kan bli designet, strategi,<br />

fremgangsmåte og en vurdering av <strong>for</strong>skjellige mekaniske innretninger.<br />

<strong>Kapittel</strong> 6, AI, vil <strong>for</strong>eta en analyse av robotens kunstige intelligens. I hvor stor grad skal<br />

man <strong>for</strong>andre eksisterende kode, hva kan brukes om igjen, og hva må skiftes ut? Det blir<br />

gitt en oversikt over strukturen på <strong>for</strong>skjellige metodekall i AI-tråden, og en vurdering av<br />

de eksisterende filene, som er skrevet i programmeringsspråket C.<br />

<strong>Kapittel</strong> 7, Diskusjon og konklusjon, oppsummerer de <strong>for</strong>skjellige løsningene, ser på<br />

<strong>for</strong>deler og ulemper, som resulterer i en anbefalt fremgangsmåte <strong>for</strong> modifisering av<br />

roboten.<br />

<strong>Kapittel</strong> 8, Videre arbeid, gir tips og råd til realisering av nevnte konkluderte<br />

fremgangsmåte.<br />

Bakerst i vedlegg A finnes de komplette reglene <strong>for</strong> konkurransen, utgitt av ANSTJ. Det<br />

anbefales at disse studeres nøye før man går i gang med ombygging og realisering av ny<br />

robot.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

1


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

<strong>Kapittel</strong> 2. Robotbeskrivelse<br />

Her vil det bli gitt en oversikt om hvordan roboten fungerer i dag. Alle opplysninger er<br />

hentet fra rapporten som ble skrevet i <strong>for</strong>bindelse med vårens konkurranse i Paris, av<br />

medlemmene i Eksperter i Team. inngående beskrivelser av utstyr/kort og liknende som<br />

sees som lite relevant i <strong>for</strong>bindelse med reglene i Eurobot 2002 er utelatt. Ønskes mere<br />

in<strong>for</strong>masjon om dette, opp<strong>for</strong>dres leseren til å lese rapporten fra Eksperter i Team.<br />

Roboten har et chassis av aluminium. To motorer driver seks hjul, alle med framdrift.<br />

Styringssystemet <strong>for</strong> motoren blir tatt hånd om av et mikrokontrollerkort. En vanlig<br />

mainstream-PC med operativsystemet Windows 2000, som tar seg av høynivåstyringa.<br />

Roboten har (<strong>for</strong>eløpig) disse ulike sensorsystem <strong>for</strong> navigering over spillebrettet:<br />

Figur <strong>1.</strong> To versjoner av roboten. Den første er en versjon fra 2001, den andre er <strong>NTNU</strong>’s bidrag fra 2000<br />

Type Modalitet Utstyr<br />

Eksteroseptiv Syn Webkamera <strong>for</strong><br />

sylinderdeteksjon<br />

Proprioseptiv Distanse Encodere <strong>for</strong> hjulrotasjon<br />

Proprioseptiv Vinkel Gyro <strong>for</strong> rotasjonsmåling<br />

Tabell <strong>1.</strong> Eksisterende sensorsystem<br />

Disse encoderne og gyroen sender data til mikrokontrollerkortet, som regner ut robotens<br />

posisjon, og sender dette til PC’en. Denne kombinerer dette med kamerainput og tar<br />

beslutninger <strong>for</strong> hva roboten skal <strong>for</strong>eta seg. PC’en sender deretter kommandoer til<br />

mikrokontrollerkortet, som regulerer motorene.<br />

Per i dag er roboten utstyrt med skyvearm <strong>for</strong> utplassering av flagg på lave sylindere, og<br />

en heis til en stor sylinder.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

2


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

2.1 Kort, sammenkobling og plassering<br />

Roboten består av to hoveddeler; topp og bunn. Bunnen inkluderer hjul, batterier, motor<br />

og encodere. Det brukes to stk. 12 V batterier (datablad) i serie som dermed <strong>for</strong>syner<br />

roboten med 24 V, 3 ampere. Disse batteriene er hovedstrøms<strong>for</strong>skyningen til roboten, og<br />

brukes nesten av alle deler av roboten som trenger strøm. Det er 3 hjul på hver side som<br />

blir drevet av en motor hver. Motorene er av type Maxon DC motor, 90 W og er koblet til<br />

hjulet i midten på hver side. (datablad). Hjulene er koblet sammen slik at det blir<br />

fremdrift på alle hjulene. Det er en encoder til hver motor. Disse teller antall<br />

omdreininger på motorakslingen, og sender denne in<strong>for</strong>masjonen til<br />

mikrokontrollerkortet.<br />

Sammenkoblinger mellom topp og bunn av roboten er spenning fra batteriene til powerkortet,<br />

spenning fra servo<strong>for</strong>sterkerne til fremdriftsmotorene og in<strong>for</strong>masjon fra<br />

encoderne til mikrokontrollerkortet. For å få tilgang til bunnen av roboten, løsner man to<br />

fester, ett framme og ett bak, og vippe toppen framover.<br />

På denne måten er det enkelt å bytte batterier.<br />

Toppen består <strong>for</strong> øyeblikket av flere deler. Den har en PC og et mikrokontrollerkort fra<br />

Barco Kongsberg, en flaggplantningsmekanisme med skyvearmskort og flaggheisen. I<br />

tillegg har den et tilkoplingspanel, to servo<strong>for</strong>sterkere, et power-kort, nødstopp, startsnor,<br />

styringskort <strong>for</strong> flaggdropping, webkamera og gyro.<br />

Figuren under viser plasseringen til de <strong>for</strong>skjellige delene på roboten.<br />

2.2 Tilkoblinger<br />

VGA-monitor, tastatur, mus, nettverk og ekstern spenningskilde kan koples til<br />

tilkoplingspanelet på siden av roboten. panelet har også en 10A sikring og AV/PÅ bryter<br />

<strong>for</strong> batteri-spenning, som ikke har noen innvirkning på den evt spenningskilda. PC’en vil<br />

altså starte opp ved tilkopling av 24V DC, uavhengig av hvilken posisjon bryteren står i.<br />

(vedlegg <strong>for</strong> koplingsskjema).<br />

Servo<strong>for</strong>sterkerne leverer spenning til fremdriftsmotorene som er plassert i bunnen av<br />

roboten. Det er en <strong>for</strong>sterker til hver motor. De får spenning fra power-kortet, og<br />

styringssignal fra Barco-kortet.<br />

Power-kortet får 24V DC fra enten batteriene eller fra en ekstern spenningskilde. Kortet<br />

bruker to DC/DC-konvertere (vedlegg) <strong>for</strong> å gjøre denne spenningen om til 5 og 12 V<br />

DC. De <strong>for</strong>skjellige enhetene på roboten kan da hente den riktige spenningen fra dette<br />

kortet.<br />

Nødstopp er påbudt <strong>for</strong> robotene i Eurobot-konkurransen, som må være godt synlig.<br />

Nødstoppen på roboten resetter Mikrokontrollerkortet, slik at dette må aktiveres pånytt<br />

<strong>for</strong> å fungere. Dermed vil ved bruk av denne nødstoppknappen føre til at roboten stopper<br />

opp, samtidig slik at PC’en holdes operativ. Dette <strong>for</strong> å unngå lang oppstartstid.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

3


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

Det er også påbudt med en startsnor, eller en annen startmekanisme. Robotens startsnor<br />

kopler 5V til en analoginngang på mikrokontrollerkortet ved hjelp av en ”pull-up”<br />

motstand. Selve startsnora er bare en enkel ”jumper” som kutter banen inn til kortet når<br />

snoren dras ut. Programmet sjekker denne inngangen kontinuerlig og starter roboten først<br />

når spenningen på inngangen er sunket under et visst nivå.<br />

Web-kameraet er koblet direkte inn på PC’en via Universal Serial Bus (USB). Kameraet<br />

er festet i toppen av roboten i front og ”ser” skrått fremover. Det brukes til å navigere inn<br />

mot sylindere, hvor roboten i henhold til konkurransen fra 2001 skulle sette ut flagg.<br />

2.2.1 PC<br />

En komplett PC er ”hjernen” til roboten. Den består av et NOVA-600 EBX Pentium<br />

hovedkort, og en AMD K6-2 300 MHz prosessor. Den har 128 MB RAM, og en harddisk<br />

av typen IBM Travelstar på 4.86 GB.<br />

Hovedkortet er en veldig kompakt industri-PC. Den har integrert grafikk- og<br />

nettverkskort. Det er også utstyrt med alle I/O-muligheter som en vanlig PC. Det vil si<br />

både seriell, parallell og USB-porter. Det har floppy-disk interface, og Ultra DMA/33<br />

IDE interface <strong>for</strong> tilkobling av harddisk. Det støtter prosessorhastigheter opp til 300MHz.<br />

Operativsystemet som kjøres er Windows 2000. Dette gjør det enkelt å benytte USBkameraer<br />

og å programmere på et høyt nivå. Bortsett fra dette har operativsystemet<br />

mindre betydning.<br />

Prosessoren på PC’en er følsom <strong>for</strong> overoppheting dersom det blir dårlig luftsirkulasjon.<br />

På roboten står prosessoren med vifte nesten helt inntil beskyttelsesdekselet, og det var<br />

der<strong>for</strong> nødvendig å lage en del luftehull. I tillegg har harddisken til roboten et punkt som<br />

ikke må dekkes til. Dette er viktig å ta hensyn til når denne skal festes. Punktet er godt<br />

merket. Brukermanual (vedlegg).<br />

2.2.2 Mikrokontrollerkort<br />

Dette kortet som nå står i er laget av Barco Kongsberg, og som har programvare derfra<br />

også. I årets robot vil det derimot bli portet VxVorks til kortet.<br />

2.3 Sensorer<br />

2.3.1 Encoder<br />

Generelt er encodere sensorer som oversetter mekanisk bevegelse som <strong>for</strong> eksempel<br />

hastighet og akselerasjon til elektriske signaler. Det finnes to typer encodere, absolutte og<br />

inkrementelle. Forskjellen mellom disse er at absolutt-encoderne har unike verdier <strong>for</strong><br />

eksempelvis hver posisjon I motsetning til de inkrementelle encoderne, der hver<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

4


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

<strong>for</strong>andring i posisjonen vil gi en inkrementering i verdi i <strong>for</strong>hold til <strong>for</strong>rige verdi, og må<br />

der<strong>for</strong> leses ved oppstart av roboten. På det nåværende tidspunkt benytter roboten to<br />

inkrementelle encodere, en <strong>for</strong> hver motor på høyre og venstre side. For hver hele<br />

rotasjon sendes det ut in indeks-puls, som markerer en enkelt posisjon, og opptrer på en<br />

egen kanal fra encoderen.<br />

2.3.2 Gyro<br />

Et gyroskop viser stillings<strong>for</strong>andring, her med hensyn på vinkel i horisontalplanet. Den<br />

består av et lite svinghjul opphengt på en aksel. Den fungerer slik at hvis roboten blir<br />

<strong>for</strong>søkt dyttet bort fra kjøreretningen vil den kunne justere seg tilbake til riktig retning<br />

igjen.<br />

Figur 2. Skisse av gyro<br />

Gyroens aksel må stå vinkelrett på den rotasjonsretningen som man vil registrere. En ytre<br />

kraft virker på akselen og denne vil bevege seg loddrett på kraften, eller på tvers av<br />

trykkretningen. Gyroen må i tillegg ha en referansespenning, i dette tilfellet 2,5 volt, der<br />

en rotasjon til høyre eller venstre vil medføre at spenningen stiger eller synker.<br />

Spenningsområdet ut fra gyroen er fra 0 til 5 volt, driftsspenning 12 volt. Gyroen er ellers<br />

ganske ømfintlig <strong>for</strong> kollisjoner og støt, og vil gå i metning ved hurtig rotasjon, <strong>for</strong><br />

eksempel hvis roboten snur seg <strong>for</strong> raskt. Maksimal rotasjon er 90 grader.<br />

2.3.3 Kamera<br />

Roboten benytter et webkamera <strong>for</strong> å kunne identifisere mål. Det har blitt laget algoritmer<br />

<strong>for</strong> å gjenkjenne diverse mål, spesielt noen sylindere som skulle finnes i <strong>for</strong>rige Eurobotkonkurranse.<br />

Disse baserer seg på <strong>for</strong>m og farge-gjenkjenning.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

5


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

Figur 3. Webkameraet som brukes i roboten<br />

Kameraet er ømfintlig <strong>for</strong> varierende lys<strong>for</strong>hold og det er montert på et polariserende<br />

filter <strong>for</strong> å filtrere vekk refleksjoner og hindre at kameraet går i metning.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

6


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

<strong>Kapittel</strong> 3. Miljøbeskrivelse<br />

Dette kapittelet dreier seg om hva roboten skal gjøre, hvordan og hva konkurransen,<br />

Eurobot 2002 går ut på.<br />

Konkurransen har tittelen ”Flying Billiards”, og går i korte trekk ut på at to roboter, som<br />

starter på hver sin side av et spillebrett, skal plukke opp baller spredt tilfeldig<br />

rundtomkring på bordet <strong>for</strong> så å legge disse oppi kurvene lokalisert i hvert hjørne.<br />

3.1 Spillebrettet<br />

Brettet er et rektangulært treplate som måler 300cm x 210cm og malt grønt. Det har to<br />

startsoner i hver ende, konstruert av to rektangulære treplater som måler 60cm x 60cm og<br />

malt i samme grønnfarge. De fire kurvene er lokalisert i hvert sitt hjørne. Ei kantliste av<br />

tre omringer spillebrettet med 7cm høyde og 2.2cm vidde, og er også malt grønt. Den<br />

strekker seg 15cm nedover under spillebrettet. Kantlistene er montert<br />

fullstendig på siden av brettet, slik at de dermed er uten<strong>for</strong> de nevnte brett-dimensjonene.<br />

Fullstendig beskrivelse av bordet finnes i appendiks A i vedlegg A<br />

Figur 4. Spillebrettet<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

7


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

Hvite linjer deler opp spillebrettet i et rutenett, og avstanden mellom hver linje er 30cm.<br />

Det blir da med rask hoderegning 10 linjer på tvers og 7 på langs av spillerfeltet. Linjene<br />

som går på tvers er 3cm vide, og de som går på langs er 2cm vide.<br />

3.2 Beacons<br />

Beacons er mottakere og/eller sendere som spillerne kan sette ut på bestemte plasser. Det<br />

er 10 steder man kan utplassere disse, altså 5 til hver spiller. Før hver match kan spillerne<br />

plassere ut sine beacons på 50cm høye stolper, som står på hver sin kortside av<br />

spillebrettet. I følge reglene kan man montere disse på andre siden av sin egen startsone,<br />

dvs dine over motstanderens kortside, og hans over din startsone.<br />

Figur 5. Beacons<br />

Platåene oppå disse er 8cm x 8cm og dekket med den harde delen av en borrelås. Det er<br />

der<strong>for</strong> intuitivt at de beacons’ene man vil plassere ut har den myke siden av en borrelås<br />

montert på undersiden. Detaljer finnes i appendiks A i vedlegg A.<br />

3.3 Ballene<br />

Tolv baller er ved start spredt utover spillebrettet, åtte er røde og fire er svarte. ”Billiardballen”<br />

er representert av en 14cm i diameter, og er egentlig rytmisk sportsgymnastikkballer,<br />

som egentlig er 16cm i diameter, men som blir tappet <strong>for</strong> luft til de når størrelsen<br />

14cm i diameter. Merket brukt av arrangørene er ”Togu”, som sikkert er lett å få tak i<br />

Frankrike, men som vi nok må lete litt ekstra etter her i Norge. Ballene veier 300g hver<br />

(+/- 2%).<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

8


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

3.4 Kurvene<br />

De fire kurvene er proposjonert til å inneholde omkring 4 baller hver. Kurvene har et<br />

system slik at det går an å ”stjele” en ball fra kurven, en etter en. Kurvene har sin åpning<br />

25cm over bordhøyde, og selve kurven er åpen i bunnen slik at en og en ball ligger under<br />

Figur 6. En av de fire kurvene<br />

kurven i kontakt med nettet, men nede på bordet. Vel og merke så er kurvene designet<br />

slik at man kan kaste ballene oppi dem.<br />

Bare sluttstatusen til kurvene bestemmer poengberegningen, dvs baller som blir lagt oppi<br />

en kurv, og deretter fjernet, vil ikke telle som poeng på denne kurven. Ballene må være i<br />

fysisk kontakt med kurvene <strong>for</strong> at poeng skal tilkjennes.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

9


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

<strong>Kapittel</strong> 4. Roboten<br />

Først og fremst må roboten være fullstendig automatisk styrt (utelukker all bruk av<br />

sendere), ha med seg sin egen energikilde, aktuatorer og kontrollsystem.<br />

4.1 Restriksjoner<br />

Endel restriksjoner er det (selvfølgelig) også på robotene:<br />

- Roboten kan ikke med overlegg hive ballene vekk fra spillebrettet.<br />

- I løpet av matchen kan ikke noe <strong>for</strong>m <strong>for</strong> utstyr befinne seg over lengre tid i området<br />

<strong>for</strong> operasjon av beacons, dvs over 50cm.<br />

- En robot må ikke designes <strong>for</strong> å skade motstanderens robot med vilje (Altså ingen<br />

robot-wars!!!!) eller spillebrettet. Den kan heller ikke ha f.eks. skarpe objekter som<br />

ved et uhell kan ødelegge brettet eller den andre roboten.<br />

- Man kan heller ikke med vilje hindre den andre roboten, eller bruke objekter eller<br />

grafikk som etterligner spillebrettet <strong>for</strong> å lure den andre roboten.<br />

- Ingen pyro<strong>teknisk</strong>e eller korroderende produkter samt levende objekter er tillatt.<br />

- Generelt vil roboten bli pælma på hauet ut av konkurransen hvis arrangørene finner ut<br />

at roboten er <strong>for</strong> farlig <strong>for</strong> omgivelsene til å bli brukt.<br />

4.2 Obligatorisk utstyr<br />

Et startsystem må være enkelt å aksessere og utløst av en minst 50cm lang wire. Wiren<br />

må aktivere kun et elektrisk utstyr. Denne wiren må ikke <strong>for</strong>bli på roboten etter start, men<br />

må røskes av i startøyeblikket <strong>for</strong> å sette i gang roboten. En tydelig AV-knapp må være<br />

påmontert, som det er nå i <strong>for</strong>m av en nødstopp.<br />

4.3 Spesifikasjon av roboten og beacons’ene<br />

- Den vertikale projeksjonen av roboten må ikke overstige 130cm (dvs den korteste<br />

vegen å gå rundt skyggen av roboten under vertikalt lys. Formen på denne<br />

projeksjonen kan varieres gjennom matchen, <strong>for</strong>beholdt at den holder seg innen<strong>for</strong><br />

omkretsen på 130cm.<br />

- Roboten må ikke være høyere enn 40cm.<br />

- Ballene som er plukket opp av roboten er ikke med i disse dimensjonene, men <strong>for</strong> å<br />

ikke <strong>for</strong>hindre motstanderens beacon, må disse ballene ikke løftes mere enn 50 cm<br />

opp (over lengre tid).<br />

- Beacon’ens størrelse må ikke overgå de 8cm lange sidene på support-stengene.<br />

- Roboten må lages av internt avhengige elementer.<br />

- Generelt vil en robot som tolkes som en trussel <strong>for</strong> sikkerheten mot de andre<br />

robotene, deltakerne, tilskuerne og whatever bli vist bort.<br />

Mere spesifiserte regler finnes i vedlegg A<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

10


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

<strong>Kapittel</strong> 5. Drøfting av <strong>for</strong>skjellige løsninger<br />

5.1 Regler <strong>for</strong> 2002 kontra 2001<br />

Den største <strong>for</strong>skjellen bortsett fra åpenbart andre spilleregler og annet spillebrett er at det<br />

ikke lenger er lov til å bruke såkalte MSP’s (Moving or Stationary Portion). Dette betyr at<br />

det ikke vil være lov med små ”terrorroboter” som hopper ut fra hovedenheten ved start i<br />

den hensikt <strong>for</strong> å sperre motstanderen eller utføre oppgaver i henhold til spillet. Dette<br />

tolkes som et <strong>for</strong>søk fra arrangørene på å legge vekt på at robotene skal være så<br />

intelligente som mulig, i steden <strong>for</strong> ”hack and slash”-teknikk som favoriserer raske<br />

”dumme” småroboter som bare har en oppgave. Dette vil være en stor <strong>for</strong>del <strong>for</strong> <strong>NTNU</strong>’s<br />

bidrag til konkurransen, siden det er nettopp AI og ikke terror bidraget har blitt lagt vekt<br />

på.<br />

5.2 Tips og råd fra <strong>for</strong>rige gruppes erfaringer med konkurransen<br />

5.2.1 Roboten<br />

Roboten er utstyrt med gummihjul og encodere <strong>for</strong> å måle hjulrotasjon. Disse encoderne<br />

sender beskjed til mikrokontrollerkortet som sender beskjed videre til robotens AI <strong>for</strong><br />

bestemmelse av posisjon. Erfaringer har vist at dette systemet <strong>for</strong> beregning av posisjon<br />

ikke er veldig nøyaktig. Grunnen til dette er at hvis roboten f.eks. spinner, vil ikke dette<br />

bli detektert som annet enn framdrift, og robotens posisjon vil dermed bli feil. Jo tidligere<br />

dette skjer, jo større og større vil feilen bli etterhvert som roboten navigerer seg frem på<br />

brettet. En kollisjon vil også føre til at roboten kommer ut av posisjon, og dette affekterer<br />

ikke bare encoderne, men også gyroen som måler <strong>for</strong>andring i vinkel. Ved normal<br />

dreining av roboten vil gyroen detektere <strong>for</strong>andringen i vinkel, men ved et <strong>for</strong>holdsvis<br />

kraftig støt vil dette ikke registreres grunnet gyroens fysiske begrensninger. Som sagt<br />

tidligere ligger gyroens begrensninger på 90 grader.<br />

Opprinnelig skulle robotens posisjon også beregnes mere nøyaktig av et ultralydsystem,<br />

som ved hjelp av signaler fra sendere montert på beacons’ene krysspeile avstanden til<br />

disse og dermed oppnå nøyaktig posisjon. Siden dette systemet ikke fungerte ved<br />

ferdigstilling av roboten, ble denne løsningen <strong>for</strong>kastet. Det stilles dessuten spørsmål om<br />

denne løsninga ville fungert på konkurransen i Frankrike. Personer som medlemmene i<br />

Eksperter i Team snakket med på konkurransen påsto at et slikt system ville bli kraftig<br />

<strong>for</strong>styrret av støy fra publikum, utstyr og annet kaos som pågikk når konkurransen var i<br />

gang. Det vil der<strong>for</strong> bli sett på som urealistisk å få et slikt system til å fungere annet enn<br />

ved ideelle <strong>for</strong>hold. Andre måter å bruke beacons’ene på vil heller bli vurdert.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

11


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

Figur 7. Beacons og sylindre med fargekode <strong>for</strong> navigering<br />

I <strong>NTNU</strong>’s bidrag til konkurransen ble det brukt anretninger med fargekoder som var<br />

plassert på beacons’ene, og ved hjelp av webkameraet kunne roboten navigere seg fram<br />

til disse. Dette vil være en bedre løsning også <strong>for</strong> bidraget til 2002.<br />

5.2.2 Mikrokontrollerkortet<br />

Mikrokontrollerkortet har programvare fra Barco Kongsberg, og er designet <strong>for</strong> å operere<br />

en maskin <strong>for</strong> å plotte store prosjekter på arkstørrelser opp til A0. Kompilator ble utlånt<br />

fra Barco Kongsberg, og var ikke særlig optimalt å ha med å gjøre. Det var liten eller<br />

ingen muligheter <strong>for</strong> feilsøk med dekoderen, og roboten måtte rett og slett kompileres og<br />

deretter kjøres <strong>for</strong> feilsøk. Dette kortet vil nå få sin programvare erstattet med VxVorks,<br />

slik at feilsøk blir betydelig lettere.<br />

5.2.3 Kameraet<br />

Kamerasynet var veldig ømfintlig <strong>for</strong> varierende lys<strong>for</strong>hold. Spesielt gjaldt dette <strong>for</strong><br />

deteksjon av de orange sylinderne som var dekt med et hvitt lag på toppen. Det var denne<br />

hvite ovalen kameraet skulle se etter, men siden lys<strong>for</strong>holdene varierte veldig fra<br />

konkurranse til konkurranse måtte kameraet kalibreres <strong>for</strong> hver gang, uten kanskje å vite<br />

helt hvordan det skulle bli. Lys<strong>for</strong>holdene varierte sterkt mye på grunn av om<br />

konkurransen ble filmet av kameraer eller ikke. Kraftige lys montert på tv-kameraene<br />

bidro til at kameraet gikk i metning og så kun hvitt, og dermed var ute av stand til å finne<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

12


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

sylinderne. Dette var dermed en ekstra ut<strong>for</strong>dring <strong>for</strong> roboten som fra før av kunne være<br />

uta av posisjon.<br />

5.2.4 Andre ting<br />

Det finnes per i dag ingen anretning <strong>for</strong> deteksjon av kollisjon, f.eks. i <strong>for</strong>m av<br />

mikrobrytere i front eller rundt roboten. Det kunne ha vært en <strong>for</strong>del med dette i og med<br />

at mikrokontrollerkortet kunne ha sendt et avbruddssignal til motorene sånn at de stoppet<br />

slik at encoderne ikke akkumulerte så mye feil i posisjonsberegningen. Implementasjon<br />

av dette kunne også få roboten til å snu hvis den kjørte på en permanent hindring, få den<br />

til å rygge litt, og snu.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

13


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

5.3 Forslag til adferd <strong>for</strong> oppgaveløsning<br />

Det er flere muligheter <strong>for</strong> å løse denne oppgaven. Noen virker mer eller mindre<br />

gjennomførbare enn andre, bla må kostnad taes i betraktning, men det er viktig å se på<br />

flere sider av saken, slik at man ikke blir <strong>for</strong> ensporet på bare ei løsning. På grunn av<br />

ballenes størrelse (14 cm i diameter) og vekt (300g) vil en noe diskutert ”støvsuger”-<br />

metode være uaktuell. Det var tenkt at roboten ved start skulle gå et fast mønster over<br />

spillebrettet, der den skulle suge opp ballene den støtte på gjennom en åpning i front.<br />

Etter denne oppsamlingen kunne en intern rutine som inkluderte f.eks. et kamera<br />

detektere fargen på ballene (rød eller svart), <strong>for</strong> deretter å kjøre til tilhørende kurv og<br />

legge dem oppi. Denne løsninga vil kreve en <strong>for</strong>holdsvis kraftig oppsugingsmekanisme,<br />

som vil sette store krav til dens motor, og dermed også størrelse. Vertikal projeksjon av<br />

roboten kan som kjent ikke overstige 130 cm, og høyden på max 40 cm. Å finne en<br />

såpass kompakt og kraftig støvsuger, og samtidig ta i betraktning av at roboten også skal<br />

bestå av bevegelsesmotorer, mikrokontrollerkort, hovedkort, kamera osv, vil bli<br />

tilnærmet umulig.<br />

En annen mulighet som også har vært tenkt på er at roboten ved start folder ut to armer<br />

som strekker seg til sidene av spillebrettet, <strong>for</strong> deretter å burne framover <strong>for</strong> å samle opp<br />

ballene, som blir liggende på ei rett linje <strong>for</strong>over med en arm på hver side. Ved å løfte<br />

disse armene opp, kan man kjøre til en kurv, <strong>for</strong> så å sette igang et samlebånd som ligger<br />

lansetter armene og lempe ballene i kurvene, omtrent som man transporterer folk opp ei<br />

rulletrapp, eller frakter malm opp i en smelteovn. Denne løsninga overskrider også<br />

reglene om vertikal projeksjon, altså at omkretsen rundt roboten bli <strong>for</strong> stor, dvs over 130<br />

cm.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

14


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

Figur 8. Forkastet løsning<br />

Det ligger der<strong>for</strong> an til at roboten må plukke opp disse en etter en ved hjelp av ei<br />

gripearm, og deretter samle disse opp og/eller kjøre bort til rette kurv med denne ene eller<br />

flere baller.<br />

5.3.1 Oppsamling av baller<br />

Den første ballen roboten vil møte er en rød, som alltid vil ligge ved utgangen av<br />

startfeltet. Siden man vet nøyaktig hvor denne ballen ligger, kan den plukkes opp relativt<br />

enkelt. Ballen kan plukkes opp av ei enkelt klo montert på robotens front. Det er to<br />

strategier herfra:<br />

- kjøre bort til motstanderens kurver og droppe den der<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

15


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

- samle opp flere baller før man cruiser bort til de rette kurvene<br />

Å plukke opp en etter en kan bli en tidkrevende affære. Å satse på å finne flere baller<br />

burde være en bedre løsning. Her ser jeg <strong>for</strong> meg en metode der ballene blir ved hjelp av<br />

ei klo løftet opp og lagt ned i et rør kuttet av på langs, slik at det ser ut som en half-pipe<br />

eller ei takrenne som heller skrått ned mot eller på siden av roboten, slik at ballene ligger<br />

på rekke og rad nedover langs denne renna. Det som er viktig på denne tegninga er<br />

prinsippet med kloa og renna. Designen ellers blir nok litt <strong>for</strong> fantasifull <strong>for</strong> praktisk<br />

bruk, og tar ikke spesielle plasshensyn.<br />

5.3.2 Avlevering av baller<br />

Figur 9. Forslag til robot sett fra siden<br />

I hvert tilfelle der roboten plukker opp en ball, må det registreres hvilken farge denne<br />

ballen har, og hvilken plassering den vil ha i renna. Hvis denne renna bli full, eller at ei<br />

viss tidsgrense går ut <strong>for</strong> ballsøk på spillebrettet, vil hovedoppgaven <strong>for</strong> roboten veksle<br />

fra ballsøk til kurvsøk, slik at den beveger seg mot kurvene <strong>for</strong> å avlevere ballene. Ved å<br />

bekke ned den andre enden av renna rundt en aksling plassert på midten av denne, vil<br />

ballene rulle fram og ligge fremst i renna. Roboten ”vet” da hvilken rekkefølge disse<br />

ballene ligger i, og kan deretter kjøre frem til rett kurv. La oss si at roboten har plukket<br />

opp baller slik at de ligger i denne rekkefølgen: svart-rød-rød-svart-rød. (Den første<br />

ballen som ble plukket opp er den røde som lå ved startposisjonen, og vil da ligge<br />

bakerst). Siden den ballen som ble sist plukket opp er svart, vil roboten ta retning mot en<br />

av sine egne kurver, ta den første ballen i renna ved hjelp av kloa, og droppe den i<br />

kurven. Posisjonen til ballene vil da være rød-rød-svart-rød. Deretter vil den kjøre til<br />

motstanderens kurver, <strong>for</strong> så å droppe av disse der. Så snur den, <strong>for</strong> å dumpe den siste<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

16


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

svarte ballen, og returnerer nok engang til motstanderens kurver <strong>for</strong> å slippe av den siste<br />

røde ballen.<br />

Figur 10. Forslag til robot sett <strong>for</strong>fra<br />

Det er også videreføre denne ideen videre. Etter at ballene er oppsamlet i renna og<br />

vinkelen snudd, kan roboten spare tid f.eks. ved først å avlevere alle de svarte ballene den<br />

har plukket opp i renna ved sine egne kurver. Det stilles dermed krav til at kloa kan<br />

bevege seg langs renna og plukke opp baller med bestemte farger. La oss anta den samme<br />

ballposisjonen i renna: svart-rød-rød-svart-rød, og at den kjører til sine egne kurver først.<br />

Kloa plukker opp den fremste svarte ballen, og hiver den oppi kurven. De andre ballene<br />

ruller da framover og inntar en ny posisjon i <strong>for</strong>hold til den gamle. Roboten må da selv<br />

oppdatere denne posisjonen. Den nye rekkefølgen blir da: rød-rød-svart-rød. Kloa må da<br />

plukke opp ball i posisjon nr 3 <strong>for</strong> å finne den svarte ballen, <strong>for</strong> så å dumpe denne i<br />

kurven. Posisjonene til ballene vil da være rød-rød-rød, og deretter kan roboten kjøre bort<br />

til en kurv på motstanderens side, og kvitte seg med resten, i og med at de alle er røde.<br />

En enda større videreutvikling kan være å ha ei renne på hver side av roboten, en <strong>for</strong> røde<br />

og en <strong>for</strong> svarte baller. Det vil dermed bli overflødig med en rutine som har kontroll på<br />

hvilken farge som ligger fremst osv. Denne løsninga stiller imidlertid sterke plasskrav, og<br />

blir om mulig ikke gjennomførbar.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

17


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

Figur 1<strong>1.</strong> Nærbilde av kloa med infrarødt deteksjossystem<br />

Renna (eller rennene) kan også utstyres med en egen avleveringsmekanisme, som skyver<br />

ballene ut av renna ved egen hjelp, slik at kloa bare har den oppgaven å samle opp baller.<br />

Dette vil <strong>for</strong>enkle designen av selve kloa. Har man to renner vil strategien bli å kjøre<br />

fram til en kurv, <strong>for</strong> så å tømme den korresponderende renna i kurven. Ved å skyve<br />

ballene ut av renna, vil disse falle ned i kurven, og roboten kan kjøre mot neste kurv<br />

igjen, gjøre det samme med disse ballene, <strong>for</strong> så å skifte oppgave til å søke etter baller på<br />

spillebrettet igjen.<br />

5.3.3 Sensorer<br />

Et veldig vitalt punkt ved hele spillet, er å finne fram på brettet, finne ballene og kurvene.<br />

Til dette kan det brukes flere <strong>for</strong>skjellige sensorer. Neden<strong>for</strong> følger ei liste over mulige<br />

typer sensorer, hva de kan brukes til, og hvor aktuelle de er.<br />

Type Modalitet Utstyr Anvendelsesområde Aktuell<br />

Eksteroseptiv Syn Webkamera Deteksjon av baller og kurver Ja<br />

Eksteroseptiv Berøring Følere, ”bumper switches” Deteksjon av kollisjon Ja<br />

Proprioseptiv Distanse Encodere Registrering av hjulrotasjon Ja<br />

Eksteroseptiv Distanse Optisk mus Registrering av bevegelse Ja<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

18


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

Proprioseptiv Vinkel Gyro Registrering av horisontal Ja<br />

rotasjon<br />

Eksteroseptiv Posisjon Ultralyd plassert på Krysspeiling av ultralydsignaler Nei<br />

beacons’ene, mottaker på<br />

roboten<br />

Eksteroseptiv Deteksjon Infrarød sensor Deteksjon av ball i kloa Ja<br />

Eksteroseptiv Posisjon Strekkoder på beacons’ene,<br />

webkamera på roboten<br />

Krysspeiling av strekkoder Ja<br />

Tabell 2. Forslag til sensortyper<br />

Siden ballene er tilfeldig spredt rundtomkring på brettet (bortsett fra en rød), blir det<br />

vanskelig å lage en <strong>for</strong>håndsbestemt rutine som optimaliserer ruta som skal følges.<br />

Kameraet vil da innta en viktig posisjon <strong>for</strong> å finne ballene og kurvene. Det er viktig å ta<br />

hensyn til flere faktorer sånn som lys<strong>for</strong>hold, kameravinkel, og posisjon, slik at man vet<br />

om kurven man leter etter er ens egen eller motstanderens.<br />

For å <strong>for</strong>hindre at roboten ”stanger” inn mot en sidekant, kan følere plasseres i fronten og<br />

på bakparten. Kjører roboten i sidekanten, vil disse ”bumper swith’ene” utløses slik at<br />

roboten kan rygge litt, og snu seg bort fra kanten. Det vil da bli å betrakte som en<br />

avbruddsrutine.<br />

Encoderne er viktige <strong>for</strong> å måle distansen som er kjørt. Disse gir direkte in<strong>for</strong>masjon om<br />

hvor roboten befinner seg på brettet, medmindre en kollisjon har skjedd, eller at hjulene<br />

spinner, isåfall er det viktig å kunne benytte seg av annet lokaliseringsutstyr.<br />

Optisk mus har gjennomgått en rekke <strong>for</strong>bedringer i det siste. Den inneholder ingen<br />

trackball, og registrerer bevegelse ved direkte avlesning fra underlagets tekstur.<br />

Figur 12. Optisk mus fra Apinex.Com<br />

I motsetning til encoderne vil musa ikke lure sitt eget styringssystem ved en evt kollisjon,<br />

da den måler <strong>for</strong>flytning direkte på underlaget og ikke hjulrotasjon, og gjør dermed<br />

roboten mere robust ved slike tilfeller. Det samme gjelder ved spinn. Den kan monteres<br />

under roboten like over underlaget, og har den <strong>for</strong>del i <strong>for</strong>hold til tradisjonelle muser at<br />

den ikke har mekaniske bevegelige deler som kan slites ut og gi unøyaktig resultat. Den<br />

er også <strong>for</strong>holdsvis billig.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

19


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

Gyroen som måler rotasjon av roboten kontrollerer hvor mye roboten har snudd og om<br />

den er på vei i rett retning basert på målinger fra encoderne og styringssignal.<br />

Figur 13. Eksempel på gyro Gyrostar fra Murata<br />

Det har vært prøvd å implementere et system <strong>for</strong> å krysspeile posisjonen til roboten på<br />

spillebrettet ved hjelp av beacon-supports’ene. Men fra tidligere erfaring fra <strong>for</strong>rige<br />

gruppe virket ikke dette spesielt aktuelt, på grunn av all mulig støy under konkurransen i<br />

Frankrike. Det er derimot mulig å benytte en annen <strong>for</strong>m <strong>for</strong> krysspeiling ved å feste<br />

anretninger på beacons’ene som er påmontert strekkoder.<br />

Figur 14. Krysspeiling ved hjelp av beacons<br />

Disse strekkodene kan leses av enten en vanlig strekkodeleser eller kameraet som er<br />

festet i front av roboten. Denne muligheten bør kikkes på nøye da roboten enkelt kan<br />

komme ut av posisjon ved kollisjon og støt, <strong>for</strong> ikke snakke om at den kan spinne, og<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

20


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

dermed lure sine egne encodere. Posisjonen kan oppdateres ved slike hendelser, og selv<br />

om det kan ta tid, er det sterkt å <strong>for</strong>etrekke <strong>for</strong>an å bomme totalt på det man var på vei til.<br />

Denne løsninga ble som nevnt brukt av teamet fra <strong>NTNU</strong> ved konkurransen i 2000.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

21


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

<strong>Kapittel</strong> 6. AI<br />

Hvordan roboten skal oppføre seg blir avgjort på høyeste nivå av robotens kunstige<br />

intelligens. AI’en skal fungere slik at den kontinuerlig vurderer hvilken oppgave som det<br />

vil lønne seg å prioritere. Skal det plukkes opp baller, eller legge fra seg baller? Hvor står<br />

vi på spillebrettet? Hvilken kurv er det kortest vei til?. Må vi kjøre en omvei? Er det en<br />

rød eller svart ball vi har <strong>for</strong>an oss? De fleste av disse problemene må løses fra avstand,<br />

dvs roboten må bruke kamerasynet til å finne frem og vurdere avstander osv.<br />

6.1 Gjenbruk av kode<br />

Koden som eksisterer på roboten per i dag er skrevet i programmeringsspråket C. Siden<br />

koden legger stor vekt på målsøking, er det stor sannsynlighet <strong>for</strong> at mesteparten kan<br />

brukes på nytt, med mer eller mindre modifisering. AI’en kjører i en egen tråd som<br />

startes i programmet <strong>for</strong> kjøring av roboten. Det sendes kommandoer til<br />

mikrokontrolleren <strong>for</strong> å svinge, kjøre og sette ut flagg (som var hovedmålet <strong>for</strong><br />

robotfunksjonen). Tilbake kommer det posisjon beregnet fra encoderavlesning.<br />

Posisjoneringen er med andre ord ikke den del av den kunstige intelligensen.<br />

Figur 15. Nåværende AI-tråd<br />

6.2 AI-trådens virkemåte<br />

Figuren over viser hvordan roboten fungerer nå. En metode som må byttes ut er helt klart<br />

robot_set_flag(), ettersom det er snakk om å plukke opp baller denne gangen. Inn må to<br />

nye metoder, en <strong>for</strong> henting av baller, og en <strong>for</strong> avlevering av baller. Metoden<br />

command_goto_star kan skrives om <strong>for</strong> å finne fram til baller og kurver, og dermed lage<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

22


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

to instanser av denne. Strukturen på hvordan metodene kalles kan uten tvil gjenbrukes,<br />

det er bare hva metodene gjør og hvilke attributter og parametre de behandler som må<br />

<strong>for</strong>andres på.<br />

En ny oversikt over hvordan strukturen følger AI-tråden kan bli på følgende måte.<br />

Figur 16. Forslag til ny AI-tråd<br />

Vi ser at command_goto_star() er byttet ut med en ny metode som heter<br />

command_goto_goal(), som kan brukes til målsøking av både baller og kurver med<br />

<strong>for</strong>skjellige parametre. Den andre metoden som er erstattet, robot_set_flag(), blir<br />

etterfulgt av to nye metoder <strong>for</strong> å ta opp/avlevere ballene. Disse kan f.eks. være<br />

grab_ball() og release_ball(). Det kan diskuteres om disse metodene kan slås sammen til<br />

én, som selvfølgelig er mulig. Disse er likevel oppført som to ulike metoder <strong>for</strong> å<br />

fremheve funksjonaliteten til AI-tråden.<br />

De <strong>for</strong>skjellige filene som er implementert kan til stor grad benyttes igjen, og vil bli<br />

beskrevet under.<br />

6.2.1 ai.c<br />

Hovedtråden <strong>for</strong> kunstig intelligens er implementert i denne fila (altså diagrammene<br />

oven<strong>for</strong>). Denne tråden går kontinuerlig og kaller task_control() funksjonen slik at<br />

oppgaver blir vurdert og utført til enhver tid.<br />

6.2.2 command.c<br />

”robot.h” inneholder prototypene <strong>for</strong> de primitive kommandoene som sendes til<br />

mikrokontrolleren, disse er implementert i v01_robot.cpp. Laveste nivå <strong>for</strong> kommandoer<br />

er altså ikke implementert i command.c. Den er derimot kommandoer på et litt høyere<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

23


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


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

6.2.7 win_thread.c<br />

Inneholder windowsspesifikke funksjoner <strong>for</strong> bruk av tråder.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

25


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

<strong>Kapittel</strong> 7. Diskusjon<br />

Denne prosjektoppgaven har gått igjennom robotens eksisterende virkemåte, oppbygging<br />

og funksjonalitet. Det er vurdert å bygge om roboten slik at den kan ved hjelp av ei klo<br />

kan løfte opp ballene fra spillebrettet, samle dem opp i ei renne, <strong>for</strong> så å avlevere dem i<br />

kurvene plassert i spillebrettets hjørner.<br />

Spørsmålet er om det skal være ei eller to renner, avhengig av fargene på ballene.<br />

Fordelen med å dele opp i to renner er at man ved adkomst til en kurv kan tømme hele<br />

renna med baller som har den rette fargen til den korresponderende kurven. Problemet<br />

med dette er plasshensyn, og pga størrelsen på ballene (14 cm i diameter), i <strong>for</strong>hold til<br />

robotens begrensninger i høyde og omkrets. Denne løsninga krever et <strong>for</strong>holdsvis<br />

kompakt design, som tillater oppsamling på denne måten.<br />

Ved bruk av ei renne sparer man plass, og får sannsynligvis plass til flere baller. Da må<br />

det implementeres en rutine, som holder styr på rekkefølgen på ballene i renna.<br />

Inneholder renna f.eks. en svart ball plassert mellom flere røde, kan det føre til<br />

uøkonomisk kjøring mellom kurvene <strong>for</strong> å få tømt den.<br />

Bruk av sensorer er også et viktig spørsmål. Mange sensorer kan gi et større ”bilde” av<br />

hvordan verden ser ut rundt roboten. Men også <strong>for</strong> mange sensorer kan føre til ”overkill”,<br />

dvs en kombinasjon av mange sensorinput krever et komplekst styringssystem som må<br />

prioritere mellom disse. Å satse på færre sensorer gir et mindre komplekst<br />

styringssystem, og vil gi bedre oversikt når man skal debugge dette. Det vil også bli<br />

enklere å lage effektive veivalg, altså en plan <strong>for</strong> hvordan roboten skal komme seg fra A<br />

til B.<br />

AI’en er hjernen til roboten, og det hjelper ikke hvor mange ”smarte” mekaniske<br />

innretninger og sensorer man har hvis roboten ikke kan samordne disse funksjonene og<br />

navigere over spillebrettet. Men det er likevel en stor <strong>for</strong>del å ha bestemt seg <strong>for</strong> og ha på<br />

plass de funksjoner og innretninger som man har tenkt å bruke før en går løs på AI-delen.<br />

Som kjent eksisterer det allerede et omfattende AI-system implementert i C. Denne<br />

koden kan være tung å sette seg inn i, som kan føre til <strong>for</strong>virring spesielt der denne koden<br />

er dårlig kommentert. Dette er et arbeid som tar tid, og tidligere <strong>for</strong>fattere kan det bli<br />

nødvendig å få tak i, <strong>for</strong> å oppklare utydeligheter. Alternativet er å begynne helt på nytt,<br />

og skrive koden sjøl. Man har der<strong>for</strong> frihet til å implementere AI-systemet i et valgfritt<br />

programmeringsspråk, uten å være bundet til det som allerede eksisterer. På den måten<br />

har man full kontroll på metodekall og liknende fra første tastetrykk.<br />

På den annen side har koden blitt skrevet og testet av to tidligere bidrag, nemlig teamene<br />

bak <strong>NTNU</strong>’s bidrag både i 2000 og 200<strong>1.</strong> Den har blitt testet og kjørt mot andre roboter,<br />

som vi mangler muligheter til her. Det vil da være svært nytting å studere disse<br />

løsningene som er brukt, spesielt siden veiplanlegging og målsøkingsalgoritmene er svært<br />

like med de nye reglenes ut<strong>for</strong>dringer. Koden er som nevnt skrevet i C, som er et<br />

programmeringsspråk mye brukt i <strong>for</strong>bindelse med sanntidsprogrammering. Erfaring fra<br />

<strong>for</strong>rige års team viser at de også i stor grad kunne benytte koden fra tidligere år.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

26


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

<strong>Kapittel</strong> 8. Konklusjon<br />

Roboten bør bygges og mekaniske innretninger bør være på plass før programmeringen<br />

av roboten starter. Av plasshensyn bør roboten bygges med ei renne som har plass til<br />

ballene, og ei klo som løfter ballene opp i renna og som også kan brukes til å løfte dem<br />

bort fra dem, og i kurvene.<br />

Bruk av sensorer er viktig, og til det anbefales det bruk av kamerasyn <strong>for</strong> deteksjon av<br />

fargekoding på beacons’ene. For registrering av kjørt distanse og posisjon anbefales<br />

optisk mus, som i <strong>for</strong>hold til encodere ikke gir feil verdi med hensyn til kjørt distanse ved<br />

hjulspinn, som f.eks. kan inntreffe ved kollisjon. Det anbefales altså at man bytter ut de<br />

eksisterende encoderne, og erstatter dette med ei optisk mus. For måling av vinkel spiller<br />

gyroen en viktig rolle, og bør tas med. Disse tre sensorene i kombinasjon vil avgrense en<br />

”sensorjungel”, og vil gjøre det lettere å implementere styringssystemet.<br />

På grunn av godt testet kode <strong>for</strong> AI systemet som allerede er implementert på roboten, vil<br />

jeg anbefale at denne koden brukes som basis <strong>for</strong> løsning på styringssystemet. En del av<br />

koden må modifiseres og skiftes ut, og dette gjelder spesielt metodene som skal benytte<br />

robotens mekaniske anretninger. Metoden <strong>for</strong> å sette ut flagg må fjernes, og nye metoder<br />

<strong>for</strong> avhenting og avlevering av baller må settes inn istedet <strong>for</strong> denne. Metoden <strong>for</strong><br />

prioritetssjekk må også <strong>for</strong>andres. De delene av koden som tar <strong>for</strong> seg veivalg og<br />

ruteplanlegging kan til stor grad brukes igjen u<strong>for</strong>andret.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

27


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

<strong>Kapittel</strong> 9. Videre arbeid<br />

Denne oppgaven med å bygge om roboten kommer til å bli tidskrevende <strong>for</strong> ikke å<br />

snakke om økonomisk krevende. Det anbefales at den (eller de) som setter i gang med det<br />

praktiske arbeidet har god tid, tilgang til midler og et verksted i ryggen som kan være<br />

med på å teste ut <strong>for</strong>skjellige løsninger, spesielt når det gjelder de elektromekaniske<br />

komponentene. En god kommunikasjon med verkstedet er viktig <strong>for</strong> å lykkes. Spesielt<br />

gjelder dette hvis man har dårlige kunnskaper innen<strong>for</strong> bygging.<br />

Det anbefales sterkt at de mekaniske løsningene mhp ut<strong>for</strong>ming, kortplassering og utstyr<br />

gjøres først, før man starter på AI-delen. Tidligere erfaringer har vist at fysiske<br />

<strong>for</strong>andringer på roboten sent i implementeringsfasen kan være katastrofalt i<br />

programmeringshensyn, og mye må kanskje gjøres om igjen. Ved å følge dette rådet kan<br />

man spare seg mange grå hår.<br />

Av samme grunn er det viktig å ha kontroll på det økonomiske før man starter, slik at<br />

men vet hvor mye ressurser man kan regne med å bruke i utviklinga.<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

28


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

Litteratur<br />

[Murphy, 2000] Robin R. Murphy (2000). INTRODUCTION TO AI ROBOTICS. The<br />

MIT Press, Cambridge, Massachusetts, London, England.<br />

[Adams, 1995] Dogulas Adams (1995). HITCHHIKERS GUIDE TO THE GALAXY – A<br />

TRILOGY IN FIVE PRARTS. Heiminger, London.<br />

[Scicluna et al., 2001] Christophe Scicluna alias Mulder (presenter in English and<br />

French)), Gerhard Plavec (Austrian volunteer), Gilles Beaufils alias Le Gillou (trophy<br />

builder), Grégory Bastian alias Greg (working at the ANSTJ responsible <strong>for</strong> Eurobot),<br />

Jean-Philippe Fieldes alias JP (special correspondant in England),<br />

Magali Reyter alias Gali (chief translator !), Patrick Quéméré alias Pat (our doctor :-)<br />

Soudabeh Serre alias Soudi (member of the Fribotte team in 1999), Véronique Raoul<br />

(Deputy Head - ANSTJ).<br />

http://www.anstj.org/robot/concours/eurobot/rules/rules_en.html.<br />

[Jensen et al., 2001] Lars Christian Jensen, Lasse Løvstakken, Øyvind Borgan, Trond<br />

Haukom og Alf Egil Edvardsen (2001) FLOKE, <strong>NTNU</strong>’S BIDRAG TIL EUROBOT 200<strong>1.</strong><br />

<strong>NTNU</strong>, <strong>Institutt</strong> <strong>for</strong> Teknisk Kybernetikk, Trondheim.<br />

[Tveide et al., 2000] Tallak Tveide, Henrik Schumann-Olsen, Yngve Ytterdal, Vemund<br />

Raggestad, John Reidar Mathisen, Vegard Evjen Hovstein, Trond Auestad. (2000) TEAM<br />

EUROBOT 2000. http://www.itk.ntnu.no/misc/eurobot0/<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

29


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

Index<br />

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

Norges Teknisk-Naturvitenskaplige Universitet<br />

30

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

Saved successfully!

Ooh no, something went wrong!