registered depth image and RGB image frames
Hi everyone,
I want to generate a XYZRGB point cloud based on the registered depth image and RGB image as described on
depth_image_proc/point_cloud_xyzrgb
For this purpose I wrote a small launch file starting openni_launch and the mentioned nodelet.
<launch>
<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"/>
</node>
</launch>
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
Poseidonius
I used the point_cloud_xyzrgb method for generating PointCloud2 messages based on a Asus Xtion. Is there an easier way?