[ros-users] tf with multiple localisers

Wim Meeussen meeussen at willowgarage.com
Wed Oct 27 17:01:09 UTC 2010


>> map_GPS->base_link
>> map_INS->base_link
>> map_SLAM->base_link
>> odometry->base_link
[...]
>> We want to be able to easily switch between how the world looks in each of
>> these frames by simply selecting any of the map_* frames as the fixed
>> frame
>> in rviz and in other nodes.
>>
>> It seems that tf doesn't let you have a set-up like this with multiple
>> roots. Any suggestions on how we should re-cast our problem to fit into
>> the
>> tf framework?
>>
>
> The directionality of a tf edge doesn't actually matter for most things.  So
> one solution would be to just have all those map frames be children of
> base_link, or of odometry (which would allow the transforms to be published
> less often assuming odometry drifts fairly slowly).
> - Bhaskara

Inverting the parent-child relationship of your frames will work for a
mobile base, but this will make impossible to reuse your code on many
other robots.  Most robots have multiple tf frames that branch out
from the base_link, going to different sensors, arms, etc.

I'd suggest to publish all of your transforms (map_GPS->base_link,
map_INS->base_link, map_SLAM->base_link, etc) on normal ROS topics
instead of on tf. Then, have one node receive all these transforms
from the topics, do the arbitration/merging, and publish the final
result to tf. In that way your tf tree can still look like map -->
odom_combined --> base_footprint, and your code will be much more
reusable and extendable.

Wim


-- 
--
Wim Meeussen
Willow Garage Inc.
<http://www.willowgarage.com)



More information about the ros-users mailing list