Skip to content

Biped leg odometry on ROS 2 Humble — is it supported? How was it done for Atlas? #48

@anemoiiaa

Description

@anemoiiaa

Hi Pronto team 👋,

Context

I’m trying to run Pronto (ROS 2 Humble) for biped leg odometry. My robot has:

  • 6 DoF per leg (two legs), frames: base_link → left_foot_1 / right_foot_1
  • Binary foot contact from load cells (contact ON/OFF only; no continuous GRF/FT)
  • Topics: /imu/data (sensor_msgs/Imu), /joint_states (sensor_msgs/JointState)
    Env: Ubuntu 22.04 + ROS 2 Humble.

What I tried

  • Built the ros2 branch and launched pronto_ros2_node with my Xacro and a config enabling ins, bias_lock, and legodo.
  • Launch succeeds, but legodo immediately fails with a URDF parsing error that looks quadruped-specific:
[URDF_MODEL_PARSER]: The Model parsing is performed corctly
[URDF_parser]: The leg LF has 0 joints, its not correct
[URDF_parser]: The leg LH has 0 joints, its not correct
[URDF_parser]: The leg RF has 0 joints, its not correct
[URDF_parser]: The leg RH has 0 joints, its not correct
[URDF_parser]: The leg parsed are 0, its not correct
[pronto]: NOT VALID MODEL
terminate called after throwing an instance of 'std::logic_error'
what(): not correct xacro file

From a quick look at the node, the current legodo path seems to assume quadruped naming (LF/LH/RF/RH, 12 joints like *_HAA/HFE/KFE) and errors out if those aren’t found.

Questions

  1. Biped support: Is biped leg odometry currently supported in the ROS 2 branch?

    • If yes, could you point me to the expected parameter schema (e.g., how to provide left/right foot links and joint name lists) or an example config?
    • If not, is biped on the roadmap?
  2. Atlas reference: You mentioned that Atlas used Pronto to extract leg odometry.

    • Was that done with ROS 1 (Melodic/Noetic) or with this ROS 2 branch?
    • Which components were used (e.g., INS + leg odometry, stance estimator), and how were contact signals provided (binary contact vs. force thresholds)?
    • Any details on joint naming / URDF expectations and parameter files would be extremely helpful.
  3. Best path forward: If ROS 2/biped isn’t turnkey yet, would you accept a PR to make legodo configurable for bipeds? For example:

    • Add legodo.robot_type: biped|quadruped
    • Parameters for legodo.left/right.foot_link and legodo.left/right.joint_names[]
    • Optional left/right contact topics (Bool) for stance gating
    • Relax hard-coded LF/LH/RF/RH checks and build Pinocchio chains from the provided joint lists

I’m happy to prepare a minimal patch / example YAML and test on hardware. If there’s an existing branch or design you’d prefer me to follow, please let me know.

Active sensors in YAML: ["bias_lock","legodo","ins"] (INS works; failure only when legodo is enabled)

Frames: base_link, left_foot_1, right_foot_1

Contacts: two Bool topics (load-cell derived)

Thanks a lot for your time and for making Pronto available. Any guidance or pointers to prior biped setups would be greatly appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions