Quantcast
Channel: BEEVA Labs » Eventos
Viewing all articles
Browse latest Browse all 14

Comandos de voz para controlar droides intergalácticos mediante arquitecturas serverless

$
0
0

El pasado 11 de febrero BEEVA estuvo presente en el evento T3chfest con una charla técnica. El tema de la conferencia, titulada ‘Ruling the world with your voice and the cloud’, era el de las arquitecturas serverless en aplicaciones de Internet of Things. Concretamente la plataforma AWS IoT y Lambda. Como introducción se llevó a cabo una prueba de concepto con un robot Sphero BB8 y un Amazon Echo como asistente para comandos de voz.

Amazon Echo es un dispositivo físico que hace las veces de asistente de voz, similar a Cortana o Siri. Internamente utiliza el servicio de voz Alexa, por lo cual es fácil implementar comandos de voz con la API Alexa Skills Set. Se puede utilizar cualquier lenguaje y servidor, pero teniendo integración directa con Lambda, decidimos usar éste último. Ya que nos permite implementar microservicios sin gestionar un servidor o el despliegue y monitorización.

echo

El droide BB8 es un robot esférico fabricado con Sphero. Tiene conectividad Bluetooth Smart 4.0, habilidad para desplazarse, un LED RGB y sensores de colisión u odómetro. Los fabricantes han liberado el protocolo, por lo que existe una gran cantidad de librerías disponibles, tanto oficiales como hechas por la comunidad. Nos hemos decantado por el lenguaje javascript y el framework NodeJS, así conseguimos una aplicación multiplataforma y versátil para cualquier tarea. Para controlar el robot, usamos la librería sphero.js conjuntamente con noble.

bb8

Usamos AWS IoT para conectar el BB8 a la nube y poder controlarlo de manera remota. Representamos el objeto con un ‘device’ y mediante su ‘shadow’ sincronizamos el estado de los LEDs y obtenemos los valores de velocidad y posición, de manera que si el robot está desconectado y le pedimos que se vuelva azul, en el momento de reiniciar, su estado pasará a azul. Además, utilizamos un canal de MQTT del servicio de Amazon para enviar comandos. Como backup utilizamos DynamoDB mediante Rules Engine para persistir cualquier información intercambiada. Utilizando esta persistencia junto a API Gateway y Lambda conseguimos una API Rest con los datos del BB8.

Para enviar información a la nube y conectar por Bluetooth con el BB8 hemos desarrollado un gateway, una aplicación NodeJS que intermedia entre los dos. Utilizamos el SDK de NodeJS de Device Thing oficial de AWS. Para poder utilizar la demo sin la necesidad de un ordenador donde ejecutar dicho gateway, usamos una Raspberry Pi. Resin.io nos permite desplegar la app en un contenedor de Docker y desplegar automáticamente el código. Así nos despreocupamos de instalar dependencias, gestionar la conexión a internet o bajarnos la última versión de código. Adicionalmente usamos PM2 para monitorizar el proceso, ponerlo en background y vigilar logs.

Captura de pantalla 2016-02-17 a las 16.05.30

Arquitectura para conectar BB8 en la nube con Amazon Echo

Uno de los aprendizajes del experimento es la versatilidad de Lambda como Backend Serverless, contenedores de aplicaciones autogestionados y con soporte para Python, NodeJS y Java a los que simplemente les tenemos que entregar código. Uno de sus puntos negativos es la falta de la gestión de dependencias, de manera que tenemos que empaquetar todas las librerías usadas junto al código. Por otro lado, comprobamos la simplicidad de AWS IoT y como utiliza tecnologías ligeras enfocadas a makers como MQTT a nivel industrial con la elasticidad y el autoescalado proprio de los productos de AWS.

Las slides de la charla están disponibles en Slideshare de BEEVA.

Marian Claudiu
Investigador en el departamento de Innovación de BEEVA. Agente del caos. Hacker de IoT y apasionado por la Computación Ubicua.

Viewing all articles
Browse latest Browse all 14

Trending Articles