Sprachgesteuerter Roboter mit Windows 10 IoT Core auf Raspberry Pi 2 bauen
Geschichte
Frühes Computing setzte auf Lochkarten, Trackballs und Tastaturen – alles erforderte direkten physischen Kontakt. Mit der Technologieentwicklung vereinfachten drahtlose und Touch-Interfaces die Interaktion. Heute bieten visuelle und Spracheingabe noch intuitivere Steuerungsmöglichkeiten.
Diese Anleitung zeigt, wie Sie die integrierte Spracherkennung von Windows 10 IoT Core nutzen, um einen Roboter auf Raspberry Pi 2 zu steuern. Am Ende haben Sie einen Roboter, der sich bewegt, dreht und Hinderniserkennung per Sprachbefehl managt.
Neu bei Windows 10 IoT Core? Starten mit dieser Übersicht.
Aktualisiert am 30. März 2016
Was ist Spracherkennung?
Spracherkennung wandelt gesprochene Wörter in Text um. Sie umfasst typischerweise zwei Kernkomponenten: Signalverarbeitung und Sprachdecoder. Microsofts Speech SDK abstrahiert diese Komplexitäten, sodass Entwickler sich auf Anwendungslogik konzentrieren können.
Schritt 1
Einstieg in die Spracherkennung
Der grundlegende Workflow:
- Spracherkennungsgrammatik (SRGS) erstellen
SpeechRecognizerinstanziieren und Grammatik laden- Erkennungsereignisse abonnieren und Handler implementieren
Spracherkennungsgrammatik erstellen
Eine benutzerdefinierte Grammatik lässt die App die spezifischen Befehle verstehen, die der Roboter akzeptieren soll. Für dieses Projekt umfasst der Wortschatz:
- Vorwärts fahren
- Rückwärts fahren
- Rechts drehen
- Links drehen
- Stopp
- Hinderniserkennung aktivieren
- Hinderniserkennung deaktivieren
Die Grammatik wird in SRGS-XML ausgedrückt. Wichtige Strukturregeeln:
- Wurzelelement muss
<grammar>sein. - Muss
version,xml:langund SRGS-Namespace enthalten. - Mindestens ein
<rule>-Element erforderlich. - Jede Regel muss ein einzigartiges
id-Attribut haben.
Für Details zu SRGS siehe MSDN und W3C Dokumentation.
Speech Recognizer initialisieren & Grammatik laden
SpeechRecognizer befindet sich im Windows.Media.SpeechRecognition Namespace. Importieren, dann SRGS-XML-Datei laden. Bei Kompilierfehlern prüfen, ob Mikrofon angeschlossen und von IoT Core erkannt wird.
Für Speech Recognizer Events registrieren & Handler erstellen
Sobald der Recognizer läuft, sendet er ResultGenerated bei erfolgreicher Sprachverarbeitung. Dieses Event nutzen, um args.Result.Text zu extrahieren und auf Roboteraktionen abzubilden. Das StateChanged-Event informiert, wann der Recognizer zuhört oder aufhört.
Visual Studio kann Handler-Methoden per Tab-Taste autogenerieren. Alternativ Handler direkt nach Erstellung der SpeechRecognizer-Instanz registrieren.
Schritt 2
Roboter per erkanntem Sprachbefehl steuern
Im ResultGenerated-Handler args.Result.Text prüfen und bedingte Logik für Motorsteuerung ausführen. Die MotorDriver-Klasse (im Beispiel enthalten) abstrahiert GPIO-Manipulation. Voller Quellcode am Artikelende.
Schritt 3
Gerätefähigkeit aktualisieren
Vor Deployment auf Raspberry Pi 2 microphone-Fähigkeit zum App-Paketmanifest hinzufügen. Das gewährt Berechtigung für Audioeingang.
Sobald Software bereit, Hardware wie unten beschrieben verdrahten.
Schritt 4
Deploy & App als Startanwendung registrieren
Damit der Roboter sofort nach Boot auf Befehle lauscht, App als Startanwendung registrieren. Zuerst deployen, dann PowerShell oder IoT Core Web-Management-Portal nutzen.
Paketfamiliennamen vor Deployment ändern, um Konflikte zu vermeiden.
Nach Deployment App als Startdienst über Web-Management-Portal registrieren.
Bei Registrierungsproblemen Troubleshooting-Guide konsultieren.
Nach erfolgreicher Registrierung Raspberry Pi 2 neu starten und prüfen, ob App automatisch startet.
Schaltplan
Roboter-Hardware besteht aus Chassis mit DC-Motoren, Raspberry Pi 2 mit Windows 10 IoT Core, 9-12 V Motor-Batterie, Distanzsensor und Netzteilen. Motor-Batterie speist H-Brücken-Treiber, Raspberry Pi 2 benötigt dedizierte 5-V-Quelle – entweder USB-Powerbank oder 7805-Regler.
Widerstände beim Ultraschall-Distanzsensor?
Der Ultraschallsensor gibt 5 V am Echo-Pin aus, was die 3,3-V-Logik des Raspberry Pi 2 übersteigt. Ein Spannungsteiler (R1 = 1 kΩ, R2 = 2 kΩ) reduziert auf 3,3 V:
Vout = 5 × (2 kΩ / (1 kΩ + 2 kΩ)) = 3,3 V
WARNUNG: Echo-Pin direkt an Pi-GPIO anschließen beschädigt das Board. Immer Level-Shifter oder Teiler nutzen.
Endmontage
Bekannte Probleme
Spracherkennung funktioniert nicht (Build 10586)
Spracherkennung schlägt auf IoT-Geräten mit Windows IoT Core Build 10586 fehl.
Lösung: Auf Build 10240 zurückgehen, bis Microsoft Update veröffentlicht.
Mikrofonproblem
Erkennungsgenauigkeit sinkt bei minderwertigen Mikrofonen, besonders über 1-2 m Distanz.
Lösung: Hochwertiges oder drahtloses Mikrofon nutzen. Falls nötig Signal verstärken oder Noise-Cancelling-Headset erwägen.
Recognizer-Verarbeitungsverzögerung
Spracherkennung führt zu 600-2000 ms Latenz. Bei schnellen Robotern kann Verzögerung Fehlausrichtung zwischen Befehl und Aktion verursachen.
Lösung: Aktuelle SDK-Versionen reduzieren Verzögerung nicht. Zukünftige Releases könnten Optimierungen bringen.
Ausspracheunterschiede
Akzente und regionale Aussprachen beeinträchtigen Erkennung. Sprache und Region in SRGS-Datei angeben (z. B. xml:lang="en-GB" für UK-Englisch).
Umgebungsgeräusche
Hintergrundgeräusche mindern Genauigkeit. Schwer zu eliminieren, aber Noise-Cancelling-Mikrofon mildert das Problem.
USB-Mikrofon / USB-Soundkarte wird nicht erkannt
Ab Build 10531 unterstützt Windows IoT Core generische USB-Audiogeräte. Proprietäre Treiber funktionieren möglicherweise nicht.
Anderes USB-Mikrofon oder Soundkarte mit generischem Treiber testen.
Zukünftige Erweiterungen
Roboter um visuelles Feedback erweitern – z. B. grüne LED bei erfolgreichem Befehl, rote bei Fehler. „Zuhören“- und „Schlaf“-Zustände hinzufügen, um versehentliche Aktivierungen zu vermeiden.
Haben Sie bemerkt?
Der animierte Titel zeigt Feature, das im Text nicht behandelt wird. Animation genau ansehen und versuchen, die versteckte Fähigkeit zu implementieren.
Viel Erfolg!
Quelle: Speech Controlled Robot
Herstellungsprozess
- Herzfrequenz mit Windows 10 IoT Core auf Raspberry Pi auslesen – Schritt-für-Schritt-Anleitung
- Sichere Gesichtserkennungs-Tür mit Windows IoT und Raspberry Pi bauen
- Bewegungsgesteuerter AWS IoT Button mit Raspberry Pi, PIR-Sensor und MQTT
- Adafruit 10DOF IMU Daten von Raspberry Pi 2 an Azure Event Hubs senden (Windows 10 IoT Core)
- Präzise Temperatur- & Feuchtigkeitsüberwachung mit SHT15 unter Windows 10 IoT Core
- Windows 10 IoT Core auf Raspberry Pi 3 Model B+ installieren – Schritt-für-Schritt
- Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
- Gesten-gesteuerter Roboter mit Raspberry Pi
- WLAN-gesteuerter Roboter mit Raspberry Pi & Android Smartphone bauen
- GoPiGo v2 auf Windows 10 IoT Core für Raspberry Pi 3 erweitern