Amsterdam, augustus 2016
Robot op bezoek
Er is de laatste tijd nogal wat te doen over robots. Ze gaan ons helpen met de zorg voor ouderen, geven onze kinderen bijles, praten ons bij over het laatste nieuws terwijl we de afwas doen, of omgekeerd, doen de afwas terwijl we lekker de krant lezen. Meestal wordt er bijgezegd dat het nog niet zo ver is, maar dat de ontwikkelingen wel heel erg snel gaan.
Maar is dat wel zo?
Een pregnant voorbeeld is de veelgeprezen documentaire "Ik ben Alice". Een aantal oudere dames krijgt een robot op bezoek (en een filmploeg), en het bijzondere schijnt te zijn dat ze daar zo leuk op reageren. De robot, Alice, is weinig meer dan een pop, die op de bank zit, een beetje in het rond kijkt, en heel af en toe wat zegt -- toevallig altijd net als de begeleider even de kamer uit is. Wie het internet doorspit vindt wel ergens dat het gaat om een Wizard of Oz-experiment (een wat verhullende manier om toe te geven dat een mens de zinnetjes intikt), maar de ontwikkelingen gaan razendsnel, en dus...
Wie even doordenkt, snapt wel dat het één ding is om een robot te maken die de kamer stofzuigt, maar dat er veel meer komt kijken bij een robot die zich in verschillende situaties min of meer intelligent kan gedragen, en ook zelfstandig dingen kan leren.
![Nao](./images/nao.png)
De afgelopen weken hadden we een exemplaar van Nao te logeren, zodat we zelf eens konden uitzoeken wat er nu allemaal wel en niet mogelijk is. Deze robot kan opstaan, lopen en weer gaan zitten, en als ie op zijn snuit valt (wat bij onze leenrobot nogal eens gebeurde) kan hij meestal zelf weer overeind komen. Verder kan hij spreken en luisteren via de ingebouwde tekst-naar-spraak en spraakherkenningssoftware, en hij vertoont ook enig autonoom gedrag: hij lijkt je bijvoorbeeld aan te kijken als je tegen hem praat.
En wat natuurlijk het leukste is: je kunt hem vrij eenvoudig programmeren via de bijbehorende Choregraph-software.
Rekenen met Nao
In de korte tijd dat Nao bij ons verbleef was het niet mogelijk om iets wereldschokkends te maken, dus we hebben onze doelstellingen heel bescheiden gehouden:
- Hoewel de ingebouwde tekst-naar-spraaksoftware van Nao wat ons betreft best voldoet, vonden we het natuurlijk wel leuker om Nao met de stemmen van Fluency te laten spreken. Onze software werkt alleen onder Windows, en Nao is van binnen een Linux-computer, dus het was niet mogelijk om de Fluency-software direct op de robot te draaien. Maar via een web-interface (vergelijkbaar met de demo op deze website) hadden we Nao al snel aan de praat met de Fluency-stemmen.
- We hebben ons afgevraagd wat een geschikte stem is voor deze robot. Is het een jongen of een meisje? Of kun je een volwassen stem gebruiken? Uiteindelijk bleek onze nieuwste stem Arno het best te klinken door de speakertjes in Nao zijn oren (ja, vreemde plek), dus hebben we het daar maar op gehouden.
- Daarnaast hebben we een voorbeeldapplicatie gemaakt die een beetje laat zien hoe je een robot als Nao zou kunnen toepassen in het onderwijs. Daarbij wilden we ook de ingebouwde spraakherkenning gebruiken, zodat er echt sprake is van een dialoog tussen mens en robot, hoe simpel ook. Daarom hebben we Nao optelsommetjes laten genereren (door twee toevalsgetallen te kiezen), en via de spraakherkenning te checken of de gesprekspartner het juiste antwoord geeft.
Het resultaat kun je bekijken in het filmpje hieronder:
Hoe werkt het?
Hieronder zie je de Choregraph flow chart, die de verschillende stappen in de applicatie met elkaar verbindt.
![Flow-chart in Choregraphe](./images/rekenen.png)
We lichten de verschillende stappen kort toe:
- Stand Up: Nao staat op. Dit is een standaardfunctie uit de Choregraph-bibliotheek. Zodra Nao staat worden simultaan de boxen Intro en Hello geactiveerd.
- Hello: Nao zwaait. Dit is ook een standaardfunctie.
- Intro: Dit is een Perl-script. De volgende tekst wordt naar de server van Fluency gestuurd: "Hallo! Ik ben Nao, en we gaan rekenen. Ben je er klaar voor?" De server stuurt mp3-geluid terug dat door Nao wordt afgespeeld. In het filmpje zegt Arthur nu "Ja hoor!", maar daar luistert Nao helemaal niet naar, de controle gaat naar de box Wait.
- Wait: Dit is weer een standaardfunctie, die zorgt voor een pauze van 1 seconde. Vervolgens wordt de box A+B=C geactiveerd.
- A+B=C: Dit Perl-script genereert twee toevalsgetallen, eentje tussen 1 en 20, eentje tussen 1 en 10. Het grootste getal wordt voorop geplaatst, en er wordt een eenvoudig optelsommetje van gemaakt dat als string wordt doorgegeven aan de box Ask.
- Ask: Dit script stelt de vraag "Hoeveel is A + B?", en geeft de input-string door aan Evaluate.
- Evaluate: Dit is een script voor de ingebouwde spraakherkenning van Nao, dat we op een aantal punten hebben aangepast. Als de gesprekspartner "stop" zegt, dan gaat de controle naar Bye bye. In de overige gevallen gaat de controle naar Feedback. Bij een goed antwoord wordt de string "C - dat is goed" doorgegeven, bij een fout antwoord (of als de spraakherkenning misgaat) wordt de string "Nee, dat is fout - A + B = C" doorgegeven.
- Feedback: De input-string wordt uitgesproken, en daarna wordt de Wait-box geactiveerd, en gaan we door naar de volgende vraag.
- Bye bye: Nao zegt "OK! Tot de volgende keer", en de controle gaat naar Sit Down.
- Sit Down: Nao gaat zitten. Dit is weer een standaardfunctie. Einde!
Broncode
Wie deze applicatie zelf wil uitproberen of aanpassen kan het Choregraph-project downloaden. Let op: deze applicatie werkt alleen op een echte Nao-robot, niet op een virtual robot!
RekenenMetNao.zipWil je de Fluency-stemmen gebruiken in een toepassing met Nao (of een andere robot)? Neem even contact met ons op!
Met dank aan
De Nao-robot maakt in 2016 een tour langs een aantal bedrijven en instellingen die aangesloten zijn bij NOTaS
Over Nao
De Nao-robot is een product van Aldebaran Robotics