Skip to content

[Kamino][P-ADMM] Bounded implicit-PD effort constraints make DR Legs diverge to NaN #4173

Description

@AntoineRichard

Summary

Kamino P-ADMM intermittently produces explosive velocities and eventually a fully non-finite articulation state for Isaac Lab's DR Legs robot.

The regression was bisected to #3990:

#3990 introduced bounded solver rows for implicit-PD joint effort limits. Disabling only the effort limit on the driven DR Legs joints eliminates the instability, while Kamino DVI remains stable with the original effort limit.

Related Isaac Lab issue: isaac-sim/IsaacLab#7625

Environment

  • Isaac Lab: origin/develop at 7127f50cca
  • Newton: 1.6.0rc1
  • Warp: 1.17.0
  • GPU: NVIDIA GeForce RTX 5090
  • Task: IsaacContrib-DrLegs-Walk
  • Environments per trial: 2
  • Simulation steps per trial: 20
  • Simulation timestep: 1 / 150 s
  • Decimation: 3

Relevant actuator configuration:

ImplicitActuatorCfg(
    joint_names_expr=DR_LEGS_ACTUATED_JOINTS,
    stiffness=5.0,
    damping=0.2,
    joint_effort_limit=3.1,
    joint_velocity_limit=100.0,
)

Relevant solver configuration:

KaminoPADMMSolverCfg(
    use_fk_solver=True,
    max_contacts_per_world=32,
    sparse_jacobian=True,
    dynamics_solver_cfg=KaminoPADMMCfg(
        primal_tolerance=1.0e-5,
        dual_tolerance=1.0e-5,
        compl_tolerance=1.0e-5,
        rho_0=0.02,
    ),
)

CUDA graphs are enabled in the normal task preset.

Reproduction method

For each seed:

  1. Create a fresh IsaacContrib-DrLegs-Walk environment with two worlds.
  2. Set both the environment seed and batched action-space seed.
  3. Reset the environment.
  4. Execute 20 actions sampled from the task's standard action space.
  5. Check root pose/velocity, joint position/velocity, and policy observations after every step.
  6. Record the first non-finite step and peak finite velocities.

The precise failure seed varies because the GPU solve is not fully deterministic, but the regression is frequent.

Results

Configuration Non-finite trials
Commit immediately before #3990, P-ADMM 0/13
#3990 applied, P-ADMM 6/13
Newton 1.6.0rc1, P-ADMM 6/13
Newton current main, P-ADMM 6/8
Newton 1.6.0rc1, Kamino DVI 0/13
P-ADMM with driven effort limit set to 1e9 0/13
P-ADMM with only passive effort limit set to 1e9 4/13
HoldPose with the original P-ADMM configuration 8/13

With the driven-joint effort limit effectively disabled, peak joint velocities stayed around 15-25 rad/s. With the original 3.1 N·m limit, velocities frequently reached thousands or millions of rad/s before the articulation became NaN.

The HoldPose result shows that this is not specific to Walk's contact sensor, velocity command, or gait rewards.

Additional ablations

The following did not resolve the problem:

  • disabling CUDA graphs
  • using a dense Jacobian
  • disabling the FK solver
  • disabling P-ADMM acceleration
  • disabling warm-starting
  • increasing the iteration count to 200
  • increasing rho_0
  • using two simulation substeps

Increasing rho_0 or the iteration count reduced the failure frequency in some runs but did not make the solver robust.

Observed contact counts were generally between 5 and 18, versus a total allocation of 64, so contact-capacity overflow does not appear involved.

Suspected failing path

The evidence points specifically to the bounded implicit-PD effort rows added by #3990 in the P-ADMM path:

For the DR Legs parameters and h = 1/150 s, the effort row uses approximately:

m_a = h * k_d + h² * k_p ≈ 0.00156
1 / m_a ≈ 642.9
h * tau_max ≈ 0.0207 N·m·s

This may help narrow the problem to P-ADMM conditioning, projection, or multiplier scaling for low-effort implicit-PD rows. The exact defect within that path has not yet been identified.

Expected behavior

P-ADMM should keep the simulation finite and enforce the configured 3.1 N·m driven-joint effort limit under random position targets.

Actual behavior

The constrained solve develops extreme joint and root velocities, then produces NaNs across the complete robot state.

Suggested regression coverage

  • Add a P-ADMM regression using the DR Legs model and its original implicit-PD gains and effort limits.
  • Run multiple seeded random-target sequences.
  • Assert that root and joint state remain finite.
  • Assert that reported actuator effort respects the configured limit.
  • Exercise both sparse and dense P-ADMM.
  • Keep a corresponding DVI run as a reference.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kaminoIssues that come up while integrating/implementing the Kamino solver

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions