Kapittel 1. Innledning - Institutt for teknisk kybernetikk - NTNU
Kapittel 1. Innledning - Institutt for teknisk kybernetikk - NTNU
Kapittel 1. Innledning - Institutt for teknisk kybernetikk - NTNU
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