Ask Your Question

slam_gmapping odometry tf already published

asked 2015-03-31 06:27:51 -0500

hannjaminbutton gravatar image

updated 2015-04-06 13:59:54 -0500

Hey, I'm running my robot with a laser scanner and wheel odometry and the navigation stack. I already built a map from logged data and now I want to build it online. So I start my launch file for my robot (ibr_node) and the laser scanner. My ibr_node sends a transform from the map frame to the odom_base_link_frame.

<arg name="laser_x_offset_arg" default="0.72"/>
<param name="/use_sim_time" value="false"/>

<node pkg="mcm_ros_node" type="ibr_node" name="ibr_node" output="screen">
<param name="min_distance_control_on" value="false"/>
<param name="min_distance" value="1.0"/>

<param name="dev_ti_left" value="/dev/ti_left4"/>
<param name="dev_ti_right" value="/dev/ti_right4"/>

<param name="sigma_x_2" value="100.0"/>
<param name="sigma_y_2" value="100.0"/>
<param name="sigma_p_2" value="50.0"/>  
<param name="sigma_xy" value="10.0"/>
<param name="sigma_xp" value="0.0"/>
<param name="sigma_yp" value="0.0"/>
<param name="laser_x_offset" value="$(arg laser_x_offset_arg)"/>


<!-- Laser Scanner -->
<node pkg="lms1xx" type="LMS1xx_node" name="LMS1xx_node"/>

 <!-- static transforms -->
<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0.72 0 0 0 0 0 /base_link /laser 100"/>
<node pkg="tf" type="static_transform_publisher" name="odom_base_to_base_broadcaster" args="0 0 0 0 0 0 /odom_base_link /base_link 100"/>


Then I start a launch file for slam_gmapping:

<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
    odom_frame: odom_base_link
    base_frame: base_link

With this transform tree:

map -> odom_base_link -> base_link -> laser

The transform from odom_base_link to base link and the transform from base_link to laser are static.

roswtf shows this Error:

ERROR TF multiple authority contention:
* node [/slam_gmapping] publishing transform [odom_base_link] with parent [map] already published by node [/ibr_node]
* node [/ibr_node] publishing transform [odom_base_link] with parent [map] already published by node [/slam_gmapping]

How can I solve this? When I just dont send the odometry transform in my ibr_node the map frame is missing in my transform tree.

Thanks in advance!! :)

edit retag flag offensive close merge delete


Can you post every command that you use before launching this node (including this one)?

pexison gravatar image pexison  ( 2015-04-01 17:34:21 -0500 )edit

I just added my launch file for the robot :)

hannjaminbutton gravatar image hannjaminbutton  ( 2015-04-06 14:02:04 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2015-04-06 16:04:50 -0500

Tom Moore gravatar image

You have two nodes publishing the same transform. slam_gmapping is producing your odom_base_link->base_link transform, and the static_transform_publisher is providing the same transform. Get rid of this line:

<node pkg="tf" type="static_transform_publisher" name="odom_base_to_base_broadcaster" args="0 0 0 0 0 0 /odom_base_link /base_link 100"/>
edit flag offensive delete link more


When I get rid of this line and start my launch files, I have two unconnected tf trees (map -> odom_base_link and base_link -> laser) and roswtf still shows the same error.

hannjaminbutton gravatar image hannjaminbutton  ( 2015-04-07 00:53:57 -0500 )edit

Wait, I didn't read your errors thoroughly enough. What is ibr_node? That is also publishing the same transform. Only one node can publish a transform with a given child frame_id.

Tom Moore gravatar image Tom Moore  ( 2015-04-07 08:03:22 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2015-03-31 06:27:51 -0500

Seen: 713 times

Last updated: Apr 06 '15