Difference between revisions of "Projet Lidar 2013"

From air
Jump to navigation Jump to search
Line 25: Line 25:
   
 
== Implémentation ==
 
== Implémentation ==
* L'implémentation du protocole SCIP version 2.0 est OSGi-ifié sous forme d'un bundle.
+
* 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 ([http://www.brianziman.com/])
 
* 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 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.
 
* 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.
Line 31: Line 33:
   
 
N.B: Le client MQTT utilisé est l'implémentation fourni par Fusesource, ici: [http://mqtt-client.fusesource.org/]
 
N.B: Le client MQTT utilisé est l'implémentation fourni par Fusesource, ici: [http://mqtt-client.fusesource.org/]
  +
  +
== 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).

Revision as of 10:28, 18 April 2013

Lidar1.jpg
Lidar2.jpg
Lidar3.jpg
Lidar4.jpg
Couloir1.png
Couloir2.png


Le projet

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

Il s'agit du modèle URG-04LX-UG01 décrit à cette adresse: http://air.imag.fr/mediawiki/index.php/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).