Having a few remaining difficulties with this approach. I think I must be overlooking part of it. I'm successfully broadcasting a transform between base_link and odom (confirmed with tf_echo), and these are my two setup files:
This page was extremely helpful, thank you for pointing it out! I didn't realise until then that it was the responsibility of my odometry node to also be broadcasting the transform.
There are no special values of frame ids. You can use any frame_id for anything as long as your system is consistent. However, we do try to use standard frame_ids such that nodes can have useful default values. In general you will want a frame attached the the world/inertial frame if you want to persist any observed obstacles or landmarks.
Okay, so just to clarify my understanding, under this convention, the "base_link" moves with the robot, and the "odom" frame is approximately equal to the map frame, which is fixed. Is this so?
The way I've been handling my multi-robot requirement has been to use ROS_NAMESPACE when launching my simulators, and then use topic names expressed relatively. So far, this has been working great, but what will be the impact of it when it comes to tf? Should each robot have its own odom, or do they share it? Does tf honour the namespace, or it entirely absolute? It looks in the turtle demo like the name of the robot is manually included in the transform broadcast (from "world" to turtlename), which is then given as absolute.
Also depending on your application I would expect that you will want to maintain both of what we call a map frame and odom frame. The difference between these frames is that the odom frame is locally consistent but can drift away from global accuracy. It is used for short term planning/control. But long term planning is done in the map frame and our localization node estimates the amount of drift accumulated between the odom and map frame.
If I want (need?) to do this, do I need to run map_server? Should I also be broadcasting a map -> baselink transform from my odometry node, or does that come from elsewhere? If my positioning data is coming from GPS or perhaps an indoor camera-based localization scheme, is that still "odometry", or is odometry only for data based on encoders and other less-certain methods?
Thanks again for your assistance.