ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

lubosz's profile - activity

2012-08-03 12:21:42 -0500 received badge  Enlightened (source)
2012-08-03 12:21:42 -0500 received badge  Guru (source)
2012-06-15 06:05:39 -0500 received badge  Great Answer (source)
2012-06-12 08:05:35 -0500 received badge  Good Answer (source)
2012-06-08 05:00:23 -0500 received badge  Nice Answer (source)
2012-06-04 03:38:30 -0500 received badge  Teacher (source)
2012-05-29 23:42:37 -0500 received badge  Editor (source)
2012-05-29 23:32:38 -0500 answered a question openni_launch not working in fuerte + ubuntu precise 12.04

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 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 ... (more)

2012-05-29 21:09:45 -0500 received badge  Supporter (source)