© Excellent backgrounds/Shutterstock.com
Sprachbefehle für LEGO-MINDSTORMS-Roboter

Alexa trifft LEGO


Vor 75 Jahren hat der Science-Fiction-Schriftsteller Isaac Asimov nicht nur den Begriff Robotik erfunden, sondern auch drei Robotergesetze formuliert [1]. Dem zweiten Asimovschen Gesetz gemäß muss ein Roboter den menschlichen Befehlen gehorchen. In unserem Artikel befassen wir uns mit der technischen Fragestellung: Wie gut kann ein Roboter im Jahr 2017 auf Befehle von Menschen hören? Zwei intelligente Maschinenwesen, Alexa und LEGO, treffen aufeinander, um uns bei der Beantwortung dieser Frage zu helfen.

Nachdem endlich die Schulferien begonnen hatten, habe ich mir überlegt, einen eigenen Amazon-Echo-Ersatz auf meinem Raspberry Pi mit einem USB-Mikrofon und einem Lautsprecher zu bauen. Mit einer Anleitung auf GitHub [2] ging das schnell und problemlos. Bis auf die Anmeldung beim Amazon Alexa Voice Service konnte ich alles alleine erledigen. Dann bat ich meinen Vater um seine Unterstützung. Nachdem plötzlich der Geist im Raspberry Pi auf das Wort Alexa reagierte, stellten wir ihm sofort alle möglichen Fragen und waren mit unserer neuen allwissenden Sprachassistentin erst einmal zufrieden. Als ich schließlich voller Begeisterung „Alexa, was ist LEGO?“ ausrief, sagte Alexa, sie habe keine Antwort auf diese Frage. Immer wieder stellte ich diese und ähnliche Fragen über LEGO MINDSTORMS EV3. Jedes Mal antwortete Alexa hilflos: „Da bin ich mir leider nicht sicher!“ oder „Das weiß ich leider nicht!“ bis sie endlich kapitulierte und zugab „Entschuldigung, das weiß ich nicht. Aber lass uns Freunde bleiben.“ „Papa, das kann nicht sein, dass Alexa LEGO nicht kennt. Jedes Kind weißt, was LEGO ist!“, meinte ich enttäuscht. Papa versuchte Alexa zu verteidigen und erklärte mir, woran das Problem vermutlich liegen könnte. Er meinte, Alexa Voice Service setze die Suchmaschine Bing ein und Alexa könne nur das beantworten, was durch Bing in aufbereiteter Form zur Verfügung gestellt wird.

Das Lexikonwissen ist nicht das einzige Kriterium der Intelligenz einer Sprachassistentin. Nicht weniger wichtig ist, dass die gestellten Fragen oder Aufgabestellungen korrekt im Sinne der Spracherfassung verstanden werden, und bei Unklarheiten und Mehrdeutigkeiten durch einen möglichst natürlichen Dialog mit dem Benutzer präzisiert werden können. In der letzten Zeit gab es viele Berichte über verschiedene Vergleichstests der persönlichen Sprachassistenten von Google, Amazon, Apple und Microsoft. So behauptet beispielsweise die amerikanische Consultingfirma Stone Temple [3] aufgrund ihres Tests mit ca. 5 000 unterschiedlichen Testfragen, Google Assistant verstehe Fragen besser und antworte sachbezogener als seine Konkurrenten. Gemäß einer deutschen Studie [4] von Digitaldienstleister Diva-e gemeinsam mit der Hochschule Aalen im Juni 2017 ist Alexa unter den digitalen Assistenten die Schlauste im Lande, vor allem aufgrund der permanent steigenden Anzahl an Drittentwicklern, die Applikationen für den Assistenten programmieren und so Alexa immer schlauer machen.

„Schlauer machen? Du meinst damit wahrscheinlich Alexa Skills?“, unterbrach ich Papa. „Kann ich mit meinen eigenen Skills Alexa beibringen, was LEGO ist?“ „Mehr noch, mit Alexa Skills kannst du sogar deinen LEGO-Roboter über Sprachbefehle steuern.“ „Papa, das ist doch cool! Lass uns gleich damit anfangen!“

Alexa, was sind Alexa Skills?

Mit Alexa Skills erweitert die Sprachassistentin ihre Fähigkeiten. So kann man per Sprachanfragen entweder an bestimmte Informationen kommen oder ein Gerät steuern. Vereinfacht gesagt, sind Skills für Alexa nichts anderes als Apps. Standardmäßig beherrscht Alexa nur wenige Fähigkeiten, wie Wettervorhersage, Nachrichtenwiedergabe, Abspielen von Musik oder Bestellungen bei Amazon. Die Anzahl der Skills nimmt seit 2015 in den Vereinigten Staaten und seit dem Marktstart am 26. Oktober 2016 in Deutschland rapide zu. Amazon verzeichnet aktuell mehr als 15 000 Alexa Skills. Allein in Deutschland existieren mittlerweile über 1 500 verschiedene Skills. Diese kann der Alexa-Nutzer aus dem Skills Store von Amazon über eine Alexa-App nachladen.

Die Voraussetzung für die Entwicklung eines eigenen Skills ist der Besitz eines kostenlosen Amazon-Developer-Accounts [5]. Mein Vater legte einen Developer Account an, und wir begannen mit der Entwicklung eines eigenen Skills. Amazon stellt für die Entwicklung das Alexa Skills Kit (ASK) [6] zur Verfügung. ASK ist eine Sammlung von Self-Service APIs, Tools, Dokumentationen und Codebeispielen. Es existieren unterschiedliche Typen von Skills: Custom Skills und Smart Home Skills. Custom Skills ermöglichen einen Dialog mit dem Nutzer und erlauben dem Entwickler eine gewisse Freiheit bei der Auswahl der Schlüsselwörter. Skills werden durch einen Invocation Name (Rufnamen), z. B. LEGO, aktiviert. Wenn man also „Alexa, starte LEGO“ sagt, erkennt Alexa das Wort LEGO und ruft den Skill auf. Smart Home Skills benötigen hingegen keine Rufnamen und sind leichter zu programmieren. Sie verfügen allerdings über einen bereits existierenden Befehlssatz, wie Einschalten oder Ausschalten.

Für die Entwicklung eines benutzerdefinierten Skills sollte man sich zuerst einen Ablaufplan überlegen: Welche Schlüsselwörter kann der Benutzer verwenden und welche Reaktionen werden durch sie ausgelöst? Der Alexa-Client – sei es Echo oder ein anderes Gerät mit Alexa Voice Service – sendet die Anforderungen zur Verarbeitung an die Alexa-Service-Plattform. Die Verarbeitung erfolgt anhand des im Skill vordefinierten Alexa Interaction Models. Im Model werden im JSON-Format Satztypen – die so genannten Intents (Absichten) – und ihre Variablen (Slots) festgelegt. Listing 1 zeigt ein Beispiel des Models.

Listing 1: Intents

{"intents": [ {"intent": "AMAZON.StopIntent"}, {"intent": "turnIntent", "slots": [{"name": "direction", "type": "DIRECTION_TYPE"}, {"name": "angle", "type": "AMAZON.NUMBER"}] }, {"intent": "moveIntent", "slots": [{"name": "direction", "type": "DIRECTION_TYPE"}, {"name": "distance", "type": "AMAZON.NUMBER"}] }

Dieses Beispiel hat ein Array von drei Intents: ein Built-in Intent AMAZON.StopIntent zum Stoppen der Konversation und zwei für das Fahren- und Abbiegen-Kommando. Das Intent mit der ID turnIntent hat die Slots direction für eine Richtung und angle für die Angabe eines Drehwinkels in Grad. Das Intent moveIntent hat ebenso zwei Slots. Listing 2 zeigt, wie Satzvariationen, so genannte Utterances, den Intents mit einem oder mehreren Slots zugeordnet werden können.

Listing 2: Utterances

turnIntent nach {direction} drehen turnIntent fahre nach {direction} turnIntent drehe dich um {angle} Grad moveIntent fahre {direction} {distance} Zentimeter ...

Im Model sollte man für jeden Slot einen Typ eingeben. Dabei stehen zahlreiche vordefinierte Typen wie AMAZON.DURATION, AMAZON.TIME auch für die deutschsprachigen Skills zur Verfügung. Außerdem gibt es die Möglichkeit, einen eigenen Slottyp als eine Liste von erwarteten Werten zu definieren. In unserem Beispiel kann die Werteliste vom Slot-Typ DIRECTION_TYPE aus links, rechts, geradeaus, rückwärts usw. bestehen. Nachdem ein Model definiert ist, kann man mit der Skill-Programmierung anfangen. Dafür muss man entweder eine AWS-Lambda-Funktion [6] erstellen oder einen Web Service für die Kommunikation mit Alexa bereitstellen, der die JSON Requests auswertet und dann eine entsprechende JSON Response generiert.

Alexa, fahre Roboter geradeaus! Stopp! Kran nach links! Runter! Greif’s!

Für unseren Skill haben wir eine AWS-Lambda-Funktion geschrieben. Eine Lambda-Funktion kann in Java, Node.js, C# oder Python programmiert werden. Wir entschieden uns für Java, da ich schon immer gerne Java lernen wollte. „Wie werden wir es eigentlich programmieren?“, überlegte sich mein Vater, während ich schon ungeduldig über seine Schulter auf den Bildschirm schaute. „Zuerst müssen wir eine stabile Schnittstelle zwischen dem Alexa Skill und dem Roboter entwickeln. Unser Skill sollte idealerweise von keinen technischen Details des Roboters wissen, das gilt auch umkehrt: der Roboter weiß nichts über Alexa.“ Das verstand ich nicht:...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang