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

TF handling frame uncertainty?

asked 2012-03-26 07:54:16 -0600

TF currently do not handles uncertainty. It would be interesting to have a TF-like system with uncertainty handling capacities. Sensors imprecision and moving coordinate frames can end up in an incoherent TF-Tree. This can be problematic specially when the coordinate errors frames are chained. It is planned to develop a future system like this?

A TF system with uncertainty handling capacities would be much more powerful system an even would allow a transformation graph instead of a transformation tree. Bayesian fusion methods would make possible to get the most probable frame given several estimations.

From this discussion ( I see that some tools like the MRPT (Mobile Robot Development Toolkit) provide interesting functionality to propagate uncertainty in a chain of coordinate frames. Look at this

Merging multiple estimation of the state of a frame, the time and some dynamical information of moving frame looks promising.

edit retag flag offensive close merge delete

2 Answers

Sort by » oldest newest most voted

answered 2012-04-23 09:23:11 -0600

TomTUM gravatar image

You can find my first prototype for a tf extension allowing to define uncertainty in tf frames can be found at So far it supports sampling through the tf chain where each frame might or might not have a covariance attached. Additionally one can sample over time (such as when the precise time at which sensor data was captured is not known and one wants to know how this might affect the data). One can also calculate a covariance for a set of transforms, either to get a different look at generated sample sets, or simply to know what to best put into the covariance matrices to represent the uncertainty experienced from empiric data.

I plan to add using the possibility to use sample set to start from (such as when you have data and want to transform it to another frame, including uncertainty on the chain) and also to add another set of interfaces that would use the unscented transformation instead of sampling (might be less accurate but faster).

I stepped away from the idea to directly use child frames as sigma points as covariances should be fine to define the uncertainty locally in a frame. The usage of euler angles might have some mathematical downsides but it seems to be widely used in practice, such as in tolerance calculations in mechanical engineering etc. I am currently looking into some alternatives but most people tell me it's fine like it is for practical purposes.

Would be great to get some feedback, both on the usability of the package and the documentation.

Regarding fusion of data, i guess i will not get to that too soon, so if somebody has something to bring in and share, i would love to help with the integration. As a first step, we might want to address filtering over time.

edit flag offensive delete link more


Nice. A particle-based representation is a good approach, specially for complex pose distribution when the error in covariances is high. In any case I think it would be nice to have a "more efficient" uncertainty pose representation (using the sigma points or a cov matrix).

Pablo Iñigo Blasco gravatar image Pablo Iñigo Blasco  ( 2012-06-26 00:44:04 -0600 )edit

answered 2012-03-29 23:14:47 -0600

TomTUM gravatar image

updated 2012-03-29 23:53:40 -0600

I have some approach but didn't get to implement it yet. The idea is to store the pose uncertainty similar to a Sigma-Point Approximation in tf child-frames of the frame that is affected by uncertainty. One could then still use the normal tf listeners etc, giving him the most probable coordinates, as the main frame would represent the mean of the pose distribution. I would then implement a new class inheriting from the tf listener that when queried checks for the respective 'uncertainty' child frames along the chain connecting the queried frames and handles the uncertainty propagation. The listener would then return the transforms as usual (the mean) and additionally the uncertainty as a covariance matrix or such. I guess we could do this based on the pose_cov_ops package? Leaving out loop closures, it shouldn't be too hard. TF was not meant to handle circular frame connections afaik.

edit flag offensive delete link more


Great idea. This is IHMO a very interesting first approach. It'd maintain backwards compatibility with the implemented software. In any case I still think that a tf unified tfMessage with uncertainty information would be better. I also agree on leaving out the loop clousures as future improvements.

Pablo Iñigo Blasco gravatar image Pablo Iñigo Blasco  ( 2012-03-30 02:03:48 -0600 )edit

Question Tools



Asked: 2012-03-26 07:54:16 -0600

Seen: 1,057 times

Last updated: Apr 23 '12