Crea il computer di bordo per la tua astronave, by Cristian Maglie

48
Crea il computer di bordo per la tua astronave Cristian Maglie [email protected] http://bug.st/ Arduino http://arduino.cc/

description

Vedremo come interfacciare dei dispositivi di controllo vocale per controllare il vostro PC. Ma non solo. Scopriremo anche come interfacciarci ai propulsori per i nostri velivoli.

Transcript of Crea il computer di bordo per la tua astronave, by Cristian Maglie

Page 1: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Crea il computer di bordo per la tua astronave

Cristian [email protected]://bug.st/

Arduinohttp://arduino.cc/

Page 2: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

2

Notizie sull'autore• Programmatore freelance• Entusiasta utilizzatore di tutte le tecnologie open-

source• Appassionato di elettronica, collabora con il progetto

Arduino da più di 3 anni

• NON è un fan accanito di Star-Trek (anche se dopo il seminario la penserete diversamente)

• Attore consumato degli spot del codemotion

Page 3: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

3

Introduzione

Page 4: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

4

Interfacce utente

• Dispositivo fisico o virtuale che permette la comunicazione tra due o più entità di tipo diverso

• Schermo, tastiera sono interfacce ma anche telefono, fotocopiatrice, televisione

• Sono tutti supporti materiali che permettono l'interazione tra informazione “digitalizzata” e il mondo ordinario

Page 5: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

5

Schermi Piatti

Page 6: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

6

Touch Screen

Page 7: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

7

Cellulare

Page 8: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

8

Tablet

This iPadIs wonderful!

Page 9: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

9

Interfacce(come siamo abituati a vederle)

Pad LCD

Screen

Touch

CPUMouse

Tastiera MonitorINPUT OUTPUT

Page 10: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

10

Evoluzione delle interfacce

• Tende ad aumentare l'intimità tra utente e macchina

• L'interfaccia del futuro sarà eterea: l'utente non si accorgerà della sua esistenza

Page 11: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

11

Page 12: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

12

Riconoscimento Vocale

Page 13: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

13

Interfacce

Pad LCD

Screen

Touch

CPUMouse

Tastiera MonitorINPUT OUTPUT

Page 14: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

14

Interfacce

CPUMic SpeechRecognition

TTSText To Speech

SpkINPUT OUTPUT

Page 15: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

15

Comando vocale

• Problemi di sicurezza e identificazione• Comandi errati o falsi riconoscimenti• Rumore o voci sovrapposte• Indecisione nell'esporre il comando

Page 16: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

16

Riconoscimento vocale

• Android / Google API• iPhone• Vbot• CMU Sphinx

Page 17: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

17

Speech Input API (Android)

É la libreria sviluppata da google per fornire i dispositivi Android del riconoscimento vocale.

Page 18: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

18

Speech Input API (Android)

PRO• Riconoscimento vocale: ottimo• Sintesi vocale: buona, migliorabile in alcuni casi• Localizzazione in parecchie lingue• Open API: molto semplice da utilizzare

Page 19: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

19

Speech Input API (Android)

CONTRO• Richiede connessione a internet

Page 20: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

20

Online Speech Recognition

Recognize Speech Intent

Android OS

InternetGoogleservices

voice

“Hello”

Page 21: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

21

Speech Input API (Android)

CONTRO• Richiede connessione a internet

Page 22: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

22

Speech Input API (Android)

CONTRO• Richiede connessione a internet• Problemi privacy

Page 23: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

23

Online Speech Recognition

Recognize Speech Intent

Android OS

InternetGoogleservices

voice

“Hello”

Page 24: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

24

Online Speech Recognition

Googleservices

24/03/2012 15.34Cristian said:

“Hello”

Logs

Page 25: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

25

Speech Input API (Android)http://android-developers.blogspot.it/2010/03/speech-input-api-for-android.html

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass()

.getPackage().getName());intent.putExtra(RecognizerIntent.EXTRA_PROMPT,

"Speech recognition demo");intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,

RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);

if (!mSupportedLanguageView.getSelectedItem().toString().equals("Default")) {

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,mSupportedLanguageView.getSelectedItem().toString());

}startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

Page 26: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

26

Speech Input API (Android)

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {

if (requestCode == VOICE_RECOGNITION_REQUEST_CODE&& resultCode == RESULT_OK) {

List<String> matches =

intent.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

doSomethingWithVoiceCommands( matches );}

}

Page 27: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

27

Speech Input API (Android)

boolean TTSReady = false;TextToSpeech mTTS = new TextToSpeech(this, new OnInitListener() {

@Overridepublic void onInit(int status) {

TTSReady = true;}

});

[…......]

mTTs.speak(“Ciao”, TextToSpeech.QUEUE_FLUSH, null);

Page 28: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

28

Siri (iPhone)

• É il software sviluppato da Apple per aggiungere il supporto all'input vocale ai suoi nuovi dispositivi

Page 29: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

29

Siri (iPhone)

PRO• Riconoscimento vocale: ottimo• Sintesi vocale: ottima• Ottima integrazione con le funzioni del telefono

(calendar, sms, weather, clock, etc.)

Page 30: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

30

Siri (iPhone)

CONTRO• Richiede connessione internet• Problemi privacy• Localizzazione ancora mancante per parecchie lingue• Closed source• Closed API, non esiste documentazione per lo

sviluppatore, per poterlo programmare bisogna hackerare il dispositivo

Page 31: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

31

Siri (iPhone)

Non può essere utilizzato per i nostri scopi

Page 32: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

32

EasyVR Vbot

É un co-processore in grado di effettuare la speech recognition. Permette di dotare di controllo vocale piccoli sistemi embedded.

http://www.veear.eu/Products/EasyVR.aspx

Page 33: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

33

Vbot

ARDUINO Vbot

UART

CMD_LANGUAGE 'l' // set language <1>CMD_TIMEOUT 'o' // set timeout <1>CMD_RECOG_SI 'i' // recog trigger word <1>CMD_TRAIN_SD 't' // train sd command at groupCMD_GROUP_SD 'g' // insert new command at groupCMD_UNGROUP_SD 'u' // remove command at group

Page 34: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

34

Vbot

PRO• Riconoscimento vocale: ottimo• Funziona offline: il riconoscimento avviene sul

dispositivo• Riconoscimento vocale continuo• Segnale audio di “parola riconosciuta”

Page 35: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

35

VRobot

CONTRO• Sintesi vocale assente• Riconoscimento basato su vocabolario, non permette il

riconoscimento di testo libero• Closed source

Page 36: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

36

CMU Sphinx

• Engine di speech recognition sviluppato dalla Carnage Mellon University

http://cmusphinx.sourceforge.net/

Page 37: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

37

CMU Sphinx

• Esiste una versione light dell'engine (pocketsphinx) che può essere utilizzata su dispositivi embedded

• Sì può sfruttare JNI per realizzare un wrapper Java che fornisce la speech recognition utilizzando pocketsphinx dentro Android

Page 38: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

38

Recognize Speech Intents multipli su piattaforma Android

Recognize Speech Intent

Google API

CMU Sphinx

Page 39: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

39

CMU Sphinx

PRO• Riconoscimento vocale: buono• Sintesi vocale: ottima• Funzionamento offline• Riconoscimento vocale continuo• Open API in C e Java• Open Source

Page 40: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

40

CMU Sphinx

CONTRO• Localizzazione ancora limitata• Documentazione poco aggiornata• API molto potenti, ma di utilizzo non immediato• Installazione complessa

Page 41: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

41

Page 42: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

42

Interconnessione

Page 43: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

43

Interconnessione

• Oggetti fisici possono essere connessi• Internet-of-Things

Page 44: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

44

Interconnessione

INPUT OUTPUTVoiceDevice

Device A Device B

Page 45: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

45

Interconnesione

• Varie modalità di interconnessione (BT, RS232, WiFi, Ethernet, Zigbee e chi più ne ha più ne metta)

• Dispositivi Ethernet / Wifi sempre più diffusi e meno costosti

Page 46: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

46

Page 47: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

47

Arduino Ethernet

• Semplice da utilizzare• Costo contenuto• Comunicazione tra smartphone e device

tramite Webservices• Il firmware sull'Arduino Ethernet ha un

piccolo webserver “stupido” che esegue i comandi

Page 48: Crea il computer di bordo per la tua astronave, by Cristian Maglie

Cristian [email protected] – Arduino (http://arduino.cc)

48

Conclusione e domande