division de Recherche et doc en plusieurs fichiers

master
Louis-Guillaume DUBOIS 11 years ago
parent
commit
1ec5cd031b
  1. 2
      Home.md
  2. 27
      Recherche et documentation.md
  3. 40
      Traitement signal Kinect.md

2
Home.md

@ -3,7 +3,9 @@
* [Installation de ROS](Installation de ROS)
* [Installation de PCL](Installation de PCL)
* [Obtention du plan à partir de la Kinect](Traitement signal Kinect)
* [Recherche et documentation](Recherche et documentation)
## Documentation sur BibteX
[Par V. Prêtre](http://www.metz.supelec.fr/metz/personnel/pretre/Bienvenue.php)

27
Recherche et documentation.md

@ -7,32 +7,9 @@ Un etherpad est disponible à l'url suivante : [http://etherpad.rezometz.org/p/h
Bibliothèques à regarder :
- [PCL (PointCloud)](http://www.pointclouds.org/) : beaucoup, beaucoup de choses...
* [les tutoriels](http://www.pointclouds.org/documentation/tutorials/)
* [pcl::NormalEstimation](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation.html) & [pcl::NormalEstimationOMP](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation_o_m_p.html) pour régresser un plan
- en particulier [computePointNormal](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation.html#afa0dd0bf400977f40eb91f08750bfa17) qui sert l’équation du plan sur un plateau
- explication [ici](http://www.pointclouds.org/documentation/tutorials/normal_estimation.php#normal-estimation)
* [pcl::ConditionalRemoval](http://docs.pointclouds.org/trunk/classpcl_1_1_conditional_removal.html) pour filtrer les points (critère de profondeur (plus simple a priori) ou couleur)
- AR Drone :
* - AR Drone :
* [ardrone_autonomy](https://github.com/AutonomyLab/ardrone_autonomy/tree/master#sending-commands-to-ar-drone)
Pour l’interface Kinect on a le choix entre :
- l’interface fournie par les packages ROS :
* [OpenKinect / libfreenect](https://github.com/OpenKinect) avec [freenect_stack](http://wiki.ros.org/freenect_stack) qui publie des sensor_msgs::Image
* puis conversion des sensor_msgs::Image en sensor_msgs::PointCloud2 avec [depth_image_proc/point_cloud_xyz](http://wiki.ros.org/depth_image_proc) ou [depth_image_proc/point_cloud_xyzrgb](http://wiki.ros.org/depth_image_proc)
* puis utilisation avec [pcl_ros](http://wiki.ros.org/pcl_ros?distro=indigo) (conversion automatique sensor_msgs/PointCloud2 => PointCloud<>), sinon conversion manuelle avec [pcl::fromPCLPointCloud2](http://docs.pointclouds.org/trunk/namespacepcl.html#a89aca82e188e18a7c9a71324e9610ec9) ou [pcl::fromROSMsg](http://docs.pointclouds.org/trunk/namespacepcl.html#a22b3a98851964a79fafa7b9e543b3c75)
* puis traitement des PointCloud<> par PCL
- [moins bien] l’interface fournie par PCL, qui récupère directement un PointCloud utilisable par PCL à partir de la Kinect :
* [openni_wrapper::DeviceKinect](http://docs.pointclouds.org/trunk/classopenni__wrapper_1_1_device_kinect.html) & [openni_wrapper::OpenNIDevice](http://docs.pointclouds.org/trunk/classopenni__wrapper_1_1_open_n_i_device.html) pour parler à la Kinect
* openni_grabber : [tuto](http://www.pointclouds.org/documentation/tutorials/openni_grabber.php#openni-grabber), [doc](http://docs.pointclouds.org/trunk/classpcl_1_1_open_n_i_grabber.html)
Publication & Souscription à des topics de PointCloud avec [pcl_ros](http://wiki.ros.org/pcl_ros?distro=indigo)
### Important ###
Avant de coder, regarder :
@ -57,4 +34,4 @@ Il vous faut donc dans un premier temps :
J'ai sorti une kinect, elle est posée sur un des bureaux de la smartroom.
Pour rappel, à la fin du projet, je vous demanderais de me remettre un rapport et de faire une soutenance.
Pour rappel, à la fin du projet, je vous demanderais de me remettre un rapport et de faire une soutenance.

40
Traitement signal Kinect.md

@ -0,0 +1,40 @@
# Obtention des PointCloud
## Pilote ROS de la Kinect
Le pilote [freenect_stack](http://wiki.ros.org/freenect_stack), qui utilise [OpenKinect / libfreenect](https://github.com/OpenKinect) ne publie que des sensor_msgs::Image inutilisable par PCL.
Il faut donc trouver comment convertir ces données brutes en données traitables par PCL.
## Conversion en PointCloud
Pour cela nous utilisons les nodelets [depth_image_proc/point_cloud_xyz](http://wiki.ros.org/depth_image_proc) ou [depth_image_proc/point_cloud_xyzrgb](http://wiki.ros.org/depth_image_proc) founis par [image_pipeline](http://wiki.ros.org/image_pipeline?distro=indigo).
Les topics publiés sont au format sensor_msgs/PointCloud2, c’est normal.
## Récupération et publication des PointCloud sur les topics
La façon la plus simple de récupérer les PointCloud (classe de PCL) à partir des messages de type sensor_msgs/PointCloud2 publiés par les nodelets d’image_pipeline est d’utiliser [pcl_ros](http://wiki.ros.org/pcl_ros?distro=indigo). Cf. leurs exemples de publishers et subscribers.
De là même manière avec pcl_ros on publie des sensor_msgs/PointCloud2 de façon transparente à partir de PointCloud.
Pour information, la conversion manuelle est possible avec [pcl::fromROSMsg](http://docs.pointclouds.org/trunk/namespacepcl.html#a22b3a98851964a79fafa7b9e543b3c75) ou [pcl::fromPCLPointCloud2](http://docs.pointclouds.org/trunk/namespacepcl.html#a89aca82e188e18a7c9a71324e9610ec9)
# Traitement des PointCloud avec PCL
## Filtrage selon z ou selon la couleur
Utiliser [pcl::ConditionalRemoval](http://docs.pointclouds.org/trunk/classpcl_1_1_conditional_removal.html) dans un nœud.
## Régression du plan
Utiliser [pcl::NormalEstimation](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation.html) & [pcl::NormalEstimationOMP](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation_o_m_p.html) :
- en particulier [computePointNormal](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation.html#afa0dd0bf400977f40eb91f08750bfa17) qui sert l’équation du plan sur un plateau : (a,b,c,d) tels que a.x + b.y + c.z + d = 0.
- explication [ici](http://www.pointclouds.org/documentation/tutorials/normal_estimation.php#normal-estimation)
# Alternative pour la récupération des PointCloud
* [openni_wrapper::DeviceKinect](http://docs.pointclouds.org/trunk/classopenni__wrapper_1_1_device_kinect.html) & [openni_wrapper::OpenNIDevice](http://docs.pointclouds.org/trunk/classopenni__wrapper_1_1_open_n_i_device.html) pour parler à la Kinect
* openni_grabber : [tuto](http://www.pointclouds.org/documentation/tutorials/openni_grabber.php#openni-grabber), [doc](http://docs.pointclouds.org/trunk/classpcl_1_1_open_n_i_grabber.html)
Loading…
Cancel
Save