trouble with REP-120 and base_footprint for humanoids
REP-120 (Coordinate Frames for Humanoid Robots) suggests that base_footprint should be a child of base_link, and base_link a child of odom, etc. This seems counter-intuitive to me and I am having difficulty making this work in practice as well. It seems more practical to have odom => base_footprint => base_link. So base_footprint travels over odometry, and base_link, i.e. torso, moves relative to the footprint. Put a simpler way, my feet cause odemetry not my torso. Also, most inverted pendulum models would match this well.
I've already gotten my non-compliant mode to work including with IMU updating robot orientation around the base_footprint as rotation point. I just tried to rework what I have to make it REP-120 compliant but the TF process seems so convoluted now.
In my non-complaint code I would only need to update the tf_static transform of base_footprint to base_link using my balancing algo. I do this using Orocos API and computing IK of legs in contact, then compute Center of Pressure, etc, then also adjust base_link above footprint by length of legs - I'm simplifying but roughly speaking CoP and base_footprint are closely related.
To be REP-120 compliant, it's a similar process but now my balancing algo must update both odom to base_link and base_link to footprint transforms, which interferes with the IMU EKF filter node (using off-the-shelf robot_localization/se_node) since it wants to update base_link and odom frames as well but it doesnt know anything about humanoid feet, CoP or balancing.
I know REP-120 says I can deviate but should only for good reason. I would like to be fully REP-120 compliant but not if it means the frame hierarchy is harder for us humans to wrap our head around. Or is it just me? lol
It's not a humanoid, but it is a legged robot, so perhaps the robots of ANYbotics have similar goals/issues/difficulties.
There is a ROSCon16 presentation about their software: video (slides). As a guess, the free_gait package may be one of the more interesting ones. It's mentioned on slide 13 (page 17).
Perhaps you can see how they deal with odometry, base footprints (if they have one) and transforms.
Thanks @gvdhoorn, those were some interesting slides and video. Unfortunately didnt help answer my REP-120 issue. I did find their ANYmal urdf but they dont include world, odom or base_footprint in there and otherwise dont seem to follow REP-120. I looked through the github project for free_gait and didnt find anything either. Still, I enjoyed the presentation. :) I've read a number of papers from ETH Zurich and about ANYmal, great work!
So how does this work then?
which would make sense, as it's not a humanoid.