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

What is the difference between iai_kinect2 and libfreenect2?

asked 2017-01-20 04:57:18 -0500

pallavbakshi gravatar image

updated 2017-01-20 04:58:45 -0500


I bought Kinect V2 (MISTAKE) and have to use it for gmapping because my university won't grant me more funds. I have already installed libfreenect2. Do I also need to install iai_kinect2 . In case you have a better alternative for me to make map of the environment for mapping than using gmapping then kindly post it.

So my question is 1. Difference between both of them? 2. And what is openNI? Can I use it as an alternative to iai_kinect2 since I am unable to install it properly?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2017-01-20 06:16:06 -0500

gvdhoorn gravatar image

iai_kinect2 is a collection of ROS nodes that build on-top of libfreenect2 to make the data (ie: point clouds) that a Kinect2 produces available through a set of publishers. In other words: it is a ROS driver for Kinect2. But it needs libfreenect2 to be able to communicate with the Kinect2 hardware.

For what OpenNI is, see wikipedia/OpenNI. In the context of ROS it's basically an alternative to libfreenect.

I have already installed libfreenect2. Do I also need to install iai_kinect2.

If you want to have point clouds, RGB and IR images from your Kinect2 published as ROS msgs, then yes: libfreenect2 is not enough. There may be alternative drivers, but I can't suggest one (iai_kinect2 has always worked well for me).

[..] iai_kinect2 [..] I am unable to install [..] properly?

If you are having trouble installing it, you could either post a question on this board, or (possibly better) open an issue over at code-iai/iai_kinect2/issues.

edit flag offensive delete link more


Hi, thanks for the answer. I have already opened an issue but haven't got any solution yet. I am reinstalling ubuntu 14.04 as a last resort.

pallavbakshi gravatar image pallavbakshi  ( 2017-01-21 10:27:20 -0500 )edit

Can you shed some more light on libfreenect2 as well? I have already looked at their page but couldn't get much about the function of libfreenect2.

pallavbakshi gravatar image pallavbakshi  ( 2017-01-21 10:30:04 -0500 )edit

libfreenect2 is essentially what you would call a driver on Windows: it's a software library that on the one end 'speaks' a USB protocol that allows it to communicate with a Kinect2, and on the other end offers what information it receives (clouds, imgs) to the Operating System.

gvdhoorn gravatar image gvdhoorn  ( 2017-01-21 10:50:31 -0500 )edit

The answer by @clungzta also covers this.

gvdhoorn gravatar image gvdhoorn  ( 2017-01-21 10:50:53 -0500 )edit

answered 2017-01-20 06:49:22 -0500

clungzta gravatar image

libfreenect2 is an open source driver for the Kinect2; a C++ api which provides access to the color and depth image streams from the device.

iai_kinect2 is a collection of ROS packages which depend on the libfreenect2 library. It includes the ROS driver for the device called "kinect2_bridge".kinect2_bridge grabs the images from libfreenect2 api and publishes them as ROS topics (color image, depthimage and pointcloud).

iai_kinect2 also provides some other packages for calibration and registration, in my own experience the device seemed to work fine with the original parameters and calibration was not required.

ethz-asl have provided a fork of iai-kinect2 with binary builds, this will most likely ease the installation process. (note: I haven't tested the binary install)

AFAIK: OpenNI is an alternate driver which supports other sensors like Kinect V1, Xtion, Carmine. Looking online: it seems to also have some minimal support for Kinect2, but no OpenNI based Kinect2 ROS driver.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2017-01-20 04:57:18 -0500

Seen: 2,641 times

Last updated: Jan 20 '17