PCL: Visualiser un nuage de points
J'essaie de visualiser le nuage de points à l'aide de PCL CloudViewer. Le problème est que je suis assez novice en C++ et j'en ai trouvé deux tutoriels première démontrant la création de PointCloud et deuxième démonstration de la visualisation d'un PointCloud. Cependant, je ne suis pas capable de combiner ces deux tutoriels.
Voici ce que je viens avec:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
//Fill in the cloud data
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize (cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size (); ++i)
{
cloud.points[i].x = 1024 * rand () /(RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand () /(RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * rand () /(RAND_MAX + 1.0f);
}
pcl::visualization::CloudViewer viewer ("Simple Cloud Viewer");
viewer.showCloud (cloud);
while (!viewer.wasStopped ())
{
}
return (0);
}
mais cela même ne compile pas:
error: no matching function for call to
‘pcl::visualization::CloudViewer::showCloud(pcl::PointCloud<pcl::PointXYZ>&)’
Je suis en train de faire quelque chose de similaire. Je voulais juste savoir si vous avez enfin pu résoudre vos erreurs et de construire votre projet ?
OriginalL'auteur liborw | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
Votre message d'erreur vous indique ce que vous devez faire:
Donc aller à la documentation de CloudViewer et de voir quels sont les arguments de cette fonction membre: http://docs.pointclouds.org/1.5.1/classpcl_1_1visualization_1_1_cloud_viewer.html
Là on voit qu'il prend un
const MonochromeCloud::ConstPtr &cloud
pas de la crue de référence que vous êtes de passage dans. C'est une définition de type d'un pointeur intelligent de boost:Ainsi, lorsque vous créez votre cloud vous devez envelopper dans un de ces pointeurs intelligents au lieu d'en faire une variable locale. Quelque chose comme (non testé):
Ensuite, lorsque vous passez dans la variable cloud, il aura le bon type et que vous n'obtenez pas l'erreur de le signaler. Vous devrez également modifier votre
cloud.foo
s àcloud->foo
s.À la recherche à la deuxième exemple vous donner, ils le font ainsi:
OriginalL'auteur ahcox
De donner la réponse tout de suite:
Puis mettez-les dans ptrCloud dans le spectateur, c'est ce qu'elle attend:
OriginalL'auteur TimZaman
Le tutoriel pour CloudViewer pcl cloudviewer tutorielhttp://pointclouds.org/documentation/tutorials/cloud_viewer.php#cloud-viewer définit le nuage de points comme suit:
Mais vous avez écrit:
Donc essayer de passer le cloud car &cloud au lieu de nuage, ou de le déclarer comme un pointeur.
OriginalL'auteur Swagatika
Si quelqu'un d'autre est tout simplement la recherche de la façon de faire dans ROS, il peut être fait simplement à l'aide de:
Le comprend pourrait probablement être nettoyé plus 🙂
OriginalL'auteur JTIM