ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange

# Tf frames of a mobile robot

I am working on mobile robot which has kinect mounted on it with an IMU unit.

I am confused about the frames of various types..Considering the above example please tell me what are the following frames. 1. Map frame 2. Odom frame 3. Base frame.

i know that the transformation between the kinect and base frame would be equal to the vector which should be added to base frame to get kinect frame...

Now i dont understand is what is Odom frame and what is the /tf between kinect and odom frame and how is it generated.. is it IMU readings or the Slam output pose for instance as in Gmapping.

edit retag close merge delete

Sort by ยป oldest newest most voted

You should read this tutorial and then this proposal (REP 105). The proposal lists the differences and meanings of the most important frames (/map, /odom, /base_link).

In your setup the IMU would be responsible for the generation of the /odom -> /base_link transform.

Edit: Damn, too slow again. :D

more

You want REP 105.

more

Ben_s

I have gone through that tutorial already but i am missing something very basic... The /tf between two frames is a constant matrix...right?? For example a kinect is a fixed distance away from the center of the robot so the /tf is fixed... You said that IMU would make /odom -> /base_link transform... should not that be fixed equal to physical displacement from center of robot.. I know i am wrong here but what am i missing..? Please give an example if you can to explain the working of frames according to the above robot..it would be very helpful... What i am really asking is that what is the physical significance of the /odom frame w.r.t kinect frame or base_link_frame..

P.S. sorry had to answer my own question because the comment word limit was being exceeded..

more

1

Please read the support page. Do not create answers for updates, discussion or subsequent questions. You can always edit your question. And no, the tf between two frames is not necessarily a constant matrix. It's the (maybe changing) relation between the frames.

( 2012-12-10 02:27:12 -0500 )edit
2

You could have edited your initial question. Transforms are not static (but can be). You typically use static transforms for your base -> sensor displacements. The odom -> base_link transform is dynamic and accumulates all movements of the robot. (starting point -> current position)

( 2012-12-10 02:29:40 -0500 )edit

So this means in order to convert a current point cloud to Starting frame i should first apply static /tf between kinect and base.And then dynamic /odom tf to the resulting point cloud in previous step to convert it to starting point frame map.And then keep adding points to first cloud to get a map?

( 2012-12-10 06:19:14 -0500 )edit
2

You can get and apply the complete transform in one step. No need to manually apply multiple transforms. If you odometry would be perfect, you could do just what you descibed. But since IMUs are very noisy and experience a lot of drift you need a more complex slam approach like for example rgbdslam.

( 2012-12-10 09:10:05 -0500 )edit

Thanks i think i get it now... so i should use IMU transform for a certain distance till the noise is not much and fuse this with rgbdslam's estimate with the package robot_pose_ekf... i guess that should work..!

( 2012-12-11 03:30:21 -0500 )edit