[ros-users] tf Node paradox & amcl

Sven Olufs olufs at acin.tuwien.ac.at
Sun Jul 25 22:10:09 UTC 2010

Hi there,

I got some questions to tf nodes in ROS. After studding the wiki, tf & 
navigation tutorials I am a bit confused about the proper configuration. 
My story is rather simple: we got a robot (differential drive) and a 
hokuyo laser scanner on top that will be used for localisation and 
navigation. My current configuration of the tf nodes is like the:

/map (Map Server)
/map/odom (Robot wheel encoders)
/map/odom/scan (Hokuyo)

Using rviz I can see the laser scanners tf Node “running around” on the 
map. Now I like to use the amcl module to update the robot pose 
according to the map. As far as I understood (and analyzing the amcl 
code) it seems like the amcl module creates an own node (default map) 
with the pose and also updates the odom tf node.

In the tf tutorial (video No 2) spotted a configuration like this:


I assume that the “base” tf node contains also the pose maintained by 
the amcl module.

Now we have a logic paradox: When I try to use the tf nodes like this, 
the amcl module complains that there is no path from “scan” to “base” 
since “base” is created my the amcl module. Well I can create a fake 
static base node, but then we have two publishers on “base”.

I also do not understand why the amcl updates the “map” tf node by 
default since “odom” is connected to it and both modules uses global 
coordinates (resulting to bogus coordinates for the “scan” node). And 
why is the amcl module updating the “odom” tf node anyway ? Don’t we 
have two publishers on the same tf node topic ? rviz shows me that the 
coordinates of “odom” is jumping when I use the amcl module like this. 
The only way to overcome this is right now to use a separate “pose” tf 
node that is not connected to “odom” tf node.

But then I do I transform the “scan” to “pose” since there is no 
connection within the tree ?

We I can do this


But face then the same bogus coordinates for pose since “odom” is 
subtracted from “pose” and both are absolute

How do I avoid this paradox ? And there is no information about this in 
the tf oder navigation tutorial

Thanks in advance


P.S. The video tutorials are great :)

Sven Olufs, M.Sc
Research Fellow

Gußhausstraße 27-29 | 376. 1040 Vienna, Austria
Tel. +43 (0)1 58801 - 37666
Fax. +43 (0)1 58801 - 37698
olufs at acin.tuwien.ac.at | www.acin.tuwien.ac.at

More information about the ros-users mailing list