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

Revision history [back]

Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


NEW VERSION:

image description


OLD VERSION:

image description


Notice the "square" shape of the internals of the left lense on the new version.

Possible Solutions:

  1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
  2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

There might be other ways to fix this problem, but I really haven't dug into it much.

Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


NEW VERSION:

image description


OLD VERSION:

image description


Notice the "square" shape of the internals of the left lense on the new version.

Possible Solutions:

  1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
  2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

There might be other ways to fix this problem, but I really haven't dug into it much.

EDIT

Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


NEW VERSION:

image description


OLD VERSION:

image description


Notice the "square" shape of the internals of the left lense on the new version.

Possible Solutions:

  1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
  2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

There might be other ways to fix this problem, but I really haven't dug into it much.

EDIT

Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

EDIT 2

Our lab just bought 2 new Xtions from NewEgg, and we spent an entire day trying to come up with a single set of drivers that would allow collection of data off both 0x600 and 0x601 Xtions and 0x02ae Kinects. Additionally we wanted the openni_tracker to work as well. We tried compiling many different forks of the original Primesense/Sensor repo, each with different versions of NITE and the OpenNI SDK installed. Just for reference, we spent the most time with the following repositories:

  • jspricke openni-sensor-primesense - seems to be where the apt-get versions were built from (not super sure of this)
  • ph4m/SensorKinect - applied a patch 6 months ago that allowed building of avin2's repo with OpenNI SDK v1.5.7.10
  • rbrusu/Sensor - seemed to be a likely candidate, and once we got it building and installed, we were actually able to sporadically get data off of all devices

In the end, this is what worked

  1. Install drivers and OpenNI packages from apt-get. Gave following versions:
  • libopenni-dev - 1.5.4.0-4+precise1
  • libopenni-nite-dev - 1.3.1.5~precise
  • libopenni-sensor-primesense-dev - 5.1.0.41-2+precise1
  • libopenni-sensor-primesense0 - 5.1.0.41-2+precise1
  • libopenni0 - 1.5.4.0-4+precise1

    1. Then as mentioned on this page, you must change to a different NITE version to get openni_tracker working. So do one of the following:
  • Install NITE v1.5.2.21

  • Install both NITE 1.5.2.23, and OpenNI SDK v1.5.7.10

    1. I'm not 100% positive this step is necessary, but the udev rules that ship with the apt-get packages seem to be leaving out some devices. So we created a new file called /etc/udev/rules.d/primesense-usb.rules. I'll put its contents at the bottom of this answer. They can also be found at this pastebin.

    2. Following cues from this answers.ros.org page and @hfb below, we edited the /etc/openni/GlobalDefaults.ini. We set UsbInterface=0, and that's it. Suddenly both Asus devices, and the Kinect devices started working on 3 separate computers with Fuerte, Groovy and Hydro. All computers were on 12.04, and all devices were on USB 2.0 ports.

I realize that step 2 has multiple packages that may be hard to come by now that Primesense/OpenNI sites are gone (message me if you need copies of any old OpenNI/NITE/SensorDriver packages). Perhaps we can get structure.io to host some legacy versions as well as OpenNI2.

Contents of /etc/udev/rules.d/primesense-usb.rules:

# Make primesense device mount with writing permissions (default is read only for unknown devices)
SUBSYSTEM=="usb", ATTR{idProduct}=="0200", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0300", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0500", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0600", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0609", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1250", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1260", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1270", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1280", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1290", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="f9db", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"

#--avin mod--
# Kinect
SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"

Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


NEW VERSION:

image description


OLD VERSION:

image description


Notice the "square" shape of the internals of the left lense on the new version.

Possible Solutions:

  1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
  2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

There might be other ways to fix this problem, but I really haven't dug into it much.

EDIT

Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

EDIT 2

Our lab just bought 2 new Xtions from NewEgg, and we spent an entire day trying to come up with a single set of drivers that would allow collection of data off both 0x600 and 0x601 Xtions and 0x02ae Kinects. Additionally we wanted the openni_tracker to work as well. We tried compiling many different forks of the original Primesense/Sensor repo, each with different versions of NITE and the OpenNI SDK installed. Just for reference, we spent the most time with the following repositories:

  • jspricke openni-sensor-primesense - seems to be where the apt-get versions were built from (not super sure of this)
  • ph4m/SensorKinect - applied a patch 6 months ago that allowed building of avin2's repo with OpenNI SDK v1.5.7.10
  • rbrusu/Sensor - seemed to be a likely candidate, and once we got it building and installed, we were actually able to sporadically get data off of all devices

In the end, this is what worked

  1. Install drivers and OpenNI packages from apt-get. Gave following versions:
  • libopenni-dev - 1.5.4.0-4+precise1
  • libopenni-nite-dev - 1.3.1.5~precise
  • libopenni-sensor-primesense-dev - 5.1.0.41-2+precise1
  • libopenni-sensor-primesense0 - 5.1.0.41-2+precise1
  • libopenni0 - 1.5.4.0-4+precise1

    1. Then as mentioned on this page, you must change to a different NITE version to get openni_tracker working. So do one of the following:
  • Install NITE v1.5.2.21

  • Install both NITE 1.5.2.23, and OpenNI SDK v1.5.7.10

    1. I'm not 100% positive this step is necessary, but the udev rules that ship with the apt-get packages seem to be leaving out some devices. So we created a new file called /etc/udev/rules.d/primesense-usb.rules. I'll put its contents at the bottom of this answer. They can also be found at this pastebin.

    2. Following cues from this answers.ros.org page and @hfb below, we edited the /etc/openni/GlobalDefaults.ini. We set UsbInterface=0, and that's it. Suddenly both Asus devices, and the Kinect devices started working on 3 separate computers with Fuerte, Groovy and Hydro. All computers were on 12.04, and all devices were on USB 2.0 ports.

I realize that step 2 has multiple packages that may be hard to come by now that Primesense/OpenNI sites are gone (message me if you need copies of any old OpenNI/NITE/SensorDriver packages). Perhaps we can get structure.io to host some legacy versions as well as OpenNI2.

Contents of /etc/udev/rules.d/primesense-usb.rules:

# Make primesense device mount with writing permissions (default is read only for unknown devices)
SUBSYSTEM=="usb", ATTR{idProduct}=="0200", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0300", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0500", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0600", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="0609", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1250", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1260", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1270", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1280", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="1290", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="f9db", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"

#--avin mod--
# Kinect
SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"

Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


NEW VERSION:

image description


OLD VERSION:

image description


Notice the "square" shape of the internals of the left lense on the new version.

Possible Solutions:

  1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
  2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

There might be other ways to fix this problem, but I really haven't dug into it much.

EDIT

Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

EDIT 2

Our lab just bought 2 new Xtions from NewEgg, and we spent an entire day trying to come up with a single set of drivers that would allow collection of data off both 0x600 and 0x601 Xtions and 0x02ae Kinects. Additionally we wanted the openni_tracker to work as well. We tried compiling many different forks of the original Primesense/Sensor repo, each with different versions of NITE and the OpenNI SDK installed. Just for reference, we spent the most time with the following repositories:

  • jspricke openni-sensor-primesense - seems to be where the apt-get versions were built from (not super sure of this)
  • ph4m/SensorKinect - applied a patch 6 months ago that allowed building of avin2's repo with OpenNI SDK v1.5.7.10
  • rbrusu/Sensor - seemed to be a likely candidate, and once we got it building and installed, we were actually able to sporadically get data off of all devices

In the end, this is what worked

  1. Install drivers and OpenNI packages from apt-get. Gave following versions:
  • libopenni-dev - 1.5.4.0-4+precise1
  • libopenni-nite-dev - 1.3.1.5~precise
  • 1.3.1.5~precise
  • libopenni-sensor-primesense-dev - 5.1.0.41-2+precise1
  • 5.1.0.41-2+precise1
  • libopenni-sensor-primesense0 - 5.1.0.41-2+precise1
  • 5.1.0.41-2+precise1

  • libopenni0 - 1.5.4.0-4+precise1

  1. Then as mentioned on this page, you must change to a different NITE version to get openni_tracker working. So do one of the following:

    • Install NITE v1.5.2.21

    • Install both NITE 1.5.2.23, and OpenNI SDK v1.5.7.10

  • I'm not 100% positive this step is necessary, but the udev rules that ship with the apt-get packages seem to be leaving out some devices. So we created a new file called /etc/udev/rules.d/primesense-usb.rules. I'll put its contents at the bottom of this answer. They can also be found at this pastebin.

  • Following cues from this answers.ros.org page and @hfb below, we edited the /etc/openni/GlobalDefaults.ini. We set UsbInterface=0, and that's it. Suddenly both Asus devices, and the Kinect devices started working on 3 separate computers with Fuerte, Groovy and Hydro. All computers were on 12.04, and all devices were on USB 2.0 ports.

  • I realize that step 2 has multiple packages that may be hard to come by now that Primesense/OpenNI sites are gone (message me if you need copies of any old OpenNI/NITE/SensorDriver packages). Perhaps we can get structure.io to host some legacy versions as well as OpenNI2.

    Contents of /etc/udev/rules.d/primesense-usb.rules:

    # Make primesense device mount with writing permissions (default is read only for unknown devices)
    SUBSYSTEM=="usb", ATTR{idProduct}=="0200", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0300", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0500", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0600", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0609", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1250", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1260", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1270", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1280", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1290", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="f9db", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    
    #--avin mod--
    # Kinect
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    

    Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


    NEW VERSION:

    image description


    OLD VERSION:

    image description


    Notice the "square" shape of the internals of the left lense on the new version.

    Possible Solutions:

    1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
    2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

    There might be other ways to fix this problem, but I really haven't dug into it much.

    EDIT

    Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

    EDIT 2

    Our lab just bought 2 new Xtions from NewEgg, and we spent an entire day trying to come up with a single set of drivers that would allow collection of data off both 0x600 and 0x601 Xtions and 0x02ae Kinects. Additionally we wanted the openni_tracker to work as well. We tried compiling many different forks of the original Primesense/Sensor repo, each with different versions of NITE and the OpenNI SDK installed. Just for reference, we spent the most time with the following repositories:

    • jspricke openni-sensor-primesense - seems to be where the apt-get versions were built from (not super sure of this)
    • ph4m/SensorKinect - applied a patch 6 months ago that allowed building of avin2's repo with OpenNI SDK v1.5.7.10
    • rbrusu/Sensor - seemed to be a likely candidate, and once we got it building and installed, we were actually able to sporadically get data off of all devices

    In the end, this is what worked

    1. Install drivers and OpenNI packages from apt-get. Gave following versions:
    • libopenni-dev - 1.5.4.0-4+precise1

    • 1.5.4.0-4+precise1 libopenni-nite-dev - 1.3.1.5~precise

    • libopenni-sensor-primesense-dev - 5.1.0.41-2+precise1

    • libopenni-sensor-primesense0 - 5.1.0.41-2+precise1

    • libopenni0 - 1.5.4.0-4+precise1

    1. Then as mentioned on this page, you must change to a different NITE version to get openni_tracker working. So do one of the following:

      • Install NITE v1.5.2.21

      • v1.5.2.21 Install both NITE 1.5.2.23, and OpenNI SDK v1.5.7.10

    2. I'm not 100% positive this step is necessary, but the udev rules that ship with the apt-get packages seem to be leaving out some devices. So we created a new file called /etc/udev/rules.d/primesense-usb.rules. I'll put its contents at the bottom of this answer. They can also be found at this pastebin.

    3. Following cues from this answers.ros.org page and @hfb below, we edited the /etc/openni/GlobalDefaults.ini. We set UsbInterface=0, and that's it. Suddenly both Asus devices, and the Kinect devices started working on 3 separate computers with Fuerte, Groovy and Hydro. All computers were on 12.04, and all devices were on USB 2.0 ports.

    I realize that step 2 has multiple packages that may be hard to come by now that Primesense/OpenNI sites are gone (message me if you need copies of any old OpenNI/NITE/SensorDriver packages). Perhaps we can get structure.io to host some legacy versions as well as OpenNI2.

    Contents of /etc/udev/rules.d/primesense-usb.rules:

    # Make primesense device mount with writing permissions (default is read only for unknown devices)
    SUBSYSTEM=="usb", ATTR{idProduct}=="0200", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0300", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0500", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0600", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0609", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1250", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1260", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1270", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1280", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1290", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="f9db", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    
    #--avin mod--
    # Kinect
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    

    Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


    NEW VERSION:

    image description


    OLD VERSION:

    image description


    Notice the "square" shape of the internals of the left lense on the new version.

    Possible Solutions:

    1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
    2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

    There might be other ways to fix this problem, but I really haven't dug into it much.

    EDIT

    Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

    EDIT 2

    Our lab just bought 2 new Xtions from NewEgg, and we spent an entire day trying to come up with a single set of drivers that would allow collection of data off both 0x600 and 0x601 Xtions and 0x02ae Kinects. Additionally we wanted the openni_tracker to work as well. We tried compiling many different forks of the original Primesense/Sensor repo, each with different versions of NITE and the OpenNI SDK installed. Just for reference, we spent the most time with the following repositories:

    • jspricke openni-sensor-primesense - seems to be where the apt-get versions were built from (not super sure of this)
    • ph4m/SensorKinect - applied a patch 6 months ago that allowed building of avin2's repo with OpenNI SDK v1.5.7.10
    • rbrusu/Sensor - seemed to be a likely candidate, and once we got it building and installed, we were actually able to sporadically get data off of all devices

    In the end, this is what worked

    1. Install drivers and OpenNI packages from apt-get. Gave following versions:

    libopenni-dev - 1.5.4.0-4+precise1 libopenni-nite-dev - 1.3.1.5~precise
    libopenni-sensor-primesense-dev - 5.1.0.41-2+precise1
    libopenni-sensor-primesense0 - 5.1.0.41-2+precise1
    libopenni0 - 1.5.4.0-4+precise1

    1. Then as mentioned on this page, you must change to a different NITE version to get openni_tracker working. So do one of the following:

      Install NITE v1.5.2.21 Install both NITE 1.5.2.23, and OpenNI SDK v1.5.7.10

    2. I'm not 100% positive this step is necessary, but the udev rules that ship with the apt-get packages seem to be leaving out some devices. So we created a new file called /etc/udev/rules.d/primesense-usb.rules. I'll put its contents at the bottom of this answer. They can also be found at this pastebin.

    3. Following cues from this answers.ros.org page and @hfb below, we edited the /etc/openni/GlobalDefaults.ini. We set UsbInterface=0, and that's it. Suddenly both Asus devices, and the Kinect devices started working on 3 separate computers with Fuerte, Groovy and Hydro. All computers were on 12.04, and all devices were on USB 2.0 ports.

    I realize that step 2 has multiple packages that may be hard to come by now that Primesense/OpenNI sites are gone (message me if you need copies of any old OpenNI/NITE/SensorDriver packages). Perhaps we can get structure.io to host some legacy versions as well as OpenNI2.

    Contents of /etc/udev/rules.d/primesense-usb.rules:

    # Make primesense device mount with writing permissions (default is read only for unknown devices)
    SUBSYSTEM=="usb", ATTR{idProduct}=="0200", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0300", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0500", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0600", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0609", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1250", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1260", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1270", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1280", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1290", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="f9db", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    
    #--avin mod--
    # Kinect
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    

    Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


    NEW VERSION:

    image description


    OLD VERSION:

    image description


    Notice the "square" shape of the internals of the left lense on the new version.

    Possible Solutions:

    1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
    2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

    There might be other ways to fix this problem, but I really haven't dug into it much.

    EDIT

    Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

    EDIT 2

    Our lab just bought 2 new Xtions from NewEgg, and we spent an entire day trying to come up with a single set of drivers that would allow collection of data off both 0x600 and 0x601 Xtions and 0x02ae Kinects. Additionally we wanted the openni_tracker to work as well. We tried compiling many different forks of the original Primesense/Sensor repo, each with different versions of NITE and the OpenNI SDK installed. Just for reference, we spent the most time with the following repositories:

    • jspricke openni-sensor-primesense - seems to be where the apt-get versions were built from (not super sure of this)
    • ph4m/SensorKinect - applied a patch 6 months ago that allowed building of avin2's repo with OpenNI SDK v1.5.7.10
    • rbrusu/Sensor - seemed to be a likely candidate, and once we got it building and installed, we were actually able to sporadically get data off of all devices

    In the end, this is what worked

    1. Install drivers and OpenNI packages from apt-get. Gave following versions:

    • libopenni-dev - 1.5.4.0-4+precise1 ~ 1.5.4.0-4+precise1
    • libopenni-nite-dev - 1.3.1.5~precise
      ~ 1.3.1.5~precise
    • libopenni-sensor-primesense-dev - 5.1.0.41-2+precise1
      ~ 5.1.0.41-2+precise1
    • libopenni-sensor-primesense0 - 5.1.0.41-2+precise1
      ~ 5.1.0.41-2+precise1
    • libopenni0 - ~ 1.5.4.0-4+precise1

    1. Then as mentioned on this page, you must change to a different NITE version to get openni_tracker working. So do one of the following:

      • Install NITE v1.5.2.21 v1.5.2.21
      • Install both NITE 1.5.2.23, and OpenNI SDK v1.5.7.10

    2. I'm not 100% positive this step is necessary, but the udev rules that ship with the apt-get packages seem to be leaving out some devices. So we created a new file called /etc/udev/rules.d/primesense-usb.rules. I'll put its contents at the bottom of this answer. They can also be found at this pastebin.

    3. Following cues from this answers.ros.org page and @hfb below, we edited the /etc/openni/GlobalDefaults.ini. We set UsbInterface=0, and that's it. Suddenly both Asus devices, and the Kinect devices started working on 3 separate computers with Fuerte, Groovy and Hydro. All computers were on 12.04, and all devices were on USB 2.0 ports.

    I realize that step 2 has multiple packages that may be hard to come by now that Primesense/OpenNI sites are gone (message me if you need copies of any old OpenNI/NITE/SensorDriver packages). Perhaps we can get structure.io to host some legacy versions as well as OpenNI2.

    Contents of /etc/udev/rules.d/primesense-usb.rules:

    # Make primesense device mount with writing permissions (default is read only for unknown devices)
    SUBSYSTEM=="usb", ATTR{idProduct}=="0200", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0300", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0500", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0600", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0609", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1250", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1260", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1270", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1280", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1290", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="f9db", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    
    #--avin mod--
    # Kinect
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    

    Our lab has two separate Asus Xtion Pro Live devices both ordered from the same NewEgg part number, and both with the same part number listed on the side of the box. However, looking in the lenses of the projector, it is clear that they are two different versions of the device. The old one works in fuerte, groovy, and hydro on several different USB ports on several different computers. The new one gives the same error you get on all ports/computers/ROS versions that we have tried.


    NEW VERSION:

    image description


    OLD VERSION:

    image description


    Notice the "square" shape of the internals of the left lense on the new version.

    Possible Solutions:

    1. Install OpenNI-Compliant Sensor Driver v5.1.6.6 from this site. This post has a discussion about why this helps the situation. This fixes the problem on our computers, but then the Kinects in the lab don't work. The command sudo apt-get install --reinstall libopenni-sensor-primesense0 allows the Kinects to work again.
    2. Use openni2_camera This also allows the device to work. I tried it in hydro and groovy. Unfortunately using OpenNI 2 caused other applications we are working with to not work.

    There might be other ways to fix this problem, but I really haven't dug into it much.

    EDIT

    Just to provide a bit more info, the old sensor has an idProduct value of 0x600 in lsusb and the new one has an idProduct of 0x601.

    EDIT 2

    Our lab just bought 2 new Xtions from NewEgg, and we spent an entire day trying to come up with a single set of drivers that would allow collection of data off both 0x600 and 0x601 Xtions and 0x02ae Kinects. Additionally we wanted the openni_tracker to work as well. We tried compiling many different forks of the original Primesense/Sensor repo, each with different versions of NITE and the OpenNI SDK installed. Just for reference, we spent the most time with the following repositories:

    • jspricke openni-sensor-primesense - seems to be where the apt-get versions were built from (not super sure of this)
    • ph4m/SensorKinect - applied a patch 6 months ago that allowed building of avin2's repo with OpenNI SDK v1.5.7.10
    • rbrusu/Sensor - seemed to be a likely candidate, and once we got it building and installed, we were actually able to sporadically get data off of all devices

    In the end, this is what worked

    1. Install drivers and OpenNI packages from apt-get. Gave following versions:

      • libopenni-dev ~ 1.5.4.0-4+precise1
      • libopenni-nite-dev ~ 1.3.1.5~precise
      • libopenni-sensor-primesense-dev ~ 5.1.0.41-2+precise1
      • libopenni-sensor-primesense0 ~ 5.1.0.41-2+precise1
      • libopenni0 ~ 1.5.4.0-4+precise1
    2. Then as mentioned on this page, you must change to a different NITE version to get openni_tracker working. So do one of the following:

      • Install NITE v1.5.2.21
      • Install both NITE 1.5.2.23, and OpenNI SDK v1.5.7.10
    3. I'm not 100% positive this step is necessary, but the udev rules that ship with the apt-get packages seem to be leaving out some devices. So we created a new file called /etc/udev/rules.d/primesense-usb.rules. I'll put its contents at the bottom of this answer. They can also be found at this pastebin.

    4. Following cues from this answers.ros.org page and @hfb below, we edited the /etc/openni/GlobalDefaults.ini. We set UsbInterface=0, and that's it. Suddenly both Asus devices, and the Kinect devices started working on 3 separate computers with Fuerte, Groovy and Hydro. All computers were on 12.04, and all devices were on USB 2.0 ports.

    I realize that step 2 has multiple packages that may be hard to come by now that Primesense/OpenNI sites are gone (message me if you need copies of any old OpenNI/NITE/SensorDriver packages). Perhaps we can get structure.io to host some legacy versions as well as OpenNI2.

    Contents of /etc/udev/rules.d/primesense-usb.rules:

    # Make primesense device mount with writing permissions (default is read only for unknown devices)
    SUBSYSTEM=="usb", ATTR{idProduct}=="0200", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0300", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0500", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0600", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="0609", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1250", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1260", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1270", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1280", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="1290", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="f9db", ATTR{idVendor}=="1d27", MODE:="0666", OWNER:="root", GROUP:="video"
    
    #--avin mod--
    # Kinect
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio"
    SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video"