ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

more than one odom->base_link transform

asked 2014-11-23 10:10:24 -0500

Bhargav gravatar image

updated 2014-11-23 10:43:45 -0500

Hello,

I am using rtabmap rgbd_odometry node and data from IMU feeded to robot_pose_ekf node. This gives me stable odometry. This stable odometry data publishes a odom->base_link transform. Apart from this the rgbd_odometry node and robot_pose_ekf node also publishes the transform between odom and baselink. To avoid any conflict i remapped the frame id of rgbd_odometry and robot_pose_ekf as odom1 and odom_combined. But now when i run

rosrun tf view_frames

The results are varying everytime i run the command. Sometimes it shows that odom-base_link transform is published by odom and at other point of time it shows that the same transform is published by rgbd_odometry. How can i select odom to be publishing this transform always ?

roswtf

gives me this.

ERROR TF re-parenting contention:
 * reparenting of [base_link] to [odom_combined] by [/robot_pose_ekf]
 * reparenting of [base_link] to [odom_useless] by [/rgbd_odometry]
 * reparenting of [base_link] to [odom] by [/odom]

ERROR TF multiple authority contention:
 * node [/robot_pose_ekf] publishing transform [base_link] with parent [odom_combined] already published by node [/odom]
 * node [/rgbd_odometry] publishing transform [base_link] with parent [odom_useless] already published by node [/robot_pose_ekf]
 * node [/odom] publishing transform [base_link] with parent [odom] already published by node [/rgbd_odometry]
 * node [/rgbd_odometry] publishing transform [base_link] with parent [odom_useless] already published by node [/odom]
 * node [/odom] publishing transform [base_link] with parent [odom] already published by node [/robot_pose_ekf]
 * node [/robot_pose_ekf] publishing transform [base_link] with parent [odom_combined] already published by node [/rgbd_odometry]

Please help me with this. I have been stuck at the same point since last 4 days.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2014-11-23 10:56:13 -0500

Tom Moore gravatar image

tf represents coordinate frames and the transforms between them as a tree. This means each frame_id can only have one parent (but can have many children). You currently have three separate nodes publishing a transform from different frames into base_link: robot_pose_ekf, rgbd_odometry, and odom.

In other words, renaming only the odom frame coming from robot_pose_ekf isn't enough. If you had instead/also renamed the child_frame_id (base_link), it would have worked. Alternatively and preferably, the rgbd_odometry node may have a parameter that stops it from publishing its transform. Finally, you appear to have a third node publishing that transform (the odom node).

edit flag offensive delete link more

Comments

Thank you Tom! I did the same with robot_pose_ekf. There was a parameter called publish_tf. I set it false, but somehow it was still publishing. I don't know if there is one for rgbd_odometry. It wasn't listed on their page. Is there a way that we can see all the parameters of the give node?

Bhargav gravatar image Bhargav  ( 2014-11-23 11:19:29 -0500 )edit

Since robot_pose_ekf is going to have the best overall pose estimate in your system, you want it to publish that transform, and not the other nodes. Try rosparam list from a console to see what parameters are set. Other than the namespaces, I don't know if you can see who set what parameter.

Tom Moore gravatar image Tom Moore  ( 2014-11-23 11:24:02 -0500 )edit

Thank you! But rosparam list only shows the parameters which i have already set in launch file.

Bhargav gravatar image Bhargav  ( 2014-11-23 11:28:14 -0500 )edit

Perhaps you should post your launch file.

Tom Moore gravatar image Tom Moore  ( 2014-11-23 16:18:14 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2014-11-23 10:10:24 -0500

Seen: 3,231 times

Last updated: Nov 23 '14