Rosanswers logo

Hello, I'm using tf to transform Point Cloud coords which I receive from kinect (image coords) to real world (gazebo coords). First of all, I had to create a publisher for the /world frame, because launching tf tf_monitor no frame was published. I thought this was enough and I believed that, receiving a coordinate frame from the cloud, this was automatically published somewhere in the kinect controller. However, it seems I was wrong, in fact I'm receiving this error:

Frame id /generic_camera_link does not exist! Frames (3): Frame /odom exists with parent /world. Frame /world exists with parent NO_PARENT.

EDIT: I'm using gazebo_ros_openni_kinect controller for Kinect

EDIT 2: Are there other faster methods to obtain the same results?

How can I solve it?

Originally posted by webrot on ROS Answers with karma: 1 on 2012-09-20

Post score: 0

Original comments

Comment by Boris on 2012-09-22:
What do you mean faster? You can either add a call to static_transform_publisher to a .launch file or do the same thing programmatically. Please see tf Tutorials.


1 Answer 1


Rosanswers logo

You can use static_transform_publisher to create a link between /world frame and whatever you need.

To make it easier to understand interconnections between frames use

$ rosrun tf2_visualization frame_viewer.py

It will produce a graph with all available frames and their links.

EDIT #1:

Run above mentioned command in terminal and check if there any disconnected nodes (single or a group) on the graph.

EDIT #2:

Run the following on terminal but substitute <point_cloud_topic> with appropriate topic name:

$ rostopic echo -n 1 <point_cloud_topic>/header/frame_id

Use frame ID from output of this command to create a new tf frame linked to /odom:

$ rosrun tf static_transform_publisher 0 0 0 0 0 0 /odom <point_cloud_frame_id> 100

This command will add your Kinect frame as a child to /odom frame and will publish it every 100ms.

You might need to substitute zeros there with appropriate XYZ displacement and YPR orientation. See static_tranform_publisher documentation for more details (link provided at the beginning of the answer).

If you run frame_viewer.py after that you should see three nodes connected in line from /world to /odom to <point_cloud_frame_id>.

EDIT #3:

Question about transformation of point cloud coordinates to fixed frame was already answered here.

Originally posted by Boris with karma: 3060 on 2012-09-20

This answer was ACCEPTED on the original site

Post score: 4

Original comments

Comment by harsha on 2012-09-21:
Thanks for the clear explanation.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.