0
$\begingroup$

Rosanswers logo

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.

<launch> 
<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)"/>

</node>

<!-- 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"/>

</launch>

Then I start a launch file for slam_gmapping:

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

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!! :)


Originally posted by hannjaminbutton on ROS Answers with karma: 65 on 2015-03-31

Post score: 0


Original comments

Comment by pexison on 2015-04-01:
Can you post every command that you use before launching this node (including this one)?

Comment by hannjaminbutton on 2015-04-06:
I just added my launch file for the robot :)

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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"/>

Originally posted by Tom Moore with karma: 13689 on 2015-04-06

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by hannjaminbutton on 2015-04-07:
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.

Comment by Tom Moore on 2015-04-07:
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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.