Introduzione all’interazione Uomo-Robot

Robotica

Dialogo Uomo-Nao

Obiettivi

  • Comprendere il funzionamento del sistema audio e dei moduli linguistici di Nao.
  • Analizzare il ruolo dell'intelligenza artificiale nel riconoscimento vocale e nella gestione del dialogo.
  • Sperimentare la programmazione di regole dialogiche con QiChat e ALDialog.
  • Stimolare interesse per la robotica educativa e le sue applicazioni pratiche.

Contenuti

Nao è un robot umanoide avanzato, progettato per interagire con gli esseri umani attraverso il linguaggio naturale, movimenti espressivi e riconoscimento vocale. La sua capacità di comprendere e rispondere a input vocali rende Nao ideale per applicazioni educative, di intrattenimento e assistenza. Questa guida introduce il funzionamento del dialogo uomo-macchina, e ai moduli audio e linguistici di Nao.

Introduzione a NAO

Sistema Audio di Nao

Hardware

Il sistema audio di Nao è progettato per rilevare suoni provenienti da diverse direzioni e per riprodurre audio con una qualità sufficiente a garantire una comunicazione chiara.

  • Altoparlanti: Nao è dotato di due altoparlanti integrati nelle orecchie, progettati per riprodurre suoni in stereo. Questi altoparlanti sono ottimizzati per emettere suoni comprensibili, riducendo al minimo le distorsioni.
  • Microfoni: Il robot dispone di quattro microfoni omnidirezionali, posizionati attorno alla faccia (frontale, posteriore, sinistro e destro). Questa configurazione consente a Nao di determinare la direzione di provenienza del suono (localizzazione acustica), migliorando l’interazione con più utenti contemporaneamente.
  • Gamma di Frequenza: La gamma di frequenza operativa dei microfoni varia tra 300Hz e 8kHz, coprendo la maggior parte delle frequenze vocali umane.

Software

A livello software, Nao utilizza il modulo NAOqi Audio, che si occupa di gestire l’intero sistema audio del robot. Questo include la rilevazione, localizzazione e interpretazione dei suoni, nonché la sintesi vocale per rispondere agli utenti.

  • ALAudioDevice: Gestisce l’input e l’output audio.
  • ALAudioPlayer: Riproduce file audio sul robot.
  • ALAudioRecorder: Registra audio in tempo reale.

Moduli Principali

ALAudioDevice (Gestione Audio)

  • Funzione: Il modulo ALAudioDevice fornisce un’interfaccia API che permette ad altri moduli di accedere agli input dei microfoni e agli output degli altoparlanti. Questo modulo è fondamentale per l’acquisizione e la riproduzione del suono.
  • Tecnologia di Base: ALAudioDevice utilizza la libreria ALSA (Advanced Linux Sound Architecture) per comunicare direttamente con l’hardware audio di Nao. ALSA garantisce una gestione avanzata delle periferiche audio, supportando anche funzionalità MIDI.
  • Interazione tra Moduli:
    • ALAudioPlayer: Permette la riproduzione di file audio locali.
    • ALAudioRecorder: Registra file audio in tempo reale, consentendo la memorizzazione di conversazioni o la registrazione di eventi.

ALSpeechRecognition (Riconoscimento Vocale)

  • Funzione: ALSpeechRecognition consente a Nao di riconoscere parole e frasi predefinite in più lingue, contribuendo a rendere il robot più versatile in ambienti multilingue.
  • Tecnologia di Riconoscimento:
    • ACAPELA GROUP: Tecnologia di sintesi vocale avanzata per Nao v3.x, progettata per creare voci umane realistiche.
    • NUANCE: Per Nao v4, il riconoscimento vocale utilizza servizi cloud-based e moduli di text-to-speech espressivi, migliorando la naturalezza delle conversazioni.

Fasi Operative:

  1. Preparazione: Le frasi da riconoscere vengono caricate nel modulo.
  2. Rilevamento Vocale: Se un suono viene rilevato, viene impostato un valore booleano nella chiave SpeechDetected.
  3. Riconoscimento: La parola o frase che corrisponde maggiormente all’input viene associata a WordRecognized con un livello di confidenza.
  4. Analisi Grammaticale: In aggiunta, la frase viene memorizzata nella chiave WordRecognizedAndGrammar, con l’indicazione della grammatica utilizzata.

Moduli di Dialogo

ALDialog (Gestione del Dialogo)

  • Funzione: ALDialog gestisce il flusso del dialogo, creando un database di conoscenza organizzato in regole di risposta. Consente a Nao di rispondere a domande e di avviare conversazioni spontanee.
  • Tipologie di Regole:
    • Regole Utente: Associano input specifici (frasi o parole chiave) a risposte predefinite.
    • Regole di Proposta: Nao può avviare una conversazione o fare domande in autonomia, senza che l’utente fornisca un input iniziale.

Esempio:

topic: ~greetings
language: it
u: (Ciao Nao come stai oggi) Ciao uomo, sto bene grazie e tu?
proposal: Hai visto quel ragazzo in TV ieri?
u1: (si) Mi sembrava un pazzo, non credi?
u1: (no) Mi dispiace ma non capisco
  • Memoria e Contesto: ALDialog utilizza ALMemory per salvare e recuperare informazioni durante una conversazione, consentendo continuità e coerenza nel dialogo.
  • Integrazione Avanzata: ALDialog può essere integrato con QiChat per la creazione di regole conversazionali più complesse e dinamiche.

QiChat: Linguaggio di Programmazione per Dialoghi

QiChat è un linguaggio progettato per gestire interazioni naturali tra esseri umani e robot, come Nao. La sua struttura consente di associare input umani (ciò che viene detto) con output pertinenti del robot. La chiave del successo di QiChat è la possibilità di definire regole e concetti che facilitano dialoghi flessibili e contestuali.

Caratteristiche principali:

    • Concetti (Concepts): Liste di parole o frasi che rappresentano un’idea. Possono essere statici (immutabili durante l’esecuzione) o dinamici (modificabili a runtime).
    • Regole (Rules): Associano input specifici con risposte del robot, includendo azioni o frasi.
    • Gestione del Focus: Solo un topic può essere attivo alla volta, garantendo che il robot segua una logica di priorità per l’attenzione.
  • Sintassi:
    • Input utente: u: (frase)
    • Output robot: risposta del robot

Concetti Statici e Dinamici

I concetti sono fondamentali per costruire un dialogo ricco e flessibile.

Concetti Statici

Sono visibili a livello globale all’interno del robot e non possono essere modificati durante l’esecuzione.

Esempio:

concept: (saluto) ["ciao", "salve", "buongiorno"]

Questo concetto permette al robot di riconoscere e rispondere a diversi tipi di saluto.

concept:(pianeti)[mercurio, venere, terra, marte]

Concetti Dinamici

Sono specifici di un singolo topic e possono essere aggiornati durante l’esecuzione.

Esempio:

dynamic: mp3
u: ("ascoltiamo" ["vorrei cantare"] _~mp3)

Qui, il robot associa il comando di ascoltare musica con un’azione che può essere aggiornata a runtime.


Creazione delle Regole

Le regole sono utilizzate per definire il comportamento del robot in risposta a un input umano.

Struttura di una Regola

Una regola include:

  • Input umano: Il testo o il comando che il robot deve riconoscere.
  • Output del robot: La risposta o azione eseguita dal robot.

Esempio di regola semplice:

u: ("ciao nao") ^pCall(ALMotion.wakeUp()) ~saluto

In questo caso, il robot si alza e saluta quando riconosce “ciao nao”.

Proposte e Ripetizioni

Le regole possono includere proposte che il robot utilizza per guidare il dialogo o richiedere chiarimenti.

Esempio di proposta casuale:

proposal: %go "Che ne dici di parlare di musica?"
u: (~next) ^gotoRandom(go)

Gestione dei Topic

I topic rappresentano gruppi di regole e concetti per gestire argomenti specifici. Solo un topic alla volta può avere il focus, ma è possibile attivarne diversi contemporaneamente.

Esempio di definizione di un topic:

topic: ~music()
language: iti

u: ({"che tipo"} di musica ti ["piace", "preferisci"]) ^topicTag(music, musica) ~musica
u: (~piacere {musica} rock) "Oh sì, molto!" ^switchFocus(chacha_music/.)

Questo topic consente al robot di rispondere a domande sulla musica e attivare azioni come ballare.


Integrazione con Python

I dialoghi possono essere gestiti e richiamati tramite codice Python. Questo offre maggiore controllo e possibilità di personalizzazione.

Esempio di richiamo di un concetto dinamico:

proxy = ALProxy("ALDialog")
proxy.setConcept("mp3", "it", ["pink floyd", "jimi hendrix"])

Esempio di  un topic che permette al robot di rispondere a saluti e parlare dei suoi hobby.

Esempio di Codice:

topic: ~hobbies()
language: iti
concept: (saluto) ["ciao", "salve", "buongiorno"]
u: (~saluto) "Ciao! Come posso aiutarti?"
u: ("Quali sono i tuoi hobby?") "Mi piace ballare, cantare e aiutarti!"

Animazioni e Suoni

  • Animazioni:
    • ^run(animation_name): Esegue animazioni durante il dialogo.
    • ^start(animation_name): Avvia animazioni.
    • ^stop(animation_name): Interrompe animazioni.
  • Suoni:
    • ^runSound(sound_file): Riproduce un suono e riprende il dialogo.

Esempio:

^start(animations/Stand/Gestures/Hey_1) Ciao ragazzi!

Esempio : Dialogo con Nao

topic: ~introduction
language: it
u: (Ciao Nao) ^pCall(ALMotion.wakeUp()) Ciao! Piacere di conoscerti.
u: (Come stai?) Sto bene, grazie per aver chiesto!
proposal: Ti va di ascoltare un po' di musica?
u1: (si) Certo! Avvio la playlist.
u1: (no) Nessun problema, dimmi pure cosa vuoi fare.

Conclusioni

Questa guida fornisce una panoramica sulle capacità di dialogo di Nao, illustrando come i vari moduli audio e linguistici si integrano per creare interazioni naturali. La combinazione di regole statiche e dinamiche, unita a animazioni e suoni, rende Nao uno strumento potente per applicazioni educative e di intrattenimento.

 

Schede didattiche correlate