Fixed frame [map] does not exist when using multiple physical Turtlebots

asked 2020-02-13 13:00:43 -0600

cwillia109 gravatar image

updated 2020-02-14 09:47:37 -0600

I have been trying to get 2 physical Turtlebot's using SLAM simultaneously. Working individually and with namespaces they work fine. However, when trying to get them to work at the same time, I am greeted with "Fixed frame [map] does not exist' errors.

image description

I've been following these instructions in 15.5 except I am using TBOTA and TBOTB for the naming convention. I'm also not using the rviz command listed and am simply launching it and manually adding the items seen in the image.

Here is the tf_tree

Here is the tf_tree

Here is the node graph:

node graph

Is there anything that stands out as far as not being configured correctly?

Both the master PC and Turtlebots are running ROS 1 Kinetic

edit retag flag offensive close merge delete


Here is the tf_tree

Actually, that is a forest (ie: multiple, disconnected trees).

And that is most likely your problem.

gvdhoorn gravatar imagegvdhoorn ( 2020-02-13 13:28:34 -0600 )edit

I have fixed the tf graph, there are only 2 trees this time. The error remains the same and the node graph also remained the same. I can update the images on a bit.

cwillia109 gravatar imagecwillia109 ( 2020-02-13 17:12:58 -0600 )edit

I have fixed the tf graph, there are only 2 trees this time.

that's great, but RViz is most likely going to need only a single one. Otherwise it will not be able to calculate the relative transform between all the relevant frames (or actually: TF will not be able to do, which makes RViz unhappy).

If you want to visualise data coming from multiple robots, you'll need to make sure the relative transform between all robots is known, or it will be impossible to determine where that data should be visualised.

gvdhoorn gravatar imagegvdhoorn ( 2020-02-14 01:59:29 -0600 )edit

In the official instructions, they showed this being the tf_tree:

We also seem to have a similar use case outlined in the ROS FAQ:

We have tried launching all the required nodes without adding the prefixes before, but that had similar problems. Do you know the proper way we should approach this?

Updated graphs are in the original post.

cwillia109 gravatar imagecwillia109 ( 2020-02-14 09:39:14 -0600 )edit

It's perfectly fine to have several trees in a forest, but it will mean that RViz will not be able to visualise all data in your node graph, as that would depend on having a complete, single tree.

Without checking the TB3 documentation, I believe there are two options:

  1. accept you cannot visualise everything at the same time (ie: select one or the other map frame)
  2. add a second instance of the relevant RViz displays and make it listen to the topics for "the other" robot, while making sure to configure them to use the correct tf_prefix as well
gvdhoorn gravatar imagegvdhoorn ( 2020-02-14 11:12:16 -0600 )edit

while making sure to configure them to use the correct tf_prefix as well

Yes, this is the part we are having trouble with. We don't care about it being visualized on the same window, just that it is receiving valid data. These errors prevent that.

Edit: we can launch two instances of Rviz and set the map data to whichever namespace and prefixes we want, but following the instructions, the physical turtlebots don't work properly.

cwillia109 gravatar imagecwillia109 ( 2020-02-14 13:08:21 -0600 )edit