Projet Lidar 2013

From air
Jump to navigation Jump to search


Cartographie du couloir. L'extincteur réflichit le faisceau laser du Lidar, causant des erreurs de mesure.
Cartographie du couloir Polytech
Cartographie du couloir Polytech
Cartographie du couloir de l'IMAG
1ère version de l'interface
2ème version de l'interface. L'acquisition fonctionne sur OSGi (Apache Felix). La visualisation 3D est en stand-alone Java. Les données sont échangées via MQTT (Mosquitto).


Le projet

Pour ce projet nous avons voulu faire une visualisation 2D & 3D des données que récupère le Lidar.

Le capteur Lidar utilisé est le Hokuyo URG-04LX-UG01.

Nous avons créer une interface afin de pouvoir accéder à la récupération et à l'affichage des données.

Les photos affichées ici montrent le Lidar, l'interface utilisateur sur le pc et la visualisation du couloir que nous venions d'effectuer.

Architecture

Afin de dialoguer avec le Lidar, il a fallu implémenter le protocole de communication de ce dernier. Il s'agit du protocole SCIP (Sensor CommunIcation Protocol Specification) dont deux versions existent: 1.1 et 2.0

Dans notre cas, la version présente dans ce modèle est la plus récente: 2.0.

Des commandes sont envoyés via l'ordinateur jusqu'au Lidar connecté à ce dernier. Cela permet de récupérer diverses informations: version, activation/désactivation mais surtout la plus intéressante: la distance des divers points qu'a scanné le lidar dans l'espace !

Implémentation

  • L'implémentation du protocole SCIP version 2.0 est OSGi-ifié sous forme d'un bundle.
    • Pour communiquer avec le port série, nous utilisons un démon (écrit en C) développé par Pr. Sean Luck
    • Nous nous sommes inspiré de l'implémentation de SCIP 1.1 réalisée par Brian Ziman ([1])
  • Un bundle se charge de l'affichage en temps réel des données sous forme d'une visualisation 2D.
  • Un bundle se charge de se connecter à MQTT et offre la possibilité d'être invoqué lors d'un envoi (publish) de données vers un topic présent dans un serveur MQTT.
  • La visualisation 3D n'est pas OSGi-ifié (problème de librairie native non résolu..) mais inclus un client MQTT qui est abonné au même topic vers ou les données, via MQTT, sont envoyés. Permettant d'avoir une visualisation 3D qui pourrait être un programme distribué.

N.B: Le client MQTT utilisé est l'implémentation fourni par Fusesource, ici: [2]

Visualisation

Afin de faire une visualisation 3D, nous avons utilisé Java3D. Nous utilisons les angles et les mesures récupérés par le lidar afin de calculer les points que nous voulons tracer.

Une petite contrainte avec cette méthode est que, pour une raison d'affichage, on doit préciser une distance max parcouru afin que toutes les mesures puissent être correctement affichées. De plus, n'ayant pas la possibilité de calculer ou mesurer la distance à laquelle les mesures sont prises, il est nécessaire à l'utilisateur de spécifier cette position (sur l'axe z).