3 changed files with 44 additions and 25 deletions
@ -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…
Reference in new issue