>> 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.