depth_image_proc/point_cloud_xyzrgb time synchronization
Hi ROS community.
I would like to apply the depth_image_proc/point_cloud_xyzrgb nodelet to overlay some rgb data on a registered depth image. Status is as follows:
- Registered depth image (/depth_registered/image_rect ) is published correctly
- camera info (/gas_camera/camera_info ) is published correclty
rectified rgb image (/gas_camera/image_rect ) is published correcty
the nodelet ...point_cloud_xyzrgb topic is created, in rviz I can subscribe and the status is all green, however no data is published on it.
My question is obviously why is no data published ;-)
What I have tried so far:
time sync: The input topics aren't perfectly time syncronized, as seen in the following screenshot.
- Do the topics need to be perfectly time synced? Or is there a parameter to set something like "allow approximate_time"?
- I tried to appy an approximate time filter, which is called frequently. However as far as I understand, all it does now (the way I implemented it), is filtering out some messages. Would I need to overwrite the header timestamps manually and republish the topics in my callback?
(time_syncronizer here as image, as the code won't show up nicely for some reason):
rgb_image: Another idea I had, was that the used topic for the rgb_image is actually just a uint8 img (grayscale). However, I tried using an rgb image instead which did not change anything.
And just for completeness, the relevant parts from the launch file:
<node pkg="nodelet" type="nodelet" name="nodelet_manager" args="manager" />
<!-- time sync test -->
<node pkg="gas_cam" type="time_synchronizer.py" name="time_sync_node" respawn="true">
<remap from="image" to="/depth_registered/image_rect" />
<remap from="camera_info" to="/$(arg namespace_ir)/camera_info" />
</node>
<!-- stereo proc for xyzrgb pointcloud -->
<node pkg="nodelet" type="nodelet" name="nodelet_point_cloud_xyzrgb" args="load depth_image_proc/point_cloud_xyz nodelet_manager nodelet_manager">
<remap from="rgb/camera_info" to="/$(arg namespace_ir)/camera_info"/>
<remap from="rgb/image_rect_color" to="/$(arg namespace_ir)/image_rect" />
<!-- remap from="rgb/image_rect_color" to="/$(arg namespace_ir)/ir_false_color" /-->
<remap from="depth_registered/image_rect" to="/depth_registered/image_rect" />
<param name="queue_size" value="15" />
</node>
Update: I tried to overwrite the timestamp of the "out of time message" /depth/registered/image_rect , but the behaviour stayed the same.
If I remembered correctly, the CameraInfo of the depth images is also required by the nodelet.
@JunTuck -- thanks for your help! If this is true, the docs should be updated. Since I did not yet adapt the namespace of the registered depth image, the nodelet would have subscribed to /depth_registered/camera_info/ anyways. And I checked, this topic is published correctly, so I think this seems not to be the problem (even though you could be correct ;-).