[Documentation] [TitleIndex] [WordIndex

  Show EOL distros: 

freenect_stack: freenect_camera | freenect_launch | libfreenect

Package Summary

A libfreenect based ROS driver for the Microsoft Kinect. This is a port of the OpenNI driver to use libfreenect.

freenect_stack

Package Summary

A libfreenect based ROS driver for the Microsoft Kinect. This is a port of the OpenNI driver to use libfreenect.

Package Summary

A libfreenect-based ROS driver for the Microsoft Kinect. This is a port of the OpenNI driver that uses libfreenect instead, because on some systems with some devices it works better.

Package Summary

A libfreenect-based ROS driver for the Microsoft Kinect. This is a port of the OpenNI driver that uses libfreenect instead, because on some systems with some devices it works better.

Package Summary

A libfreenect-based ROS driver for the Microsoft Kinect. This is a port of the OpenNI driver that uses libfreenect instead, because on some systems with some devices it works better.

New in Fuerte

Overview

This package provides a ROS interface to the Microsoft Kinect using the libfreenect library from OpenKinect. Other devices using the OpenNI standard are currently not supported. Please see the section on other OpenNI devices for more information:

freenect_launch contains some convenience scripts that can be used to run this driver.

The goal of this libfreenect based driver is to provide a substitute to the OpenNI based ROS driver (openni_camera). Migration is easy and documented below.

Dev Mailing List: ros-freenect-dev@googlegroups.com

ROS API

The ROS API is extremely similar to that of openni_camera. Any differences are described in the API and the migration guide.

freenect_node

libfreenect camera driver.

Published Topics

RGB camera
rgb/camera_info (sensor_msgs/CameraInfo) rgb/image_raw (sensor_msgs/Image)
Depth camera
Published only when ~depth_registration is false (device registration disabled). depth/camera_info (sensor_msgs/CameraInfo) depth/image_raw (sensor_msgs/Image)
Registered depth camera (aligned with RGB camera)
Published directly by driver only when ~depth_registration is true (device registration enabled). depth_registered/camera_info (sensor_msgs/CameraInfo) depth_registered/image_raw (sensor_msgs/Image)
IR camera
Published by the driver only when no subscriptions to the rgb image exist. ir/camera_info (sensor_msgs/CameraInfo) ir/image_raw (sensor_msgs/Image)
IR projector
projector/camera_info (sensor_msgs/CameraInfo)
[new in freenect_camera] Diagnostics
/diagnostics (diagnostic_msgs/DiagnosticArray)

Services

rgb/set_camera_info (sensor_msgs/SetCameraInfo) ir/set_camera_info (sensor_msgs/SetCameraInfo)

Parameters

~device_id (string, default: #1) ~rgb_frame_id (string, default: /openni_rgb_optical_frame) ~depth_frame_id (string, default: /openni_depth_optical_frame) ~rgb_camera_info_url (string, default: file://${ROS_HOME}/camera_info/${NAME}.yaml) ~depth_camera_info_url (string, default: file://${ROS_HOME}/camera_info/${NAME}.yaml) ~time_out (double) ~debug (bool, default: false)
[new in freenect_camera] Diagnostics Parameters
enable_rgb_diagnostics (bool, default: false) enable_ir_diagnostics (bool, default: false) enable_depth_diagnostics (bool, default: false) diagnostics_max_frequency (double, default: 30.0) diagnostics_min_frequency (double, default: 30.0) diagnostics_tolerance (double, default: 0.05) diagnostics_window_time (double, default: 5.0)
Dynamically Reconfigurable Parameters
See the dynamic_reconfigure package for details on dynamically reconfigurable parameters. ~image_mode (int, default: 2) ~depth_mode (int, default: 2) ~depth_registration (bool, default: True) ~data_skip (int, default: 0) ~depth_time_offset (double, default: 0.0) ~image_time_offset (double, default: 0.0) ~depth_ir_offset_x (double, default: 5.0) ~depth_ir_offset_y (double, default: 4.0) ~z_offset_mm (int, default: 0)

freenect_camera/driver nodelet

Nodelet version of the freenect driver. Has the same ROS API as freenect_node above.

Migration guide

This guide assumes that you are using the freenect_launch package to launch the driver. If not, migration is non-trivial but not overly difficult, and can be done by studying the differences between freenect_launch and openni_launch.

Migrating to openni_camera

  1. Replace the freenect launch file in your code with the corresponding openni launch file. ($(find freenect_launch)/launch/freenect.launch -> $(find openni_launch)/launch/openni.launch). No other modifications should be necessary.

  2. openni_launch does not support diagnostics or appending a namespace as of v1.8.3. Modify your system accordingly. Note: A ticket for ns addition to openni_launch has been filed #63 #64

Migrating from openni_camera

  1. Replace the openni launch file in your code with the corresponding freenect launch file. ($(find openni_launch)/launch/openni.launch -> $(find freenect_launch)/launch/freenect.launch).

  2. If you were using the default image_mode or depth_mode parameters in the openni_camera driver, then please skip this step. freenect_camera does not support a number of image/depth modes supported by the openni_camera driver. Please use one of modes mentioned in the parameters above (SXGA equivalent to SXGA_15Hz), or (VGA equivalent to VGA_30Hz). SXGA should be considered unstable.

  3. If you were using the bus/address method of searching for the device, then it is no longer supported. Please consult the parameters above on other methods of selecting devices.

Other OpenNI devices

There are a couple of reasons why other devices using the OpenNI standard (namely the Primesense PSDK, Asus Xtion Pro and Pro Live) are not currently supported:

  1. libfreenect hardcodes information about the Kinect in a way that makes it difficult to gain access to different types of OpenNI devices using the same code. It might be easy to patch libfreenect to use these other devices, generate separate libraries for each device, and make multiple binaries of the driver linking against each library separately.

  2. Information about each device will have to be reverse engineered from the OpenNI driver to modify libfreenect. A port for the Asus Xtion Pro is available here (thanks for pointing to this Ivan!). A read through the differences reveal that the changes are not big, but require knowledge about the commands that need to be passed to each device using libusb. It is currently not clear how easy this task is.


2019-09-21 12:40