registered depth image and RGB image frames

asked 2015-06-11 23:07:07 -0500

Poseidonius gravatar image

updated 2015-06-11 23:18:52 -0500

Hi everyone,

I want to generate a XYZRGB point cloud based on the registered depth image and RGB image as described on


For this purpose I wrote a small launch file starting openni_launch and the mentioned nodelet.

   <include file="$(find openni_launch)/launch/openni.launch" />
   <node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen" />
   <node pkg="nodelet" type="nodelet" name="fusion" args="load depth_image_proc/point_cloud_xyzrgb pcl_manager" output="screen">
    <remap from="rgb/camera_info" to="/camera/rgb/camera_info"/>
    <remap from="rgb/image_rect_color" to="/camera/rgb/image_rect_color"/>
    <remap from="depth_registered/image_rect" to="/camera/depth/image_rect"/>
    <remap from="depth_registered/points" to="/XYZRGBcloud"/>


Of course, both inputs have a different frame

  • camera/rgb/image_rect_color -> Frame: /camera_rgb_optical_frame
  • camera/depth/image_rect -> Frame: /camera_depth_optical_frame

but the tf transformations between are known based on the definition in openni.launch.

I was suprised, when ROS was not able to solve this problem automatically ... I got

Depth image frame id [/camera_depth_optical_frame] doesn't match RGB image frame id [/camera_rgb_optical_frame]

What is the most effective way to overcome this problem, without a manual transformation of on of the messages?

Looking forward to your hints


edit retag flag offensive close merge delete


I used the point_cloud_xyzrgb method for generating PointCloud2 messages based on a Asus Xtion. Is there an easier way?

Poseidonius gravatar image Poseidonius  ( 2015-06-23 10:56:50 -0500 )edit