Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

Défi technique ETSIIT : d'étudiants à entrepreneurs avec Locaviewer

Il y a un an, nous nous sommes lancés dans le IVe Défi Technique ETSIIT (vidéo). Qui sommes-nous ? Nous sommes quatre étudiants en Génie Électrique et Informatique à l'Université de Grenade, en Espagne.

Notre équipe, Prometheus, a remporté la victoire au Tech Challenge sponsorisé par RTI. Des équipes de quatre ou cinq étudiants devaient créer un produit répondant à un problème réel posé par un partenaire externe. Le thème de cette année était « Système vidéo distribué multi-agents ».

Nous avons relevé le défi pour acquérir de l'expérience pratique. Un an plus tard, tout en continuant nos études, nous avons identifié une opportunité commerciale, conçu le produit concurrentiel Locaviewer, élaboré une stratégie de marché et construit un prototype fonctionnel — le tout en plus de nos obligations académiques.

Locaviewer

De nombreux parents s'inquiètent de la santé et des progrès de leurs enfants à la crèche. Locaviewer offre aux parents une visibilité en temps réel sur leur enfant. Nous avons produit une vidéo promotionnelle pour présenter la solution, et notre code source est disponible sous licence MIT sur GitHub.

Organisation et planning de l'équipe

Le projet a demandé environ 250 heures. Nous nous réunissions chaque semaine pendant au minimum quatre heures, montant à 20 heures par semaine pendant le dernier mois. Pour maximiser l'efficacité, nous nous sommes divisés en deux sous-équipes : l'une focalisée sur l'algorithme de localisation intérieure Bluetooth, l'autre sur la capture vidéo, l'encodage/décodage et la distribution via RTI Connext DDS.

Algorithme de localisation

La pierre angulaire de notre solution était la localisation de chaque enfant dans la crèche. Chaque enfant portait un bracelet avec un capteur Bluetooth rapportant en continu l'indication de puissance de signal reçue (RSSI) vers des dongles fixes montés sur les murs de la salle. Nous avons corrélé les valeurs RSSI à la distance, établissant une relation fiable.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 2. Mesure empirique des signaux Bluetooth par angle et distance.
Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 3. Dispositif portable Locaviewer.

Les lectures RSSI étaient transmises à un mini-ordinateur (Raspberry Pi ou MK802 III) exécutant un algorithme de triangulation pour localiser chaque enfant. Connaissant les positions des caméras, nous pouvions sélectionner la caméra optimale pour chaque enfant.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 4. Triangulation intérieure.

Application d'enregistrement vidéo

Nous avons utilisé GStreamer pour Java pour gérer la capture vidéo temps-réel, l'encodage, le décodage et l'affichage. Des alternatives comme vlcj manquaient de support pour Raspberry Pi ou ne répondaient pas à nos exigences de latence. Après de nombreuses recherches, GStreamer s'est avéré adapté, nous permettant d'accéder aux tampons vidéo encodés via les éléments AppSink et AppSource et de les publier sur un sujet DDS.

Nous avons choisi l'encodeur VP8 (WebM). En raison de la compatibilité du wrapper Java avec GStreamer 0.10, nous avons dû réduire la résolution pour tenir dans les contraintes de la plateforme. Notre configuration de test utilisait un Raspberry Pi, avec une migration prévue vers un MK802 III pour plus de puissance de calcul à coût équivalent.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 5. Pipeline GStreamer pour l'enregistrement, l'encodage et l'obtention de la vidéo.

Le fragment Java suivant crée l'encodeur VP8 :

Element codec = ElementFactory.make("vp8enc", null); codec.set("threads", 5); codec.set("max-keyframe-distance", 20); codec.set("speed", 5); Element capsDst = ElementFactory.make("capsfilter", null); capsDst.setCaps(Caps.fromString("video/x-vp8 profile=(string)2"));

Côté client, nous avons configuré le pipeline comme suit :

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 6. Pipeline GStreamer pour le paramétrage, le décodage et la lecture vidéo.

Le code Java pour le décodeur VP8 :

String caps = "video/x-vp8, width=(int)320, height=(int)240, framerate=15/1"; Element capsSrc = ElementFactory.make("capsfilter", null); capsSrc.setCaps(Caps.fromString(caps)); Element queue = ElementFactory.make("queue2", null); Element codec = ElementFactory.make("vp8dec", null); Element convert = ElementFactory.make("ffmpegcolorspace", null);

Nous avons expérimenté l'encodage JPEG, mais sa taille de paquet plus importante rendait le streaming temps-réel impraticable.

Architecture DDS

Le modèle publication-souscription était central dans notre solution, éliminant le besoin de gérer manuellement les connexions socket. Nous avons abstrait les interactions DDS via notre propre bibliothèque wrapper, DDStheus.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 7. Architecture DDS générale du système.

Notre système final comprenait six programmes partageant trois sujets, implémentés en trois langages :

  1. Python pour la gestion Bluetooth bas niveau.
  2. MATLAB/Octave pour les scripts de triangulation.
  3. Java pour l'intégration RTI Connext DDS et le développement d'IHM.

Nous avions besoin de toutes les valeurs RSSI de la salle, donc nous avons écrit un script pour configurer les dongles et collecter les données RSSI. Ces valeurs étaient transmises à un programme Java via un socket local. L'application Java publiait les données sur le sujet Sensor Data, incluant l'ID enfant (MAC du capteur), l'ID dongle, la position, la salle actuelle (comme clé de filtrage), la valeur RSSI et le temps d'expiration.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 8. Diagramme de flux du programme capteurs.

Après capture et encodage vidéo, le programme Java Gava transmettait le flux via le sujet Video Data, étiquetant chaque paquet avec l'ID caméra et les informations de salle. Nous avons exploité ContentFilteredTopic pour filtrer les flux par position de caméra et salle.

Les métadonnées caméra — ID, salle et position — étaient stockées dans le champ QoS USER_DATA de chaque éditeur. Le mini-ordinateur de triangulation pouvait découvrir toutes les caméras dans une salle, détecter en temps réel les caméras nouvelles ou hors ligne, et ajuster l'algorithme de sélection de caméra en conséquence.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 9. Diagramme de flux du programme vidéo.

L'étape finale consistait à agréger les données capteurs et vidéo dans le sujet Child Data. Un serveur de salle — implémenté sur Raspberry Pi ou MK802 III — triangulait la position de l'enfant et sélectionnait la meilleure caméra. Il filtrait les capteurs par salle, récupérait les infos caméra, exécutait le script Octave pour calculer la position de l'enfant et la caméra optimale, et publiait le résultat vers le cloud. L'ID enfant et la qualité vidéo servaient de clés de filtrage pour une souscription efficace.

Pour optimiser l'utilisation des ressources, le serveur de salle n'exécutait le script de triangulation que lorsqu'un abonné demandait des données pour un enfant spécifique, déterminé via la découverte d'abonnés et les filtres ContentFilteredTopic.

Nous avons aussi implémenté un mécanisme de tolérance aux pannes : chaque mini-ordinateur publiait un ID de priorité dans USER_DATA. Le nœud avec l'ID le plus bas devenait le serveur actif jusqu'à l'arrivée d'un nouveau nœud avec un ID encore plus bas.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 10. Diagramme de flux du programme serveur de salle.

Applications utilisateur

Nous avons développé deux applications utilisateur final. La première permet aux parents de voir leur enfant en temps réel. La seconde est destinée au personnel de crèche pour surveiller toutes les caméras, gérer les accès parents et automatiser le contrôle de présence.

Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer
Figure 11. Application client parent.
Défi technique ETSIIT : d étudiants à entrepreneurs avec Locaviewer

[1] [2]  >

Technologie de l'Internet des objets

  1. GBCC lance des sessions matinales pour la fabrication avancée de composites, soutenant les travailleurs postés
  2. Client libanais formé sur machines CNC, plasma et laser gravure dans notre usine
  3. Clients jordaniens visitent notre usine pour tester des machines à bois 3 axes
  4. Clients canadiens visitent notre usine 1530 pneumatique avancée – Découverte du routeur 3 broches
  5. Ingénieur expert dispense une formation avancée à Dubaï sur le routeur CNC ELE2140 Carousel ATC
  6. Client qatari visite notre usine – Présentation du routeur CNC 1530 double broche
  7. Client du Bengale visite pour inspecter un nouveau routeur CNC bois
  8. Clients indiens inspectent l'usine et commandent un routeur CNC ELE1325 personnalisé
  9. Visiteur industriel coréen visite notre usine de production de routeurs CNC