Я пытаюсь использовать Orbbec Astra s для запуска программы захвата PCL. Я изменил пример кода для работы с граббером Openni2. Но я получаю следующую ошибку. Пожалуйста, скажите мне, где я иду не так. Я использую PCL 1.8.0 на Ubuntu 16.04.
Это мой код:
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/io/openni2_grabber.h>
#include <pcl/common/time.h>
class SimpleOpenNIProcessor
{
public:
void cloud_cb_ (const pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr &cloud)
{
static unsigned count = 0;
static double last = pcl::getTime ();
if (++count == 30)
{
double now = pcl::getTime ();
std::cout << "distance of center pixel :" << cloud->points [(cloud->width >> 1) * (cloud->height + 1)].z << " mm. Average framerate: " << double(count)/double(now - last) << " Hz" << std::endl;
count = 0;
last = now;
}
}
void run ()
{
// create a new grabber for OpenNI devices
pcl::Grabber* interface = new pcl::io::OpenNI2Grabber();
// make callback function from member function
boost::function<void (const pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr&)> f =
boost::bind (&SimpleOpenNIProcessor::cloud_cb_, this, _1);
// connect callback function for desired signal. In this case its a point cloud with color values
boost::signals2::connection c = interface->registerCallback (f);
// start receiving point clouds
interface->start ();
// wait until user quits program with Ctrl-C, but no busy-waiting -> sleep (1);
while (true)
boost::this_thread::sleep (boost::posix_time::seconds (1));
// stop the grabber
interface->stop ();
}
};
int main ()
{
SimpleOpenNIProcessor v;
v.run ();
return (0);
}
прекращение вызова после создания экземпляра pcl :: IOException
what (): void pcl :: io :: OpenNI2Grabber :: setupDevice (постоянная строка&, const pcl :: io :: OpenNI2Grabber :: Mode&, const pcl :: io :: OpenNI2Grabber :: Mode&) в /pcl/io/src/openni2_grabber.cpp @ 325: устройства не подключены.
Прервано (ядро сброшено)
Задача ещё не решена.
Других решений пока нет …