ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org

# REP 120: not clear about odom and base_footprint

Hi,

I have question, on odom and base_footprint, especially when the robot is falling down or 4-legged walking in REP 120. I assume that humanoid robot did not know about the current waist position, but can estimate orientation from IMU sensors.

1. does odom correspond to the sensor based orientation and world reference based position of the waist?
2. does base_footprint respect the sensor based orientation and model based calculation of the height of the waist?

if it is ok, the question is

1. how do you estimate the position of the odom, from the walking controllers? does that include any sensor data?
2. does base_footprint does not reflect any sensor data? what's happens if the robot falling down or 4-legged walking mode?
edit retag close merge delete

Sort by » oldest newest most voted

Dear Okasa-san,

as for mobile robots, every frames on top of base_link are actively relying on the localization / SLAM node and therefore the result you will obtain will depend in these particular cases will depend on how it behaves.

In my case, I use robot_pose_ekf (on HRP2) so that I both combine the integration of the command and the IMU data. The odom is published by this node like on PR2.

For base_footprint, I use the point defined as the center of the robot soles center. If you walk on non-flat floor, of course you have to project this point at the right height depending on your perception. This is not an issue on flat-floor although. This definition works fine for any number of legs.

If the robot is falling then of course the "footprint" is not really a footprint anymore but it is still defined (mathematically speaking). As for the odom frame, by changing the covariance matrices appropriately you can only integrate the IMU data when you fall to get an estimate of your position.

P.S. FYI the robot_pose_ekf node input is an odometry message sent by the robot controller (hrpsys in my case).

more

Thanks, so what is the tf structure ? map -> odom -> robot_pose_ekl -> base_link -> base_footprint?

( 2013-10-28 13:33:55 -0500 )edit

Another question is that , the orientation of the the robot is not precisely equal to (0 0 1), as there are elastic material on the sole and ankle, also mechanical backlash, in that case, does 'base_footprint' orientation is (0 0 1)? or it should correspond to real orientation of the robot?

( 2013-10-28 13:38:55 -0500 )edit

The frame hiearchy is here: http://www.ros.org/reps/rep-0120.html#id17 and http://www.ros.org/reps/rep-0105.html#relationship-between-frames I.e. map -> odom -> base_link -> base_footprint You would observe a different behavior on PR2 but PR2 does not follow REP 105 unfornately.

( 2013-10-28 21:16:17 -0500 )edit

The base_footprint rotational part is undefined in the current state of the REP. IMHO this is not the best frame to express contacts so I would keep the rotational part to identity if I were you. That does not prevent you to add additional tf frames to express contact points position.

( 2013-10-28 21:19:55 -0500 )edit
1. odom is an inertial frame defined in REP 105 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.

more