LINKÖPING UNIVERSITY Under ytan på människans bästa intelligenta vän En analys av AIBO ERS-7:s funktioner och användningsområden Elin Sjöström 2016-01-08 Bild 1. Föreställande en AIBO ERS-7 (PCmag, 2004). Elin Sjöström 1
1. ABSTRACT Denna rapport inleder med att förklara AIBO robotserien för att sedan rikta in sig på modellen AIBO ERS-7 och dess uppbyggnad. Till uppbyggnaden hör det en genomgång av hur roboten lagrar minnen, samt kommunicerar och varseblir sin omgivning med olika typer av sensorer. Det huvudsakliga ämnet som analysen går igenom är alla de olika system som finns tillgängliga för användaren att använda sig av för att skapa egna kommandon till AIBO. Dessa system är OPEN-R SDK, R-Code SDK, AIBO Remote Framework och AIBO Motion Editor, varav en djupare analys kommer göras av OPEN-R SDK och R-Code SDK. Slutligen följer en diskussion kring AIBOs användningsområden inom utbildning samt hur vi kan se på AIBO i förhållande till artificiell intelligens. Elin Sjöström 2
2. INNEHÅLLSFÖRTECKNING 1. Abstract... 2 2. Innehållsförteckning... 3 3. Ämne... 5 3.1 Inledning... 5 3.2 Uppbyggnad och funktion... 5 3.2.1 AIBO mind software... 5 3.2.2 LAN-modul... 6 3.3 Sensorer... 6 3.3.1 LED-lampor... 6 3.3.2 Sensorer för lokalisering... 7 3.3.3 Kamera och mikrofon... 8 4. Att arbeta med AIBO ERS-7... 9 4.1 OPEN-R SDE... 9 4.2 Installering av OPEN-R SDE filer... 10 4.3 R-Code programmering med AIBO... 11 4.5 OPEN-R programmering med AIBO... 12 4.5.1 Objekt... 12 4.5.2 Virtuella funktioner... 13 4.5.3 Implementering av Objekt... 13 4.5.4 Att skriva egna kommandon... 14 5. Diskussion... 15 5.1 AIBO inom utbildning... 15 5.2 AIBO som artificiell intelligens... 15 6. Avslutning... 16 7. Källor... 17 Elin Sjöström 3
7.1 Hemsidor... 17 7.2 Manualer... 17 7.3 Presentationer... 18 7.5 Bilder... 18 Elin Sjöström 4
3. ÄMNE 3.1 Inledning SONY corporation utvecklade i slutet på 90-talet en serie artificiella intelligenser i form av små hundrobotar, den så kallade AIBO-serien. Dessa utkom i fem huvudmodeller, det vill säga ERS-110, ERS-210, ERS-220, ERS-MACRON/ERS-311, ERS-7, innan de slutade säljas. I denna rapport kommer jag i huvudsak att diskutera och analysera den senast utgivna modellen AIBO ERS-7 som lanserades 2001-2005. AIBO-serien skapades i huvudsak som ett forskningsprojekt men blev sedan anpassad för allmänheten som en underhållningsrobot i hushållet (SONY, 2016). AIBO har även använts som arbetsprojekt inom programmeringsutbildningar och inom robotsporter, såsom Robosoccer där två lag med AIBO-robotar spelar soccer mot varandra. Tävlingen kallades även för "Sony Four-Legged League" eftersom SONY organiserade denna tävling och endast AIBO robotserien fick delta. Efter att AIBO slutade produceras och även andra robotmodeller fick delta bytte tävlingen namn till Robocup, standard platform league (Robocup, 2016). Namnet AIBO är en förkortning på Artificial Intelligence robot (SONY, 2016). 3.2 Uppbyggnad och funktion 3.2.1 AIBO mind software Vidare går vi in på hur AIBO ERS-7 modellen är uppbyggd och fungerar. Intelligensen hos roboten finns i AIBO mind software som ligger i en förflyttningsbar minnessticka på 32 MB. Den kontrollerar robotens beteende samt de applikationer som den kan använda sig av, minneskortet lagrar även robotens minne och personlighet vilket gör varje robot unik. Användaren kan koppla minnesstickan till en PC för att ladda ner nya innehåll och applikationer för att uppgradera AIBO mind software, när SONY aktivt arbetade med AIBO serien utvecklade de dessutom nedladdningsbart Elin Sjöström 5
innehåll som AIBO användare kunde hämta via internet (Sony Entertainment Robot Europé, 2003). 3.2.2 LAN-modul AIBO har även en inbyggd trådlös LAN-modul som är placerad i dess magparti. Med hjälp av denna LAN-modul så kan AIBO trådlöst sammankoppla med övriga elektroniska enheter i hushållet och överföra bilder, ljudfiler och meddelanden mellan sig själv och dessa. Användaren kan exempelvis skicka ett mejl till AIBO med kommandot att ta en bild, vilket roboten då gör och skickar bilden tillbaka till användaren. Roboten kan även ta bilder självmant. Genom att ta del av omgivningens minnen på detta sätt så lagras även filerna som minnen hos AIBO och gör roboten unik. Roboten har även en intern klocka som följer dygnets rytm, användaren kan exempelvis ställa in att roboten ska spela musik en viss tid varje morgon och agera väckarklocka. AIBO kan även ha olika karaktärsdrag beroende på vilken tid på dygnet det är, t.ex. kan roboten vara morgontrött eller kvällspigg (Sony Entertainment Robot Europé, 2003). 3.3 Sensorer AIBO har ett flertal olika sensorer utplacerade på kroppen för input och output. 3.3.1 LED-lampor För att visa känslor har AIBO en miniatyr högtalare på 20.8 mm och 500mW som är placerad på robotens bröstkorg, volymen går även att ändra. Roboten visar även känslor genom ett flertal LED-lampor i olika färger, dessa är placerade på: huvudet (16st vita, 4st röda, 4st blåa, 4st gröna), öronen (2st på vartdera), huvud-sensorn (1st vit, 1st bärnstensfärgad), LAN ON/OFF-knappen (1st blå), ryggsensorn (8st vita, 3st röda, 3st blåa, 2st orangea) (Sony Entertainment Robot Europé, 2003). Vid vartdera öra på AIBO finns det en LED-lampa, dessa lampor indikerar vilket humör AIBO är på. Om lamporna inte har någon färg så är roboten på Elin Sjöström 6
autonomt eller stationärt läge, om de är orangea är roboten på jam/dans humör, om de är rosa är roboten på lekhumör, om de är gröna vill AIBO vila, om de långsamt blinkar grönt vill AIBO bli upplockad, om de är gula är roboten i ett kliniskt läge, om de långsamt blinkar gult så kontrollerar roboten sina operationer, om de är blå är det i autonomt monitor läge och om de blinkar blått så är AIBO i fjärrkontrolls läge (Sony Corporation, 2003). 3.3.2 Sensorer för lokalisering För att känna sin omgivning har AIBO ett flertal sensorer, såsom temperatursensor, accelerationssensor, statisk elektisksensor (på huvudet och ryggen), trycksensor (på hakan och på alla 4 tassar) samt vibrationssensor (Sony Entertainment Robot Europé, 2003). När batteriet är lågt kan AIBO själv känna av det och söker upp sin laddningsstation med sina sensorer. Laddningsstationen är uppbyggd som en avlång plattform som roboten ska sätta sig på, på båda ändarna av plattformen finns en del med markeringar på. I den bakre delen finns en pelare med markeringar som AIBO först söker efter, i den främre delen finns en platt del med markeringar på som indikerar på var roboten ska Bild 2. Kartor för vart sensorerna är placerade på AIBO ERS-7 (Sony Entertainment Robot Europé, 2003) Elin Sjöström 7
ställa sig för att backa in i laddningsstationen på rätt sätt. När roboten har placerat sig på laddningsstationen så sover den tills batteriet är fulladdat och den ställer sig upp igen (Sony Entertainment Robot Europé, 2003). 3.3.3 Kamera och mikrofon För att se har AIBO en CMOS Image Sensor miniatyrkamera på 350,000 pixlar på sin nos samt en infraröd distanssensor vid halsen och för att höra har AIBO en miniatyrmikrofon på vartdera öra. Roboten lyssnar till både visuella och auditiva kommandon, de auditiva kommandona kan användaren själv programmera och för visuella kommandon används små kort som medföljer roboten. Alla kort har ett unikt mönster för olika kommandon som roboten har programmerats att känna igen och utföra (Sony Entertainment Robot Europé, 2003). Med hjälp av miniatyrmikrofonen kan AIBO lära sig sitt eget namn, samt sin ägares namn och utseende. Detta genom olika röstkommandon som aktiverar inställningar som sparas i minneskortet, för att aktivera inställningar för robothundens namn säger ägaren Name registration och för att aktivera inställningar för igenkänning av ägarens namn och ansikte ska ägaren säga Owner registration (Sony Corporation, 2003). Elin Sjöström 8
4. ATT ARBETA MED AIBO ERS-7 4.1 OPEN-R SDE Via SONY kan man fritt hämta verktyg för att vidare arbeta med AIBO ERS-7, dessa verktyg har samlingsnamnet OPEN-R SDE. Till dessa verktyg hör: OPEN-R SDK, R-Code SDK, AIBO Remote Framework och AIBO Motion Editor. Dessa dokument beskriver hur man kan bygga upp en forskningsmiljö och använda sig utav alla verktyg och applikationer som AIBO har, men de beskriver inte hur verktygen används eller hur roboten ska programmeras (3). OPEN-R SDK är en manual som innehåller information om hur roboten är uppbyggd, vilken räckvidd och lutning alla delar har samt deras min och max lutning. Hur man anpassar och aktiverar sensorerna och LED-lamporna finns även beskrivet. Denna information är nödvändig att kompilera vid programmering av AIBO (Sony Corporation, 2004). Det går att programmera med hjälp av denna manual i programmeringsspråket C++, men det kräver kunskap inom det språket. Men utifall användaren programmerar med C++ så kan användaren ha full kontroll över roboten (Ricardo Telléz, 2004). R-Code SDK är ett verktyg som låter användaren programmera AIBO genom att använda R-Code language. R-Code är ett skript språk som visar användaren en textfil med enkla kommandon. I denna textfil kan användaren ändra för att skicka kommandon till AIBO på ett simplare sätt som inte kräver tidigare kunskaper eller erfarenheter inom programmering eller C++. R-Code kan skapas i de flesta operativsystem. Användaren har dock inte lika mycket kontroll över roboten utan kan enbart ändra i de funktioner som finns i textfilen (Ricardo A. Telléz, 2004). AIBO Remote Framework är ett visuellt C++ program för datorn som har trådlös kontakt med hundroboten. Detta program fungerar som en simpel fjärrkontroll för att styra roboten (Ricardo Telléz, 2004) Elin Sjöström 9
AIBO Motion Editor, även kallade MEdit, är även det ett visuellt program för datorn där användaren lätt kan skapa olika rörelser och kommandon för AIBO (Ricardo Telléz, 2004). Bild 3. Visar layout för AIBO Remote Framework (Aibo-life). Bild 4. Visar layout för AIBO Motion Editor (Ricardo Telléz, 2004). 4.2 Installering av OPEN-R SDE filer Först behöver användaren ladda ner OPEN-R SDE filerna som finns tillgängliga via SONY, sedan ska OPEN-R SDK installeras på datorn. För att ha möjlighet att programmera AIBO behöver användaren även läsa av robotens minnessticka, detta gör hen genom att ha tillgång till en minnesläsare som är kopplad till både datorn och minnesstickan. Sedan ska det grundläggande systemet installeras på minnesstickan, vilket innebär att användaren ska välja miljötyp (Basic, Wlan eller Wconsole), minnesskyddstyp (memprot, nomemprot) samt kopiera OPEN-R filerna till minnesstickan. Efter det ska användaren sätta upp ett trådlöst nätverk som ska fungera som koppling mellan datorn och AIBO, sedan koppla in minnesstickan i AIBO och ställa in en FTP server som gör så att AIBO kan få tillgång till de filer som användaren programmerar i på datorn (Ricardo Telléz, 2004). Elin Sjöström 10
4.3 R-Code programmering med AIBO För att ha möjlighet att använda R-Code är det viktigt att R-Code filerna är kopierade till minnesstickan, vilket bör ha gjorts under installeringen. Sedan öppnar användaren R-Code filen och kopplar den med AIBOs IP-adress och börjar sedan skicka kommandon via konsolen i textfilen. Kommandon skrivs som ord i stora bokstäver separerade med kolon. Varje linje i programmet är ett enskilt kommando och de kan skickas individuellt, dvs. att alla kommandon inte behöver skickas samtidigt. R-Code är känslig för versaler och gemener, gemener används enbart vid användardefinierade variabler. Enbart ASCII bokstäver (American Standard Code for Information Interchange) och understreck kan avläsas av programmet (Ricardo Telléz, 2004). Exempel på några kommandon är ADD, FOR, IF, WAIT, CALL, RETURN, m.m. Kommandona EDIT, END och RUN används för att sända och utföra nya program till AIBO, medan kommandot @DISS avslutar förbindelsen mellan programmet och AIBO. VDUMP visar variabelnamnet i programmet och PRINT visar kommentarer. AIBO har även några inställda handlingar som den kan utföra vid kommando, t.ex. SIT, TURN, SEARCH, LIE, m.m. Dessa handlingar utförs via kommandot PLAY:ACTION: samt namnet på handlingen (Ricardo Telléz, 2004). R-Code använder sig även av olika operatorer för att visa relation. Dessa operatorer är: = som visar likhet, == som visar att en variabel är lika som, <> som visar att en variabel inte är lika som, < som visar att en variabel är mindre än, > som visar att en variabel är större än, && som visar och, som visar eller. Programmet använder även Systemvariabler för att beskriva AIBOs status. Systemvariablerna kan kontrolleras eller ändras för att få AIBO att använda sig av olika variabler i sin omgivning, exempel på dessa variabler är Face, Pink_Ball, Distance, etc. (Ricardo Telléz, 2004). För att utnyttja AIBOs auditiva input i programmet används variabeln AU_Voice för att känna igen röster och variabeln AU_Voice,ID för att identifiera det ord som rösten sagt (Ricardo Telléz, 2004). Elin Sjöström 11
4.5 OPEN-R programmering med AIBO 4.5.1 Objekt OPEN-R programmering innebär att OPEN-R objekt körs samtidigt mellan programmet och AIBO. Objekten i AIBO fungerar som processer som kommunicerar med objekten i programmet på datorn. Objekten kommunicerar med varandra via meddelanden som skickas emellan dem, för att kunna skicka dessa meddelanden så behöver de gå igenom portar. Portarna hos objekten är enkelriktade så en input och en output port krävs för kommunikation. Det positiva med detta system är koordinationen som uppkommer, användaren har lätt kontroll över vilket objekt ett meddelande kommer ifrån och till vilket objekt det är påväg (Ricardo Telléz, 2004). Figur 2. Visar hur meddelanden skickas emellan två objekt (Ricardo Telléz, 2005). Paradigmen som används kallas Händelse-orienterad-programmering, vilket innebär att övergångarna mellan de olika tillstånden aktiveras i respons till meddelanden från andra objekt. Exempelvis meddelandet Assert_Ready indikerar att funktionen är redo att utföras och Deassert_Ready indikerar att funktionen ska stoppas (Ricardo Telléz, 2004). Det objekt som initierar innehållet i ett meddelande kallas ett subjekt. Subjektet tilldelar även meddelandet till ett annat objekt, kallat observerare, och notifierar observeraren om meddelandet. Observeraren tar sedan emot detta meddelande, processar det och skickar sedan vidare ett Assert_Ready meddelande för att aktivera subjektet (Ricardo Telléz, 2005). Elin Sjöström 12
4.5.2 Virtuella funktioner Objekten behöver ha en virtuell funktion. Den virtuella funktionen definieras genom någon av följande funktioner: DoInit, DoStart, DoStop eller DoDestroy (Ricardo Telléz, 2004). DoInit kallas när ett objekt laddas i minnet och registrerar vilka subjekt och observerare som input ska skickas. DoStart kallas när DoInit har utförts och skickar Assert_Ready meddelanden till alla observerare. DoStop kallas vid nedläggning av systemet och skickar Deassert_Ready meddelanden till alla observerare. DoDestroy kallas när DoStop har utförts och raderar alla objekt (Ricardo Telléz, 2004). 4.5.3 Implementering av Objekt För att implementera ett objekt behöver det genomgå ett antal steg. Först behöver objektet ärva egenskaper från klassen OObject. Sedan behöver alla de ovanstående virtuella funktionerna skapas. Efter det ska objektets interna tillstånd definieras (Ricardo Telléz, 2004), en konstruktor skapas (d.v.s. en funktion som utförs varje gång ett nytt objekt skapas i klassen, den har samma namn som klassen, sätter ett initial värde på särskilda medlemsvariabler och har inte något returneringsvärde (Tutorialspoint, 2015)), samt ska objektens förbindelser med andra objekt definieras (Ricardo Telléz, 2004). Förbindelserna definieras på tre sätt: med stub.cfg definieras objektets input och output port, med connect.sfg definieras objektets förbindelser med andra objekt och med object.cfg definieras listor med objekt som ska utföras (Ricardo Telléz, 2005). Slutligen måste användaren skriva de procedurer som klassen kräver för att sända, erhålla och processa meddelanden (Ricardo Telléz, 2004). Elin Sjöström 13
4.5.4 Att skriva egna kommandon För att själv skriva ett kommando i programmet för att få AIBO att röra på sig så behöver användaren först initiera motorik-systemet för att få tillgång till alla leder som kan röra sig i roboten. Detta gör hen genom att skriva: OPENR::SetMotorPower(opowerON) Sedan ska användaren erhålla primitiva ID:n för alla de leder som ska användas i kommandot (Ricardo Telléz, 2005), detta hittas i OPEN-R SDK (Sony Corporation, 2004). När man har ID för de valda lederna så ska de definieras i kommandot samt göra dem tillgängliga. Efter det ska kommandot läsa av värdena för lederna och applicera deras nuvarande värden för vidare kalibrering (Ricardo Telléz, 2005). Sedan ska användaren skapa en Shared Memory Region, även kallad RCRegion, som kommandot ska gå via. Detta eftersom kommandot inte ska gå direkt till effektorn. Regionen fungerar som en buffert och gör att utförandet av kommandon genomförs smidigare och att effektorn tillåter stora kommandon. Detta gör användaren genom att skapa en kommandostruktur, genom att skapa RCRegionen och sedan genom att fylla regionen med kommandodata. I kommandot ska användaren sedan välja den skapta RCRegionen(Ricardo Telléz, 2005). Slutligen ska det initiala och det finala värdet av leden kalkyleras, en användarfunktion kallas för att utföra sekvensen med alla kommandon och värden som effektorn måste ha för att utföra det kommando som användaren skickade in. Allt detta sker i RCRegionen. Datan med alla värden för kommandot kommunicerar med OVirtualRobotComm, vilket är effektorn som blir meddelad om att ett nytt kommando finns tillgängligt. Effektorn skickar sedan detta kommando till rätt affektorer som utför kommandot (Ricardo Telléz, 2005). Elin Sjöström 14
5. DISKUSSION 5.1 AIBO inom utbildning Det som jag reagerade starkast på i min djupdykning kring AIBOs funktioner och användningsområden är alla olika system som finns tillgängliga för att kommunicera och skapa kommandon till vår fyrbenta lilla robot. Och att alla system baserar sig olika så att användaren själv får välja om hen vill koda kommandon i C++, skriva kommandon i en textfil eller visuellt klicka sig fram till olika kommandon. Att SONY dessutom gjorde ett flertal manualer för hur användaren själv kan programmera AIBO och att de aktivt arbeta med nya funktioner och innehåll som fanns tillgängligt online under AIBOs lanseringsperiod (1999-2005) visar det engagemang som lades ner på denna produkt. Om vi kombinerar alla ovanstående aspekter anser jag att denna robot skapade stora möjligheter för att använda i utbildningssyfte och för att visa allmänheten hur en typ av artificiell intelligens kan fungera. AIBO skapar möjlighet för användaren att se vad koden hen skriver har för effekt, om användaren provar skicka ett kommando så ser hen snabbt resultatet hos robothunden ifall den utför handlingen eller inte, och om den utför handlingen på ett önskvärt sätt. Tack vare alla olika typer av sensorer och leder som AIBO kan utnyttja får användaren möjlighet att öva sina programmeringskunskaper på komplexa uppgifter som kräver input och output från flera av dessa. Detta anser jag vara ett fantastiskt exempel på en nybörjaruppgift för programmeringsstudenter, men som även kan avancera till svårare och mer komplexa uppgifter som kan växa i takt med att studentens kunskap inom området ökar. 5.2 AIBO som artificiell intelligens Enligt egen åsikt tycker jag att AIBO till viss grad kan anses vara intelligent, den kan ta del av sin omgivnings minnen, minnas namn, ansikten och kommandon samt ha möjlighet att kombinera visuell och auditiv Elin Sjöström 15
stimuli. Tack vare dessa egenskaper så skapar AIBOn en egen unik karaktär och personlighet som förändras beroende på sin miljö. Det jag dock tycker begränsar AIBO är det faktum att den är skapad som en avbild av en hund, detta begränsar den till att enbart kunna utföra de funktioner som en vanlig hund kan göra (samt de funktioner som en maskin kan göra, som att dansa, spela musik och tala). Om vi jämför AIBO mot de robotar som håller på att utvecklas idag försöker man t.ex. med NAO även skapa finmotorik. 6. AVSLUTNING Det som är viktigt att tänka på är AIBOs användningsområden idag, vilket inte är så många. Eftersom AIBO slutade säljas för tio år sedan så har varken nya uppgraderingar eller reparationsmaterial funnits tillgängliga i butik under lång tid, detta gör det svårt att använda roboten utifall den går sönder eller om man behöver hitta en robot på marknaden att använda. Under denna tio års period har även AI-forskningen fortsatt framåt medan AIBO blivit kvar och samlat damm. Vilket innebär att det finns bättre AIs att använda sig av idag, i både utbildnings och forskningssyfte. Trots detta kan vi ändå se denna lilla robothund som ett roligt AI-projekt för den som vill leka med programmering. Elin Sjöström 16
7. KÄLLOR 7.1 Hemsidor SONY (2016). Sony-aibo. Hämtad den 08.01.2016: http://www.sonyaibo.com Tutorialspoint (2015). Tutorialspoint. Hämtad den 08.01.2016: http://www.tutorialspoint.com/cplusplus/cpp_constructor_destructor.htm Robocup (2016). Hämtad den 08.01.2016: http://www.tzi.de/spl/bin/view/website/history 7.2 Manualer Ricardo Telléz (2004). Aibo Quickstart Manual. Universitat de Girona: http://www.ouroboros.org/aibo-quickstart.pdf Ricardo A. Telléz (2004). R-Code SDK Tutorial. http://www.ouroboros.org/rcode_tutorial_1v2.pdf Sony Entertainment Robot Europe (2003) SONY ERS-7 [Broschyr]. Belgien. Hämtad den 08.01.2016: http://www.sony-aibo.com/wpcontent/uploads/2013/01/aibo_ers7_brochure.pdf Sony Corporation (2003) SONY AIBOEYES User s guide. USA: https://docs.sony.com/release/aiboeyes_ug.pdf Sony Corporation (2004) ERS-7M2 User s guide (basic). USA: http://www.aiai.ed.ac.uk/project/aibo/documents/ers-7m2/aibo-basic- Manual.pdf Sony Corporation (2004) OPEN-R SDK Model Information for ERS-7. http://www.cs.utexas.edu/~pstone/courses/395tfall05/readings/modelinfor mation_7_e.pdf Elin Sjöström 17
7.3 Presentationer Ricardo Telléz (2005). Aibo Programming Course. Campus Universitari de la Mediteránia: http://www.ouroboros.org/slides_2005.pdf Ricardo Telléz (2004). Aibo Programming: An Introduction to R-Code and OPEN-R. Campus Universitari de la Mediteránia: http://www.ouroboros.org/present.pdf 7.5 Bilder PCmag (2004). Sony AIBO ER-S7M2. Hämtad den 08.01.2016: http://www.pcmag.com/article2/0,2817,1742094,00.asp Aibo-life. Hämtad den 08.01.2016: http://www.aibo-life.org/ Elin Sjöström 18