Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

This is not a ROS bug, but an OpenNI / PrimeSense Sensor one (openni-dev 1.5.2.23 and ps-engine 5.1.0.41 Ubuntu packages).

The boost assertion error in openni_camera (ros-fuerte-openni-camera) was caused by an uncommented exception message.

nodelet: /usr/include/boost/smart_ptr/shared_ptr.hpp:412:
  boost::shared_ptr<T>::reference boost::shared_ptr<T>::operator*() const 
  [with T = xn::NodeInfo, boost::shared_ptr<T>::reference = xn::NodeInfo&]:
  Assertion `px != 0' failed.

There is an interesting comment in the area:

  // Suat: This is an ugly ASUS Xtion workaround.
  if (status == XN_STATUS_OK)
  {
  //THROW_OPENNI_EXCEPTION ("enumerating image generators failed. Reason: %s", xnGetStatusString (status));

Maybe it occurred all the time on ASUS Xtion, so it was removed. The problem is that the Kinect color nodes can not be initialized.

I wrote a patch, so the exception is thrown again. Try my openni_camera repo, if you want.

With my patch you get a nicer exception:

terminate called after throwing an instance of 'openni_wrapper::OpenNIException'
  what():  unsigned int openni_wrapper::OpenNIDriver::updateDeviceList() 
  @ openni_camera/src/openni_driver.cpp @ 118 : enumerating image generators failed. 
  Reason: Can't create any node of the requested type!

This sadly does not solve the issue. The workaround to kill the XnSensorServer, found in the PrimeSense Sensor Module (ps-engine). Sometimes I have to start XnSensorServer and close it, if the kill does not work.

$ killall XnSensorServer
$ XnSensorServer 
Starting sensor server...
Running...
^C
$

The fix could be applied to the launch script, so you just could restart the node. But there are also runtime errors. When I restart the client application there sometimes is no Kinect image, without an openni_camera crash.

Sometimes I get following exception during runtime:

terminate called after throwing an instance of 'openni_wrapper::OpenNIException'
  what():  virtual void openni_wrapper::OpenNIDevice::startImageStream() 
  @ openni_camera/src/openni_device.cpp @ 224 : 
  starting image stream failed. Reason: Xiron OS got an event timeout!

I was very unsatisfied with the OpenNI performance and looked into the Archlinux Packages openni-git and sensorkinect-git which worked like a charm.

They use the unstable branches of both repositories and avin2's branch of Sensor. He frequently merges PrimeSense's unstable branch, but he did not seem to got merged upstream. His work included things like blacklisting the gspca-kinect Linux module, which conflicts with OpenNi.

This is a overview of current OpenNI and Sensor versions. You can see that ROS Fuerte is in sync with master and Jochen Sprickerhof's PCL PPA is outdated. I also experienced the boost assertion with the PCL PPA version.

openni-dev:
pcl ppa      1.3.2.1
ros deb      1.5.2.23
git master   1.5.2.23
git unstable 1.5.4.0

ps-engine:
pcl ppa      5.0.3.3
ros deb      5.1.0.41
git master   5.1.0.41
git unstable 5.1.2.1
git avin2    5.1.2.1

I made Ubuntu packages of git unstable and git avin2 with checkinstall. I didn't experience the crash on these versions. I would like to make a PPA with these versions, but can't find the ros debian source packages (there are not in the repository) and Jochen Sprickerhof's source packages are outdated.

TL;DR

Try my deb packages of openni-dev unstable and ps-engine avin2 for Ubuntu Precise 64bit.

click to hide/show revision 2
reboot recommendation

This is not a ROS bug, but an OpenNI / PrimeSense Sensor one (openni-dev 1.5.2.23 and ps-engine 5.1.0.41 Ubuntu packages).

The boost assertion error in openni_camera (ros-fuerte-openni-camera) was caused by an uncommented exception message.

nodelet: /usr/include/boost/smart_ptr/shared_ptr.hpp:412:
  boost::shared_ptr<T>::reference boost::shared_ptr<T>::operator*() const 
  [with T = xn::NodeInfo, boost::shared_ptr<T>::reference = xn::NodeInfo&]:
  Assertion `px != 0' failed.

There is an interesting comment in the area:

  // Suat: This is an ugly ASUS Xtion workaround.
  if (status == XN_STATUS_OK)
  {
  //THROW_OPENNI_EXCEPTION ("enumerating image generators failed. Reason: %s", xnGetStatusString (status));

Maybe it occurred all the time on ASUS Xtion, so it was removed. The problem is that the Kinect color nodes can not be initialized.

I wrote a patch, so the exception is thrown again. Try my openni_camera repo, if you want.

With my patch you get a nicer exception:

terminate called after throwing an instance of 'openni_wrapper::OpenNIException'
  what():  unsigned int openni_wrapper::OpenNIDriver::updateDeviceList() 
  @ openni_camera/src/openni_driver.cpp @ 118 : enumerating image generators failed. 
  Reason: Can't create any node of the requested type!

This sadly does not solve the issue. The workaround to kill the XnSensorServer, found in the PrimeSense Sensor Module (ps-engine). Sometimes I have to start XnSensorServer and close it, if the kill does not work.

$ killall XnSensorServer
$ XnSensorServer 
Starting sensor server...
Running...
^C
$

The fix could be applied to the launch script, so you just could restart the node. But there are also runtime errors. When I restart the client application there sometimes is no Kinect image, without an openni_camera crash.

Sometimes I get following exception during runtime:

terminate called after throwing an instance of 'openni_wrapper::OpenNIException'
  what():  virtual void openni_wrapper::OpenNIDevice::startImageStream() 
  @ openni_camera/src/openni_device.cpp @ 224 : 
  starting image stream failed. Reason: Xiron OS got an event timeout!

I was very unsatisfied with the OpenNI performance and looked into the Archlinux Packages openni-git and sensorkinect-git which worked like a charm.

They use the unstable branches of both repositories and avin2's branch of Sensor. He frequently merges PrimeSense's unstable branch, but he did not seem to got merged upstream. His work included things like blacklisting the gspca-kinect Linux module, which conflicts with OpenNi.

This is a overview of current OpenNI and Sensor versions. You can see that ROS Fuerte is in sync with master and Jochen Sprickerhof's PCL PPA is outdated. I also experienced the boost assertion with the PCL PPA version.

openni-dev:
pcl ppa      1.3.2.1
ros deb      1.5.2.23
git master   1.5.2.23
git unstable 1.5.4.0

ps-engine:
pcl ppa      5.0.3.3
ros deb      5.1.0.41
git master   5.1.0.41
git unstable 5.1.2.1
git avin2    5.1.2.1

I made Ubuntu packages of git unstable and git avin2 with checkinstall. I didn't experience the crash on these versions. I would like to make a PPA with these versions, but can't find the ros debian source packages (there are not in the repository) and Jochen Sprickerhof's source packages are outdated.

TL;DR

Try my deb packages of openni-dev unstable and ps-engine avin2 for Ubuntu Precise 64bit.

I would recommend a reboot after installing these because there is a kernel module blacklist and udev rules in ps-engine.

This is not a ROS bug, but an OpenNI / PrimeSense Sensor one (openni-dev 1.5.2.23 and ps-engine 5.1.0.41 Ubuntu packages).

The boost assertion error in openni_camera (ros-fuerte-openni-camera) was caused by an uncommented exception message.

nodelet: /usr/include/boost/smart_ptr/shared_ptr.hpp:412:
  boost::shared_ptr<T>::reference boost::shared_ptr<T>::operator*() const 
  [with T = xn::NodeInfo, boost::shared_ptr<T>::reference = xn::NodeInfo&]:
  Assertion `px != 0' failed.

There is an interesting comment in the area:

  // Suat: This is an ugly ASUS Xtion workaround.
  if (status == XN_STATUS_OK)
  {
  //THROW_OPENNI_EXCEPTION ("enumerating image generators failed. Reason: %s", xnGetStatusString (status));

Maybe it occurred all the time on ASUS Xtion, so it was removed. The problem is that the Kinect color nodes can not be initialized.

I wrote a patch, so the exception is thrown again. Try my openni_camera repo, if you want.

With my patch you get a nicer exception:

terminate called after throwing an instance of 'openni_wrapper::OpenNIException'
  what():  unsigned int openni_wrapper::OpenNIDriver::updateDeviceList() 
  @ openni_camera/src/openni_driver.cpp @ 118 : enumerating image generators failed. 
  Reason: Can't create any node of the requested type!

This sadly does not solve the issue. The workaround to kill the XnSensorServer, found in the PrimeSense Sensor Module (ps-engine). Sometimes I have to start XnSensorServer and close it, if the kill does not work.

$ killall XnSensorServer
$ XnSensorServer 
Starting sensor server...
Running...
^C
$

The fix could be applied to the launch script, so you just could restart the node. But there are also runtime errors. When I restart the client application there sometimes is no Kinect image, without an openni_camera crash.

Sometimes I get following exception during runtime:

terminate called after throwing an instance of 'openni_wrapper::OpenNIException'
  what():  virtual void openni_wrapper::OpenNIDevice::startImageStream() 
  @ openni_camera/src/openni_device.cpp @ 224 : 
  starting image stream failed. Reason: Xiron OS got an event timeout!

I was very unsatisfied with the OpenNI performance and looked into the Archlinux Packages openni-git and sensorkinect-git which worked like a charm.

They use the unstable branches of both repositories git branch of OpenNI and avin2's branch of Sensor. He frequently merges PrimeSense's unstable branch, but he did not seem to got merged upstream. His work included things like blacklisting the gspca-kinect Linux module, which conflicts with OpenNi.

This is a overview of current OpenNI and Sensor versions. You can see that ROS Fuerte is in sync with master and Jochen Sprickerhof's PCL PPA is outdated. I also experienced the boost assertion with the PCL PPA version.

openni-dev:
pcl ppa      1.3.2.1
ros deb      1.5.2.23
git master   1.5.2.23
git unstable 1.5.4.0

ps-engine:
pcl ppa      5.0.3.3
ros deb      5.1.0.41
git master   5.1.0.41
git unstable 5.1.2.1
git avin2    5.1.2.1

I made Ubuntu packages of git unstable and git avin2 with checkinstall. I didn't experience the crash on these versions. I would like to make a PPA with these versions, but can't find the ros debian source packages (there are not in the repository) and Jochen Sprickerhof's source packages are outdated.

TL;DR

Try my deb packages of openni-dev unstable and ps-engine avin2 for Ubuntu Precise 64bit.

I would recommend a reboot after installing these because there is a kernel module blacklist and udev rules in ps-engine.