Freigeben über


Volar con IoT y los Servicios Cognitivos

El pasado día 18 tuvimos uno de los mayores eventos nacionales de IoT: IoT Connect 2017. Se realizó en nuestras oficinas de Madrid con la colaboración de Intel y otros partners importantes del sector. En el evento vimos cómo muchas compañías están innovando con esta nueva ola de tecnología que llamamos IoT.

Hablamos de cloud, de blockchain, de inteligencia artificial, de seguridad y de muchas otras cosas que se pueden hacer cuando conectamos nuestras cosas y, sobretodo, de cómo automatizar todo lo automatizable. Para demostrarlo construimos en unos pocos días una solución completa para mostrar hasta dónde podemos llegar. En esta ocasión teníamos una tubería, un dron y toda la potencia que nos proporcionan los servicios de Azure para darle vida a nuestro proyecto.

image

Mantenimiento remoto de tuberías y algo más

El escenario que nos planteamos para la demostración es un sistema de mantenimiento remoto de tuberías mediante un sistema de sensores. Con la información que recogen los sensores, podemos crear un sistema de monitorización remota de las mismas, pero nos encontramos con una serie de problemas adicionales que nos gustaría resolver:

  • Cuando una tubería sufre una anomalía se tiene que desplazar un técnico hasta la misma para ver qué está ocurriendo
  • En ocasiones tendremos falsos positivos, por fallos en los sensores
  • Los sensores no son suficientes para conocer el alcance del problema antes de que vaya el técnico a repararlo
  • Las ordenes de trabajo se tienen que crear manualmente
  • Los técnicos tienen que usar herramientas poco naturales para ellos

Por eso planteamos una solución mucho más atrevida y divertida. Crear un sistema que detecte y evalúe el fallo en la tubería. Una vez detectada una anomalía, lanza una solicitud a un dron que vuela hasta la tubería, saca una fotografía de la misma y la envía a Azure para que se genere una orden de trabajo.

image

Simulación de las tuberías

Para poder probar todo el sistema no contábamos con un sistema real de tuberías, así que primero nuestro compañero Daniel Tabuenca construyó un simulador con Node-RED para enviar toda la información a Azure IoT Hub. Node-RED es un sistema de programación basado en flujos, especializado en IoT y que cuenta ya con nodos para contectar a Azure IoT Hub.

image

Además de poder instalar Node-RED en cualquier dispositivo, también podemos desplegarlo en una Web App de Azure. Con el mismo sistema, también construimos una interfaz de usuario con el módulo Dashboard para mostrar el estado de las tuberías simuladas:

image

 

Para la demo en directo, también usamos un módulo ESP8266 junto con un sensor de distancia, para tener un dispositivo físico que nos diera el nivel agua de la tubería y enviara a IoT Hub la información a través de la WiFi.

Control del dron

Una vez llega la información a IoT Hub, la analizamos con Stream Analytics y una función de detección de anomalías en Azure Machine Learning. Esto genera una alerta que se recoge con una Azure Function para enviar un mensaje al software de control del dron, que también está registrado como dispositivo en IoT Hub. Esto nos permite enviarle mensajes de forma remota y que el dron pueda enviar información a IoT Hub, tanto telemetría de su funcionamiento como la foto de la tubería que sufre la anomalía.

WP_20170412_09_55_40_Moment

Para controlar el dron en interior no podíamos usar localización GPS, así que usamos una librería de visión artificial para reconocer patrones y así poder dirigir de forma automática el dron hacia una forma predefinida, en este caso una tubería de color naranja. Para desarrollar la aplicación de control usamos las librerías OpenCV, que se pueden usar en C# gracias a Emgu, que nos permiten analizar las imágenes en tiempo real. El dron se acerca a la tubería hasta una distancia determinada y saca una foto y para enviarla a IoT Hub, que se procesa mediante Cognitive Services para identificar mejor la avería.

  • AR.Drone, una librería en C# para controlar el dron que puedes compilar para .NET y Mono.
  • OpenCV es una librería de código abierto desarrollada inicialmente por Intel. Para utilizarla en vuestras aplicaciones .Net existen diversos wrappers, yo usé EmguCV.
  • Microsoft Cognitive Services es un conjunto de servicios que tiene modelos de machine learning ya preparados para consumir vía API.

Con la información generada por la propia tubería y la foto realizada por el dron, se genera una orden de trabajo en Dynamics 365, pero el técnico, en lugar de interactuar con una aplicación para ver qué incidencias tiene pendientes, tiene una conversación con un bot construido sobre el Microsoft Bot Framework. Además de obtener las incidencias pendientes y poder ver la información que se ha generado, el técnico puede realizar preguntas al bot, como, por ejemplo, que le muestre otras reparaciones parecidas para saber qué materiales debería llevar antes de salir del taller:

image

Como os contaba antes, para que todo esto funcione, hace falta unir algunos puntos como la información de IoT Hub de la tubería con AzureML, la notificación al dron, la creación de una orden de trabajo. Para estas tareas usaremos servicios “serverless” que encontramos en Azure:

image

  • Azure Stream Analytics nos sirve para analizar la información en tiempo real con una consulta SQL, nos permite enlazar con Azure Machine Learning de forma que podamos aplicar un modelo entrenado a los datos que nos están llegando desde IoT Hub y enviarlo a Event Hubs para poder seguir tratando esa información en tiempo real.
  • Azure Functions, usando una fuente de eventos como Event Hubs, ejecutamos código en modo pago por ejecución en Azure cuando llega un nuevo evento y dependiendo del contenido enviamos a IoT Hub un mensaje para que el dron se ponga en marcha
  • Logic Apps, también conectado a Event Hubs, cuando tenemos toda la información enviamos los datos necesarios a Dynamics 365 sin necesidad de programar ni levantar ninguna máquina.

Resumen de tecnologías

El código fuente de la demo está en GitHub. Hemos utilizado las siguientes tecnologías:

 

Que tengáis un feliz vuelo.