1. odom is an inertial frame defined in [REP 105](http://www.ros.org/reps/rep-0105.html) It can be initialized anywhere in any orientation, but for ease of use usually it's x forward y left z up under the robot's initial position.
2. Nominally the base_footprint is the projection of the robot's shape into a 2D form on the ground. Usually this is approximated as a set of primitives (sometimes one) in the ground plane directly under the base_link in the XY plane.
3. You can/should use any/all sensors to compute the best odometric updates for your robot. They will provide the transform from odom -> base_link.
4. When you consider a robot which is tall but might change to a recumbent position the footprint extend to make sure to remain a bounding box if using the footprint for navigation. Note the coordinate frame will not really update as it will still be the projection of the base_link (recommended attached to the waist) into the XY plane.
↧