robocup - ida.liu.se · aldebaran nao bild 1. aldebaran nao. (aldebaran robotics) bakgrund den...
TRANSCRIPT
RoboCup Standardplattformsligan
Artificiell Intelligens 2, 729G11 Robin Rörberg
Fördjupningsarbete, HT 2009 870430-4859
Linköpings Universitet Robro483
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483 Sammanfattning Northern Bites tävlar i standardplattformsligan i RoboCup, tävlingen där robotar möts på
fotbollsplanen. Laget har mött stora framgångar och varit på prispallen flera gånger. I detta
fördjupningsarbete undersöker jag några tekniker de använder i sina robotar och hur dessa
lösningar fungerar.
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483 Innehåll
Syfte .......................................................................................................................................1
Bakgrund RoboCup ................................................................................................................1
Klasser ...............................................................................................................................1
Aldebaran Nao .......................................................................................................................3
Bakgrund ............................................................................................................................3
Design ................................................................................................................................3
Mjukvara ............................................................................................................................3
Northern Bites ........................................................................................................................4
Bakgrund ............................................................................................................................4
Syn .....................................................................................................................................4
Steg ett Planens kanter .................................................................................................5
Steg två - Färgövergångar ...............................................................................................6
Steg tre - Navigationspunkter ..........................................................................................6
Steg fyra - Målet .............................................................................................................6
Steg fem - Bollen ............................................................................................................7
Steg sex Sidlinjer och hörn ...........................................................................................8
Gång ...................................................................................................................................9
Beteende ........................................................................................................................... 10
FSA .............................................................................................................................. 10
Player ........................................................................................................................... 11
Tracking ....................................................................................................................... 11
Navigation .................................................................................................................... 12
Roller............................................................................................................................ 12
Diskussion ............................................................................................................................ 12
Litteraturförteckning ............................................................................................................. 14
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
1
Syfte
Eftersom robotar alltid varit den del som för mig representerat AI kändes det självklart att
dyka ner i ämnet när denna kurs presenterades. RoboCup visade sig innehålla en blandad
kompott av teknologier och tillämpningar spännande nog att gräva djupare i. Bland de olika
ligor som finns tycker jag standardplattformen är den som tilltalar mig mest, då den ger
möjligheten till ett otal olika lösningar av samma problem med samma verktyg och hårdvara.
Syftet på uppsatsen är att beskriva några av de bakomliggande teknologierna som använts av
ligans silvermedaljör under RoboCup 2009.
Bakgrund RoboCup Iden om fotbollsspelande robotar föddes 1993. I juli fyra år senare gick den första RoboCup
av stapeln i Nagoya, Japan. Tanken bakom att robotarna spelar just fotboll ligger i att man
genom att skapa ett gemensamt problemområde där en stor mängd teknologier kan bli
studerade och applicerade tillsammans. (RoboCup.org, 2009)
K lasser
RoboCup Soccer är indelad i fem olika ligor inom vilka man kan delta:
Simulation Detta är en av de äldsta ligorna. Inom simulationsligan tävlar lagen med
självständiga agenter som bildar lag med 11 spelare i varje. Här ligger fokus på att
bygga intelligenta agenter som kan samarbeta för att föra laget till seger. Ligan består
i sig av ett antal olika ligor beroende på hur simulationerna representeras: 2D, 3D, 3D
Development och Mixed Reality. Den sistnämnda använder sig av robotar i ett par
centimeters storlek för att representera simulationerna och knyter på så sätt ihop
simulationen med verkligheten.
Små robotar I denna liga får robotarna inte vara större än 18 centimeter i diameter
och spelar med orangea golfbollar på en 4.5x6.5 meter stor plan. Lagen får vara upp
till fem robotar i varje och de arbetar med ett delvis distribuerat delvis centralt system
och fokus ligger på samarbete mellan agenterna.
Mellanstora robotar Här får robotarna vara upp till 50 centimeter i diameter och
spelar på en plan på 12x18 meter. Lagen får bestå av upp till sex robotar och alla
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
2
sensorer måste vara inbyggda i robotarna, det vill säga att man endast får använda
lokala perceptorer, och robotarna kan kommunicera genom ett trådlöst nätverk.
Standardplattform I den här ligan får lagen tillgång till identisk hårdvara, med andra
ord får alla likadana robotar. Det gäller nu att utforma den bästa mjukvaran till dessa
robotar för att vinna. Från och med 2008 har man bytt plattform från den fyrbenta där
man arbetar med Sonys robothund AIBO till den tvåbenta Aldebaran Nao som nu
används.
Humanoid Här tävlar människoliknande robotar i två underligor, KidSize (30-
60centimeter långa) och TeenSize (100-160centimeter långa). Här gäller det för
robotarna att kunna hålla balansen när de går och sparkar bollen samtidigt som de ska
veta var på planen de är och vart motståndare och medspelare befinner sig. Inom
humanoidligan finns även ett par tekniska utmaningar som robotarna kan tävla inom.
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
3
Aldebaran Nao
Bild 1. Aldebaran Nao. (Aldebaran Robotics)
Bakgrund
Den robot som används i standardplattformligan är utvecklad av det franska företaget
Aldebaran Robotics. Projekt Nao lanserades 2005 med målet att skapa en humanoid robot
med avancerade mekaniska och kognitiva färdigheter som är tillgänglig för allmänheten till
ett överkomligt pris.
Design
Nao är 58 centimeter hög och väger 4.3 kilo och har en batteritid som ger ungefär 90 minuter
av självständiga handlingar i världen. Han kan röra sig med 25 frihetsgrader, med detta menas
att roboten kan röra sig eller sin leder i 25 olika riktingar . (Russel & Norvig, 2003) En mängd
sensorer hjälper honom att navigera och utforska världen, däribland två CMOS
digitalvideokameror, tvåkanals sonar samt diverse accelerometrar, mikrofoner och
tryckkänsliga sensorer. Nao kan kommunicera via trådlöst nätverk, IR-sensorer eller med
röstkommandon.
M jukvara
Aldebaran Nao är utrustad med en specialdesignad version av operativsystemet Linux och kan
styras med det medföljande programmet Choregraphe eller med ett flertal olika programspråk
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
4
såsom Python eller C++. Genom att implementera moduler med sin egen kod kan användaren
få full kontroll av Nao ända ner på motornivå och få honom att göra allt från att gå runt till att
plocka upp saker eller till och med spela fotboll. Det finns också programvara som kan
simulera Nao vilket gör att användare kan testa sin kod virtuellt innan den laddas över till
roboten. Inbyggt i Nao finns även mjukvara för färg- och mönsterigenkänning,
hinderigenkänning med sonar och ljudlokalisering med mera.
Northern Bites Northern Bites kom tvåa i RoboCup i Österrike 2009 och förlorade i finalen mot det tyska
laget B-Human. Större delen av mitt arbete och i allra högsta grad detta avsnitt grundar sig på
Northern Bites rapport för år 2008. (Chow, o.a., 2008)
Bakgrund
Northern Bites grundades 2005 av Eric Chown på Bowdoin College i Brunswick, USA. Laget
bestod till en början endast av Chown och en student men har på senare tid växt till sig och
blivit avsevärt större. En del av lagets filosofi är att finna egna lösningar till de problem som
uppstår och att inte låna kod från andra lag, något som annars är mycket vanligt inom
RoboCup. Northern Bites har valt att programmera sina robotar i huvudsak med Python, men
även C++ och all kod som är stabil nog att användas ligger också uppe på deras hemsida
http://github.com/northern-bites/
Syn
Målet med fotboll är att göra mål, fler än motståndarna i alla fall. För att kunna göra mål
behöver man veta två saker, var finns bollen och vart står målet. För en människa handlar
detta om att vrida på huvudet litegrann och eventuellt blinka några gånger. För en robot är det
inte riktigt lika enkelt.
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
5
Bild 2. Fotbollsplanens layout. (RoboCup Standard Platform League (Nao) Rule Book, 2009)
De flesta lag i RoboCup löser synen i flera steg. Det första steget är att skanna varje pixel för
sig och sedan lägga dem i kategorier efter vissa färger eller så blir de markerade som
odefinierade. Detta kallas körlängds inkodning och ger klumpar eller längder med likfärgade
pixlar som sedan kan matchas för objektigenkänning. Den största fördelen med denna metod
är dess enkelhet, nackdelen är att större delen av synfältet består av pixlar som ska markeras
som odefinierade, med andra ord onödig information, vilket gör metoden ineffektiv.
Northern Bites lösning till detta är att syna problemet med en mer kognitiv infallsvinkel. För
att effektivisera det hela skulle systemet komma ihåg vart objekt befinner sig i ett sorts
korttidsminne och på så sätt inte behöva skanna hela fältet hela tiden. Den söker då efter
gränserna på spelplanen för att sedan söka upp mål och navigationspunkter. Detta kan då bli
styrt av korttidsminnet och kunskap om fotbollsplanens uppbyggnad och geometri. Laget fick
till slut fram en lösning som tacklar problemet i sex steg, men de lyckades tyvärr inte
implementera alla de nya idéer de hade. Därför är sexstegslösningen en blandning av gamla
och nya tekniker.
Steg ett Planens kanter
Först söker man efter om spelplanens kanter finns i synfältet. Detta görs genom att söka efter
kluster med gröna pixlar. Förutom att kategorisera pixlarna efter färg delas färgerna upp i
hårda och mjuka färger. Detta beror på att kameran ibland har problem att skilja mellan olika
färger i olika ljus beroende på
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
6
De mjuka färgerna är då en kombination av
två färger pixeln skulle kunna vara, såsom blågrön eller gulvit.
Steg två - Färgövergångar
Sedan kör man en sorts körlängds inkodning och skannar varje pixel nedifrån och upp,
samtidigt som detta görs letar systemet efter specifika färgövergångar, som till exempel blå
till gul för att på så sätt skapa en guide för var objektigenkänningen ska utföras.
Steg tre - Navigationspunkter
Nästa steg går ut på att finna navigationspunkter på de ställen där färgövergångarna skedde.
När objektigenkänningen sker här så räknas de mjuka färgerna in som den mest passande
färgen för att kunna identifiera objekten, skulle de pixlar med mjuka färger överstiga en viss
procent av de totala pixlarna så blir matchningen negativ.
Steg fyra - M ålet
I steg fyra används informationen om navigationspunkterna för att söka upp målen. Ska laget
till exempel anfalla det blåa målet söker den efter en blå målstolpe. Sedan skannas stolpen för
att finna dess gränser. Detta görs genom att först skanna den från den understa blåa pixeln till
den översta. Här räknas även pixlar som inte matchar färgen, men endast upp till ett visst
gränsvärde. När detta värde är uppnått markeras den plats där den sista korrekta pixeln sågs.
Man har nu fått fram toppen och botten på rektangeln som utgör målstolpen. Sedan utgår man
från mitten av denna och skannar åt höger och åt vänster. För att säkerställa kvaliteten på
rektangeln görs efteråt ett antal skanningar där man säkerställer att rektangeln innehåller
tillräckligt hög procenthalt med pixlar av korrekt färg. Detta gör att man får en rektangel med
en solid kärna av rätt färg.
När man har denna rektangel återstår uppgiften att ta reda på vilken sida av målet stolpen står
på. Eftersom roboten kan stå i en mängd olika vinklar gentemot stolpen kan det vara svårt att
lösa hur man ska finna den andra stolpen. Först söker man efter ett kluster pixlar med samma
färg som stolpen stort nog att vara den andra stolpen, hittar man inte detta undersöker man om
det går att se längre ut på ena sidan av planen än andra. Till sist söker man efter om det finns
mer av stolpfärgen på ena sidan eller andra. När man vet vilken sida den stolpe man funnit
finns på är det relativt enkelt att finna den andra stolpen. Sedan upprepas proceduren med att
skanna nerifrån och upp och sedan inifrån och ut för att få fram en godkänd rektangel.
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
7
Bild 3. En vinkel som kan skapa problem, både vid sökning efter den andra stolpen och efter
målets baksida. (Chow, o.a., 2008)
För att få ett klart skott mot mål söker man sedan efter baksidan av målet. Detta görs genom
att leta efter den största färgsamlingen mellan målen som inte är högt upp nog att vara ribban.
Finner man en sådan ansamling som inte är blockerad så har man skottläge, men då behöver
man ju bollen.
Steg fem - Bollen
För att söka efter bollen används så kallad klumpning. Detta går ut på att man tar alla de
kluster som skulle kunna vara potentiella bollar, i det här fallet grupperingar av orangea
pixlar, och kör dem genom en mängd filter för att ta reda på vilken som är den verkliga
bollen. Först skiljer man på små och stora potentiella bollar, i stora kluster tillåts en större
mängd pixlar med mjuka färger än i de små eftersom det är lättare att ta fel på små föremål.
Därefter undersöks var bollarna finns inom synfältet i förhållande till planens horisont. Om en
boll befinner sig ovanför horisonten blir den ignorerad, likaså om en liten boll befinner sig
långt ned på en bild med horisonten högt, detta eftersom bollen i så fall skulle vara nära
roboten och således vara stor. Nästa grupp med filter undersöker hur rund bollen är genom att
skanna från mitten på klustret och ut i åtta riktningar, detta tar också hänsyn till om bollen är
skymd av någonting och försöker då ta reda på vad det är som står i vägen. Den sista gruppen
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
8
filter säkerställer vad som finns runt omkring bollen, detta för att inte ta fel på till exempel en
röd yta på en motspelare och en liten boll. Detta gör man genom att söka efter gröna pixlar
runt bollen eller att det inte finns röda pixlar nära den. När man väl funnit bollen mäts
avståndet till den med hjälp av dess storlek.
Steg sex Sidlinjer och hörn
Det sjätte steget innebär att undersöka spelplanens sidlinjer och hörn. För att förenkla
identifieringen har man valt att dela upp linjer och hörn i två klasser vardera: VisualLine och
ConcreteLine respektive VisualCorner och ConcreteCorner där de visuella står för de
uppfattade linjerna och hörnen medan de konkreta står för de fysiska linjerna och hörnen med
sina bestämda platser på planen. Detta görs genom att söka efter punkter som ligger i mitten
på ett vitt område omgivet av grönt. Genom att hålla reda på om färgövergångarna går från
vitt till grönt eller vise versa vet kan roboten sedan finna en mittpunkt på linjen.
Dessa punkter kopplas sedan samman till linjer med en girig algoritm som fungerar genom att
först lägga in alla punkter i en lista sorterat på x-värdet. Den tar sedan den första punkten i
listan som startpunkt för linjen och lägger den i en separat lista. Sedan kollas alla punkter i
den första listan mot linjen och de som matchas läggs till fram till skillnaden mellan x-värdet
på startpunkten och de efterföljande värdena i listan blivit för stort. Om den nya listan med
linjen innehåller tre eller fler punkter används dessa till att skapa en VisualLine och de tas bort
ur den första listan. Annars nås slutsatsen att ingen godkänd linje har sitt ursprung i
startpunkten och proceduren upprepas med nästa punkt i listan.
De linjesegment man sedan fått fram matchas sedan mot varandra för att koppla ihop de linjer
som passar i vinklar till en längre sidlinje. Detta för att koppla ihop linjer som exempelvis är
delvis skymda av en motståndarrobot. Sedan gås de punkter som inte passat in på en linje
tidigare igenom ännu en gång för att undersöka om de passar in på någon av de befintliga
linjerna. Vissa linjer kan fortfarande vara felaktigt tolkade när något skymmer dem och för att
kontra detta förlänger nu roboten de linjer den ser för att undersöka om fler linjer kan
sammankopplas.
Därefter kollas alla linjer efter skärningspunkter sinsemellan och ifall vinkel mellan dessa är i
närheten av 90 grader. I så fall sparar den hörnen men håller reda på vilken av de tre
kategorierna, inner L, ytter L eller T, hörnet tillhör. På så sett kan den lättare avgöra vilket
ConcreteCorner det är den ser, vilket är nästa steg givet att den inte står i mittcirkeln. Detta
måste kontrolleras eftersom linjerna i mittcirkeln lätt feltolkas som hörn och därför görs flera
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
9
tester för att säkerställa att det inte är den man ser. Om så inte är fallet går man vidare till att
identifiera vilka hörn det är man ser.
Till detta använder Northern Bites följande algoritm:
For each corner identifed in the image (VisualCorner):
Get a list of all possible corners on the field (ConcreteCorners) for a given type
For each ConcreteCorner that the corner could possibly be:
For each visible object (beacon or goal post):
Estimate the distance between the corner and the visible object
If the estimated distance is too far from what the actual distance would be:
Throw out the ConcreteCorner currently being evaluated
När listan ConcreteCorner är en (1) stor vet man vilket hörn det VisualCorner man
undersöker verkligen är.
Gång
Ett gammalt ordspråk säger att man måste lära sig gå innan man kan springa. Detta gäller i
dubbel bemärkelse för fotbollspelande robotar, som förutom att röra sig snabbt på plan måste
de kunna hålla balansen när de sparkar på bollen eller stöter ihop med motspelare.
Northern Bites försökte inför RoboCup 2009 att ta fram en egen gångstil till sina robotar men
använde aldrig denna i tävlingssammanhang. Tanken bakom den nya gångstilen var att man
skulle få fram en stabil gång som samtidigt skulle kunna röra sig i flera riktningar. (Strom,
Slavov, & Chown, 2009)
I gångstilen man provade rörde sig robotens ben genom tre tillstånd i formen av en oval.
Genom att ändra ovalens form kunde man då ändra riktningen i vilken roboten rörde sig.
För att räkna på rörelserna hos robotens effektorer, till exempel benen, används framåt och
inverterad kinematik. Framåt innebär att man räknar ut slutpositionen för en effektor givet
ledernas vinklar. Detta går relativt enkelt att lösa med penna och papper. Inverterad kinematik
är inte riktigt lika enkelt. Detta är raka motsatsen till framåt kinematik och går inte att lösa
symboliskt. Med processen kan man räkna ut vilka vinklar som krävs hos lederna för att få en
önskad position hos en effektor. (Waldron & Schmiedeler, 2008)
Vill man nå målpositionen. T, för en effektor med tre frihetsgrader får man T=(x, y, z). Om
man har ett set leder j0 kan man sedan med hjälp av framåt kinetik hitta den nuvarande
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
10
positionen, t0, och då räkna ut det nuvarande felet som är avståndet mellan den nuvarande
positionen och målpositionen e(ti) = (T ti)2. Det ursprungliga felet kallar man e(t0). Nu söker
man efter set med leder j2 n där kombinationerna av ji har ett lägre fel e(ti) fram tills e(tn)
0. Effektorn har då nått målpositionen.
Men efter flera försök att ta fram en egen gångstil, dock utan att hitta tillräcklig stabilitet
valde man att använda den inbyggda gångstil som kommer med Aldebaran Nao.
Beteende
När roboten kan se och röra på sig måste den på något sätt få användning för sina färdigheter.
Northern Bites använder sig av en FSA (Finite State Automaton) struktur för att styra sina
robotars beteenden. Finite State Automaton är en modell för att beteende bestående av ett
ändligt antal tillstånd, förändringar mellan tillstånd och handlingar som åstadkommer dessa
förändringar. (Wikipedia, 2009)
FSA
Genom att först skriva en abstrakt klass som följer en FSA-struktur och lägga funktionerna
run() och addStates() tillsammans med funktioner för att byta tillstånd och diverse
hjälpfunktioner skapade man ett sorts skelett för lagets artificiella intelligens. Varje beteende
består sedan av två filer, en FSA-fil och en tillståndsfil. FSA-filen bygger på den abstrakta
klassen som skrevs tidigare och har i uppgift att köra addStates() som lägger till alla möjliga
tillstånd för det beteendet i en lista för att sedan kunna användas. Funktionen run() kallas
sedan med jämna mellanrum och utför det nuvarande tillståndet. Tillståndsfilen innehåller alla
möjliga tillstånd i form av funktionen. Nedan är ett exempel på ett sådant tillstånd:
def spinLeft(player):
if player.firstFrame():
turn = motion.WalkTurn(150.,30)
player.brain.motion.setNextWalkCommand(turn)
elif (player.shouldWalkForward()):
return player.goLater('walkForward')
return player.stay()
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
11
För att byta mellan olika tillstånd används goNow(), goLater() och stay(). Dessa gör så att
agenten byter tillstånd direkt, i nästa beteendecykel eller behåller nuvarande tillstånd.
Player
Det beteende som ligger högst i hierarkin är Player. Detta är det beteende som sköter
kontrollen över roboten och de andra beteendena genom funktionen switchTo(nyttTillstånd). I
Player ingår även ett antal roller och underroller för att styra roboten såsom ATTACKER eller
DEFENDER med underroller som kick och approachBall med flera.
När man spelar en match finns en Game Controller som styr matchen och startar och stoppar
robotlagen. Detta gör den genom att anta ett av fem olika tillstånd som robotarna sedan ska
anpassa sig efter.
1. gameInitial: Här sitter roboten kvar i sin ursprungsposition.
2. gameReady: Roboten reser sig upp.
3. gameSet: Roboten vrider på huvudet tills den upptäcker bollen.
4. gamePlaying: Detta är tillståndet där matchen spelas. Här har Northern Bites valt att dela
in det hela i tre tillstånd.
Hitta bollen
Gå till bollen
Gå genom bollen. För att ta med sig bollen går roboten helt enkelt rakt över den och
hoppas på att den får med sig den, men för säkerhets skulle hoppar den med jämna
mellanrum tillbaka till tillståndet för att hitta bollen.
5. gameFinished: När matchen är slut sätter sig roboten ner.
Utöver dessa tillstånd kan även GAME CONTROLLERN skicka penalized till enskilda
robotar vilket gör att de inte får röra sig så länge tillståndet gäller. (RoboCup Standard
Platform League (Nao) Rule Book, 2009)
T racking
FSA beteendet för spårning heter självklart nog Tracking. Det är ansvarigt för all kontroll av
huvudet såsom att vrida på det eller följa ett föremål med blicken. Den har tillstånd som
tracking och scan. Tillståndet tracking kan följa alla sorters visuella föremål såsom bollar,
navigationspunkter eller motståndare. Genom att göra spårning till ett eget beteende förenklar
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
12
man väsenligt vid testning och utveckling av nya algoritmer. Dessutom är det mycket
användbart att snabbt kunna byta mellan att spåra bollen och navigationspunkter i matchspel
så kan spårningen av målstolparna användas för att mäta avstånd som roboten har rört sig.
Navigation
Beteendet för navigation tar hand om förflyttningen av roboten. Detta gör så att de högre FSA
beteendena kan bry sig om vart roboten ska och när, aldrig hur den ska ta sig dit.
Roller
Som tidigare nämnt finns det ett antal roller som robotarna antar vid lag spel. Dessa roller är
styrda av överliggande formationer som i sin tur är styrda av lagets strategi. Strategierna
bestämmer alltså vilka formationer som ska användas. Laget startar alltid i formationen
kickoff Play men den som används oftast när matchen väl dragit igång är Normal. När
robotarna använder formationen kickoff Play så ställer sig den första i en defensiv position,
den andra jagar bollen och den tredje rör sig ner på flanken och gör sig öppen för en passning.
Rollerna som robotarna antar blir då alltså i tur och ordning DEFENDER, CHASER och
ATTACKER.
Dessa roller är också de som används i formationen Normal. Vad som sker här är att
robotarna kan byta roller med varandra under matchens gång efter behov. Den robot som har
rollen CHASER är den som har kortast tid till bollen, vilket så klart varierar under matchens
gång. Därför sänder robotarna alltid ut sin chase time, den tid den beräknar ha till bollen, till
sina lagkamrater. Om en robot då skulle ha en kortare chase time än den som har CHASER-
rollen så byter de roll om skillnaden är tillräckligt stor. Dock så har Northern Bites skapat ett
antal regler för att förhindra att robotarna inte klarar avgöra vem av dem som borde har rollen.
Dessa regler går ut på att ranka robotarna så att de med högre rank får företräde till att jaga
bollen. Det finns också ett gränsvärde där det måste vara tillräckligt stor skillnad innan de
byter.
Diskussion Allt eftersom jag samlat och gått igenom information för det här arbetet har respekten växt för
de som tävlar i RoboCup. Det ligger en otrolig mängd arbete bakom de robotar som ställer
upp i tävlingarna, till exempel använde Northern Bites sig av 3252 rader med if-satser för att
identifiera vilket hörn roboten tittade på för tillfället. Alla som någon gång knackat kod kan
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
13
med viss skräck tänka sig tiden det tog att skriva denna enda funktion, sedan ska flera hundra
funktioner till in i mixen.
Det kan tyckas onödigt att lägga en massa tid och pengar på robotar som ska spela fotboll,
men då missar man poängen. Genom att ha ett problem som sammanför problemområden som
kamerasyn, navigation, tvåbenad gång och interaktion mellan agenter kan man göra oerhörda
framsteg. Förutom att samla forskare från flera områden i samma lag som arbetar ihop och
byter idéer så hjälps man även åt mellan lagen. Det är mycket vanligt att nyare lag lånar stora
kodstycken från de mer rutinerade och sedan anpassar den till att passa sin egen spelstil och
sina lösningar. Detta gör att samma problem kan synas med ett otal olika ögon och
lösningarna blir smartare och effektivare för varje år.
Trots allt detta tror jag inte att målet att slå ett människolag år 2050 är realistiskt. Det skulle
nog vara möjligt om man bortser från kravet att det skulle vara på lika villkor, men med
människoliknande perceptorer och två ben skulle människorna nog vara svårslagna. Å andra
sidan är det faktiskt 40 år kvar och för så länge sedan sade man att en dator skulle slå en
människa i schack, vilket nu är ett faktum, även om man trodde att de då skulle ske inom tio
år. Fast schackspelare lägger inte krokben.
729G11 Artificiell Intelligens Robin Rörberg Fördjupningsarbete Ht 09 robro483
14
L itteraturförteckning Aldebaran Robotics. (u.d.). http://www.aldebaran-robotics.com. Hämtat från Produktblad
Aldebaran Nao: http://www.aldebaran-robotics.com/Files/DSV3+_Light.pdf den 01 Oktober
2009
Chow, E., Fishman, J., Strom, J., Slavov, G., Hermans, T., Dunn, N., o.a. (den 11 November
2008). Northern Bites 2008 Standard Platform Robot Team. Hämtat från www.tzi.de:
http://robocup.bowdoin.edu/media/2008/NorthernBites-TeamReport-2008.pdf
Committee, R. T. (den 23 Maj 2009). RoboCup Standard Platform League (Nao) Rule Book.
Hämtat från www.tzi.de: http://www.tzi.de/spl/pub/Website/Downloads/Rules2009.pdf den 1
Oktober 2009
RoboCup.org. (2009). Hämtat från http://www.robocup.org den 01 Oktober 2009
Russel, S., & Norvig, P. (2003). Chapter 25 - Robotics. i P. N. Stuart Russel, Artificial
Intelligence. New Jersey: Prentice Hall.
Strom, J., Slavov, G., & Chown, E. (2009). Omnidirectional Walking using ZMP and Preview
Control for the NAO Humanoid Robot. Hämtat från Northern Bites Blog:
http://robocup.bowdoin.edu/media/papers/strom-slavov-nao-omnidirectional-locomotion.pdf
Waldron, K., & Schmiedeler, J. (2008). Kinematics. i B. Siciliano, & O. Khatib, Springer
Handbook of Robotics. Berlin: Springer.
Wikipedia. (2009). Hämtat från Finite-state machine: http://en.wikipedia.org/wiki/Finite-
state_machine den 05 Oktober 2009