Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Tecnología de Internet de las cosas

Desafío técnico de la ETSIIT | De estudiantes universitarios a emprendedores

Hace un año comenzamos nuestro trabajo para el IV Reto Técnico ETSIIT (video). ¿Quienes somos? Bueno, somos cuatro estudiantes de Ingeniería Eléctrica e Informática en la Universidad de Granada en España.

Nuestro equipo, Prometheus, ganó el Tech Challenge patrocinado por RTI. Para este desafío, equipos de cuatro o cinco estudiantes debían crear un producto para resolver un desafío propuesto por una empresa externa. El tema del desafío de este año fue "Sistema distribuido de video de múltiples agentes".

Nos unimos a este desafío de experiencia práctica. Un año después del Tech Challenge, todavía somos estudiantes, pero ahora hemos investigado una oportunidad de negocio, diseñamos el producto competitivo Locaviewer, desarrollamos una estrategia para venderlo en el mercado y creamos un prototipo funcional además del trabajo del curso requerido para nuestros títulos.

Visor de ubicaciones

La mayoría de los padres con hijos en una guardería se preocupan por la salud y el progreso de sus hijos. Nuestro producto, Locaviewer, intenta brindarles a los padres la posibilidad de rastrear y ver a sus hijos en tiempo real. Como parte de nuestro plan de marketing, creamos un video promocional. Nuestro código ha sido publicado bajo licencia MIT en GitHub.

Organización y horario del equipo

El proyecto tardó aproximadamente 250 horas en completarse. Cada semana nos reunimos durante al menos 4 horas, con la excepción del último mes en el que pasamos 20 horas a la semana en el proyecto. Para ser más eficientes, nos dividimos en dos equipos. Dos personas trabajaron en el algoritmo de ubicación de Bluetooth en interiores. Los otros dos se enfocaron en una aplicación para capturar, codificar / decodificar un flujo de video y compartirlo usando RTI Connext DDS.

Algoritmo de ubicación

El primer paso y el más importante de nuestra solución fue determinar la ubicación de los niños dentro de la guardería. Cada niño necesitaba llevar una muñequera con un dispositivo Bluetooth -sensor-, que continuamente informaba de la potencia de la señal recibida por un dispositivo Bluetooth -dongle-, colocado en las paredes de la habitación. Este valor de Indicación de intensidad de señal recibida (RSSI) generalmente se mide en decibelios (dB). Determinamos la relación entre RSSI y la distancia.

Figura 2. Medir empíricamente las señales de Bluetooth por ángulo y distancia.
Figura 3. Locaviewer wearable.

Los valores RSSI se transmitieron a una minicomputadora (Raspberry Pi o MK802 III) para ejecutar un algoritmo de triangulación e identificar la ubicación del niño. Como conocíamos la posición de la cámara, después de determinar la posición del niño, sabíamos qué cámaras estaban grabando al niño y seleccionamos la mejor cámara.

Figura4. Triangulación interior.

Aplicación de grabación de video

Para grabar, codificar, decodificar y visualizar videos usamos GStreamer para Java. Probamos otras bibliotecas como vlcj pero no admitían Raspberry Pi ni satisfacían las limitaciones de tiempo real de nuestro sistema. Después de investigar un poco, descubrimos GStreamer que funcionaba con Raspberry Pi y que podía obtener fácilmente el búfer de video codificado en tiempo real (usando AppSink y AppSource elementos). Esto nos permitió encapsularlo y enviarlo a un tema DDS. Trabajamos en esto durante varios meses, incluso, implementando una solución temporal con la transmisión HTTP usando vlcj hasta que nos decidimos por nuestro enfoque final.

Usamos el codificador de video VP8 (WebM). Dado que el contenedor para Java solo funciona con GStreamer versión 0.10, no pudimos optimizarlo y tuvimos que reducir las dimensiones del video. Nuestras pruebas usaron Raspberry Pi, pero planeamos usar un dispositivo MK802 III en la implementación final porque tiene el mismo precio pero más potencia de procesamiento. La configuración de codificación final fue:

Figura5. Canalización de GStreamer para grabar, codificar y obtener videos.

Usamos el siguiente código Java para crear elementos del codificador VP8.

  Elemento codec =ElementFactory.make ("vp8enc", null); codec.set ("hilos", 5); codec.set ("max-keyframe-distance", 20); codec.set ("velocidad", 5); Elemento capsDst =ElementFactory.make ("capsfilter", nulo); capsDst.setCaps (Caps.fromString ("video / x-vp8 perfil =(cadena) 2"));  

En el lado del cliente, usamos la siguiente configuración:

Figura 6. Canalización de GStreamer para configurar, decodificar y reproducir videos.

Usamos el siguiente código Java para crear elementos decodificadores VP8.

  String caps ="video / x-vp8, width =(int) 320, height =(int) 240, framerate =15/1"; Element capsSrc =ElementFactory.make (" capsfilter ", nulo); capsSrc.setCaps (Caps.fromString (mayúsculas)); Cola de elementos =ElementFactory.make (" queue2 ", nulo) Códec de elementos =ElementFactory.make (" vp8dec ", nulo); Elemento convert =ElementFactory. make ("ffmpegcolorspace", nulo);  

También probamos la codificación JPEG, pero esto no fue factible para uso en tiempo real debido al mayor tamaño y mayor número de paquetes.

Arquitectura DDS

El enfoque de publicación-suscripción fue clave para nuestra solución. Nos permitió compartir datos entre muchos clientes sin preocuparnos por los enchufes o conexiones de red. Solo necesitábamos especificar qué tipo de datos enviar y recibir. Creamos una biblioteca contenedora, DDStheus, para abstraer el uso de DDS en nuestro sistema.

Figura7. Arquitectura DDS general del sistema.

Nuestra solución final estaba compuesta por seis programas que compartían tres temas. Usamos diferentes lenguajes de programación:

  1. Python para trabajar a bajo nivel (HCI) con dispositivos Bluetooth
  2. MATLAB / Octave para hacer el script de triangulación
  3. Java para trabajar con RTI Connext DDS e interfaces gráficas de usuario

Necesitábamos conocer todos los valores de RSSI en una habitación. Creamos un script para configurar los dongles Bluetooth y obtener la información RSSI. Estos valores se enviaron a un programa Java utilizando una conexión de socket simple en la misma máquina. La aplicación Java publicó los datos en Sensor Data tema. Envió la identificación del niño (el sensor Bluetooth MAC), la identificación y la posición del dongle Bluetooth, la habitación actual (como una clave para filtrar por habitación), valor RSSI y tiempo de caducidad.

Figura8. Diagrama de flujo del programa de sensores.

Después de que las cámaras grabaron y codificaron el video, el programa Java Gava envía el video a través de Datos de video tema. Envió el ID de la cámara como un valor clave para filtrar la transmisión usando ContentFilteredTopic con la posición de la cámara, la habitación, el fotograma codificado y la información del códec.

Además, la aplicación puso el ID de la cámara, la habitación y la posición de la cámara en el valor de QoS de USER_DATA de cada editor de video. La minicomputadora de triangulación podría obtener toda la información de la cámara en una habitación con solo descubrir los editores. También podría detectar cámaras nuevas y rotas en tiempo real y actualizar el script de ubicación para mejorar el algoritmo de selección de la cámara.

Figura9. Diagrama de flujo del programa de video.

[1] [2] 下一页

Tecnología de Internet de las cosas

  1. Preguntas frecuentes de nuestros seminarios web de acceso remoto
  2. De nuestro CEO:El valor y la confianza son esenciales para avanzar
  3. La universidad comunitaria agrega flexibilidad para los estudiantes de fabricación de compuestos avanzados
  4. Un cliente del Líbano aprende a operar una máquina cnc
  5. Nuestros clientes de Jordania vinieron a visitar nuestra fábrica
  6. Un cliente de Canadá visitó nuestra fábrica
  7. Nuestro ingeniero viajó a Dubái para brindar asistencia técnica en el extranjero
  8. Cliente de Qatar visitó nuestra fábrica en abril de 2017
  9. Nuestro cliente de Bengala inspeccionará nuestra maquinaria de carpintería de nueva construcción
  10. Clientes de la India vinieron a nuestra fábrica para inspeccionar la máquina
  11. Visitantes de Corea para CNC Router Machine