Tune Kamino#
Kamino is a beta Newton solver selected through a task-exposed
newton_kamino preset. This guide isolates and measures a reproducible
problem before changing its solver settings. The generated API documentation
for KaminoPADMMSolverCfg and
KaminoDVISolverCfg remains authoritative for
current fields and defaults.
Prerequisites#
Read Backends and Presets for preset semantics and
Backend and Solver Presets for task integration. Prepare the asset for
Newton with Prepare an Asset for Newton with MJWarp. Confirm that the
task exposes newton_kamino through its --help output or the
environment catalog; do not infer
Kamino support from another Newton preset.
Start from an explicit baseline#
Run one small visual smoke test before training or benchmarking:
uv run python scripts/environments/zero_agent.py --task Isaac-Cartpole-Direct --num_envs 4 --viz newton physics=newton_kamino
Then fix the initial state, seed, action sequence, and reset distribution. For that reproduction, record penetration, slip, energy, a task metric, a convergence diagnostic, and runtime. Change one decision at a time so every candidate can be compared with the same baseline.
Choose PADMM or DVI#
Choose PADMM first for contact-heavy tasks. DVI is a candidate for mechanisms
with relatively few active contacts. If a DVI task needs an explicit
KaminoDynamicsCfg override, disable
preconditioning; otherwise leave the dynamics override unset so Newton selects
the compatible defaults.
Validate reset and state consistency#
Validate root and joint state writes through the Isaac Lab asset APIs before tuning the solver. Kamino’s maximal-coordinate body poses must agree with the reduced joint state after every reset. Investigate body-pose and joint-state disagreement, including custom reset code and reset overlaps, before changing convergence or stabilization settings.
Choose and size collision handling#
Compare Kamino’s internal detector with Newton’s collision pipeline using the
same full reset and contact distribution. use_collision_detector on the
Kamino solver selects the internal path, which
KaminoCollisionDetectorCfg configures; when
it is disabled, NewtonCollisionPipelineCfg
configures Newton’s path. Size the active path only from observed capacity
failures, missing contacts, or warnings, and use those generated APIs for the
exact controls. Collision capacity cannot correct invalid geometry or reset
penetration.
Tune timestep and substeps#
Hold the policy period and fixed reproduction constant. Only after the model
and reset are valid, compare a smaller simulation timestep or more
num_substeps for the same policy
period. Recheck the recorded physical, convergence, task, and runtime metrics;
do not change policy timing merely to hide an unstable simulation step.
Tune convergence and stabilization#
Tune KaminoPADMMCfg iteration and residual
controls only for a reproducible PADMM convergence failure. For DVI, tune
KaminoDVICfg alternating iterations and
tolerance only for the same kind of evidence. Change
KaminoConstraintsCfg stabilization controls
only after collision and reset validation. More solver work cannot repair
inconsistent state, invalid collision geometry, or reset overlap.
Optimize only after validation#
Disable diagnostics before performance measurements. Retain only changes that improve the recorded metrics, and separately measure sparse Jacobian, CUDA graph, collision, substep, and iteration costs when each applies to the selected solver and workload. For the parallel workflow, see Tune MJWarp; it does not replace Kamino-specific validation or tuning.
The diagnose-first order is: validate the baseline, reset state, and collision path; compare timestep and substeps; investigate convergence and stabilization; then optimize measured costs.