Сбой настройки взаимодействия с демонстрацией PCL Visualizer на spinonce

Я пытаюсь заставить работать демонстрационные примеры PCL Visualizer (весь код здесь: http://pointclouds.org/documentation/tutorials/pcl_visualizer.php) для Windows, PCL 1.6, 32-разрядная версия.

Он отлично работает, за исключением части настройки взаимодействия, которая, по иронии судьбы, меня больше всего интересует. Необработанное исключение возникает в строке spinOnce(100) основного метода. Из долгого поиска, который я сделал, похоже, что он глубоко связан с тем, что VTK не является потокобезопасным, а обратные вызовы клавиатуры / мыши мешают окну VTK. Однако я не думаю, что полностью понял это и мог ошибаться. Я нашел очень похожий вопрос здесь, в stackoverflow (используя pcl::visualization в разных потоках из разных экземпляров класса), и я пытался использовать scoped_locks вокруг spinonce, как он предлагает, но я думаю, что делаю это неправильно.

Кому-нибудь удалось полностью использовать этот пример на win32? Для справки, вот моя неудачная попытка заблокировать spinonce:

while (!viewer->wasStopped ())
 {

boost::mutex vis_mutex;  //storage for static lock 
boost::mutex::scoped_lock lock(vis_mutex); 
viewer->spinOnce (); 
boost::this_thread::sleep (boost::posix_time::microseconds (100000));

  }

Заранее спасибо!


person pHonta    schedule 17.03.2014    source источник


Ответы (1)


Боюсь, что это может быть связано с версией PCL.

Учебники сделаны в соответствии с последними версиями PCL, и начиная с версии 1.6 все могло измениться.

Я рекомендую вам обновиться до последней версии PCL с github. (на самом деле я использую код из этого туториала на win64 прямо из коробки, никаких проблем)

person Jun Murakami    schedule 05.04.2014
comment
Хорошо, я попробую это и отчитаюсь. Спасибо! - person pHonta; 06.04.2014