Uncertainty in TF

93 views
Skip to first unread message

Tom Ruehr

unread,
May 30, 2012, 10:31:22 AM5/30/12
to ROS tf Special Interest Group
As you might know, i put some ad hoc implementation for uncertainty in
tf up on http://www.ros.org/wiki/uncertain_tf
I would like to discuss the design issues that I came along here.

General ideas
I would suggest to keep uncertainty out of the standard tf. This is
something not too many people will want to use, so it should be kept
separate.
We should have different interfaces for looking up data not
considering uncertainty, considering covariances and considering
temporal uncertainty as well as the combination spatial+temporal
uncertainty.
Implementation wise, I think inheriting from tf::TransformListener and
tf::TransformBroadcaster would be a neat solution, as all people
wanting to use uncertainty in tf will want to use it along with tf.
There are some issues with tf 1 that make inheriting a bit painful,
such as too restrictive/conservative use of private instead of
protected etc., I will have to check tf2 for similar issues.

Format
I use 6x6 covariance matrices, interpreting them as xyzrpy covariance.
Covariance over rpy is probably the canonical choice to represent
uncertainty in rotation, but seems to be widely used in engineering.

Semantics
Do covariance matrices change a lot typically, or do they behave more
similar to static transforms? Should we typically throw an
extrapolation error when asked for covariances that are more recent
than what we have data for, or rather just use the latest data we
have? (In my implementation, i do the latter)

Extrapolation
Do we want to extrapolate covariance matrices?

Uncertainty in Time
My implementation is wrong in requiring the uncertainty in time to be
set as part of the query - such as saying, give me 100 samples of this
to that frame +-0.003s. Uncertainty in time could as well be stored in
the tf tree, similar to the covariance matrices. This would however
make lookup hard, as we would have to consider that different stored
frames along with their distribution in time could cover the same
query time point. It could be hard to allow usage of different types
of distribution on the time axis like this. I guess a easy but not so
inaccurate implementation would store the time uncertainty in the tf
data, but then we would only look for the uncertainty stored at the
time that is the mean we are looking up and then act accordingly.

Filtering
Do we want to have simple filtering means such as EKF or SPKF directly
in tf? This would cross the border from data storage and lookup to
creationg of data, which is why I see this rather as an application.
We have addTransformsChangedListener for users that want to do things
whenever the tree changes, such as kalman filters, is this enough? We
could have an example kalman filter packaged with tf, using listener
and broadcaster and maybe also providing covariance data, like this
people could pick up work easily.
[I would also vouch for an intergration with Juergen Sturms
articulation models. It's quite a big package, so let's keep it
outside tf. It can basically fit and extrapolate linear, rotational
and gaussian process models, so this could be helpful for many
applications where some extrapolation is needed.]

-tom

Don Venable

unread,
Sep 5, 2012, 8:38:26 AM9/5/12
to ros-s...@googlegroups.com, thomas...@googlemail.com
Tom,

I've been following your work with uncertain_tf and I'm really liking the approach. I don't necessarily agree that uncertainty is something only a "few" users would be interested in however!

-DV 
Reply all
Reply to author
Forward
0 new messages