[ros-users] tf Node paradox & amcl

Forside
Vedhæftede filer:
Indlæg som e-mail
+ (text/plain)
Slet denne besked
Besvar denne besked
Skribent: Sven Olufs
Dato:  
Til: ros-users
Emne: [ros-users] tf Node paradox & amcl
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:

/map
/odom
/base
/base/laser

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

/map
/map/odom
/map/odom/pose
/map/odom/scan

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

Sven

P.S. The video tutorials are great :)

--
Sven Olufs, M.Sc
Research Fellow

ACIN | AUTOMATION & CONTROL INSTITUTE
INSTITUT FÜR AUTOMATISIERUNGS- & REGELUNGSTECHNIK
VIENNA UNIVERSITY OF TECHNOLOGY
Gußhausstraße 27-29 | 376. 1040 Vienna, Austria
Tel. +43 (0)1 58801 - 37666
Fax. +43 (0)1 58801 - 37698
| www.acin.tuwien.ac.at