Stream of Cloud Point Visualisation à l'aide de PCL
-
14-11-2019 - |
Question
Je fais un traitement sur les données RVB et en profondeur et la construction de points cloud qui doivent être visualisés, j'utilise actuellement le visualiseur PCL et cela fonctionne bien. Je veux avoir le visualiseur dans un autre fil (en temps réel pour redessiner le point de cloud global, j'ai essayé Boost Threads mais j'obtiens une erreur d'exécution "VTK Bad Table"
Quelqu'un sait-il comment visualiser le flux de points cloud dans un autre fil?
La solution
Ok, je l'ai fait fonctionner maintenant, peut-être que j'ai fait quelque chose de mal avant, voici comment je l'ai fait en utilisant Boost Threads et Mutex
bool update;
boost::mutex updateModelMutex;
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGB>);
void visualize()
{
// prepare visualizer named "viewer"
while (!viewer->wasStopped ())
{
viewer->spinOnce (100);
// Get lock on the boolean update and check if cloud was updated
boost::mutex::scoped_lock updateLock(updateModelMutex);
if(update)
{
if(!viewer->updatePointCloud(cloud, "sample cloud"))
viewer->addPointCloud(cloud, colorHandler, "sample cloud");
update = false;
}
updateLock.unlock();
}
}
int main()
{
//Start visualizer thread
boost::thread workerThread(visualize);
while(notFinishedProcessing)
{
boost::mutex::scoped_lock updateLock(updateModelMutex);
update = true;
// do processing on cloud
updateLock.unlock();
}
workerThread.join();
}
METTRE À JOUR:
Selon ce page La raison en est que l'ajout d'un nuage de points vide au visualiseur fait que les choses deviennent folles alors j'ai édité le code ci-dessus