Skip to content

Whole-body dynamics in gait optimization #71

Open
@RobertoRoos

Description

@RobertoRoos

WBD
I wanted to expand the optimizer to include whole-body dynamics, instead of only centroidal dynamics. The advantages are clear: the output is directly in joint torque which can be directly applied to the real robot, optimization can be done on the robot as well instead of the conceptual base and EE motion and things like physical constraints can be included more accurately.
This boils down to including generalized joint coordinates and torques in the NLP.

First concept
I extended some of the Towr classes such tat I can include a MuJoCo model for dynamics, kinematics and the related jacobians and created a new constraint for WBD. So far I have focused on the Hopper (monoped) since then I can easily include the end-effector position in generalized coordinates.
I got it (sort of) working:
hopper_towr

NLP
Variables:

  • End-effector position (3) [Still phase based]
  • End-effector reaction forces (3) [Still phase based]
  • Joint positions (3) [Constant polynomial]
  • Joint torques (2) [Constant polynomial]

Constraints:

  • Terrain (keep end-effector on the floor)
  • Swing (keep swing EE positions in a straight line, doesn't do much for my 2D problem)
  • Force (limit reaction forces and keep them zero during swing)
  • DynamicTorque (keep WBD violation zero)

Problems
I am finding it very difficult to get the optimizer to converge to a solution. The above result is combination of polynomial durations and constraint dts that just happens to work. Moreover, adding a cost to the joint torques makes that no solution can be found.
I am curious if more people have working on this? Have there been similar experiences? Are there IPOPT solver settings that could be important?

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