Skip to main content

Compsognathus Longipes (Anatomical)

The anatomical proxy has a 1.0 kg assumed mass, 14 actuators, a long articulated tail, and 55 state observations (the last three are the Phase C body-relative command segment, zero under command_mode = "none"). Since policy interface r4 none of them reads the world heading: the policy sees the direction of gravity in its own body frame, its velocity relative to the way it faces and the target's direction relative to its body, so turning the whole scene changes nothing it observes.

The stance node certifies stance quality, not reward: since physics r2 its gate is stance_quality/v2, which judges every episode of a 40-episode panel on the floor's force under each foot (no hop or stomp at reset, no long two-foot flight or hard landing later, both feet planted, the pad and all three toes of each foot loaded, level pads not stood on an edge, no drift, no actuator held at its limit) and certifies the stance when at least 37 of 40 are clean. Since 2026-10-11 (decision D-D32) it is applied at six whole-scene headings, the six-heading certificate stance_quality_heading/v1: every heading must pass, and at least 37 of the 40 seeds must be clean at all six. A soft, low bounce, or a foot that lifts for less than half of a 20 ms control step, can still pass it, so a trained stance is also checked by hand. Since the same revision the leg actions are softened near the standing pose (a soft-cubic residual that keeps both ends of each joint's range), so the small exploration noise PPO starts with no longer topples the standing animal.

Generated specifications

These values are generated from the environment and compiled MJCF model. “Dynamic mass” is a simulator property, not an anatomical weight estimate.

GaitBipedal
Observation dimension55
Action dimension / actuators14
Generalized coordinates (nq)24
Generalized velocities (nv)23
Compiled dynamic model mass1.0 kg
Plant contract revisionsPolicy r5 · physics r2 · visual r2
Modelenvironments/compsognathus_longipes/anatomical/assets/compsognathus_longipes_anatomical.xml

Current curriculum configuration

The Stable-Baselines3 budgets and early-advancement gates below come from the current TOML files and can differ from older published runs. A stage also ends when its configured budget is exhausted. The recipe column names the behavior a stage belongs to and whether its checkpoint is a published deliverable; the warm-start column names the stage it starts from.

StageRecipeWarm-start fromObjectiveSB3 configured budgetSB3 early-advancement gate
1 — Stancestand (deliverable)—Hold an upright stance with foot support11Mseeds clean at all six headings (whole scene turned -90, -45, 0, 45, 90, 180°) LCB95 ≥ 0.8 over ≥ 40 seeds (settle 200 steps); at every heading, clean stance episodes LCB95 ≥ 0.8 over the same seeds; an episode is clean when it reaches the horizon with min_all_feet_support ≥ 0.98, max_touchdown_rate ≤ 0.25, max_window_displacement_m ≤ 0.05, min_foot_load_share ≥ 0.4, max_actuator_saturation_fraction ≤ 0.1, max_settle_airborne_substeps ≤ 15, max_settle_peak_floor_force_bw ≤ 3, min_foot_load_share_windowed ≥ 0.35, max_foot_contact_fraction ≤ 0.02, max_phantom_support_fraction ≤ 0.05, max_nonfoot_load_fraction ≤ 0.01, max_settle_stance_width_change_m ≤ 0.011, min_support_geom_duty ≥ 0.5, min_support_geom_coverage ≥ 0.8, max_sole_tilt_deg ≤ 2, max_sole_corner_lift_m ≤ 0.003, min_sole_contacts ≥ 1.5, max_sole_cop_fore_aft ≤ 0.7, max_window_airborne_substeps ≤ 40, max_window_peak_floor_force_bw ≤ 2, min_foot_load_share_statue_ratio ≥ 0.8; full-horizon episodes ≥ 95.0% at every heading; reward rail ≥ 2,740 at every heading; reward rail ≥ 0.6 × the statue's at the same heading; verdict from the six-heading stance_heading_report.json on the handoff pair (post-stage; fail-closed when absent, never the yaw-zero panel)
recovery — Recoveryrecover (deliverable)1 — StancePilot: recover an upright stance after calibrated horizontal pushes3Mrecovery success LCB95 ≥ 0.5; paired Δ vs each required frozen null LCB95 ≥ 0.1; re-entry ≤ 40 steps + 20-step dwell; ≥ 40 episodes/evaluation; verdict from the frozen gate_resolution.json (post-stage; fail-closed when absent or stale)
2 — Locomotionwalk (deliverable)1 — StanceMove forward while remaining upright and avoiding body-floor contact3Mreward ≥ 500; episode length ≥ 900; avg. velocity ≥ 0.08 m/s; ≥ 20 episodes/evaluation; 3 consecutive passes
3 — Target Reachhunt (deliverable)2 — LocomotionReach the randomized horizontal target and slow down while upright3Mreward ≥ 25; task success ≥ 70.0%; ≥ 20 episodes/evaluation; 3 consecutive passes

Backend-specific task-success semantics

  • Stable-Baselines3 — Pelvis target-reaching success: While the target task is enabled, the upright pelvis enters the configured horizontal target radius at or below the configured speed; non-foot floor contact is forbidden.

Per-deliverable success semantics

  • stand (1 — Stance) · Stable-Baselines3 — Stance quality at six headings (stance_quality_heading/v1): The stance checkpoint clears the stance_quality_heading/v1 gate (the six-heading certificate, decision D-D32), judged post-stage on the handoff pair: the 40 certification-panel seeds are rolled with the whole scene turned -90, -45, 0, 45, 90 and 180 degrees; at every heading the stance_quality/v2 decision on floor truth (horizon reached, no hop or impact in the settle window, the two-foot flight time and the landing peak bounded over the scored window, both feet down and loaded, the pad and all three digits of each foot loaded, flat pads, no actuator held at its limit) passes against the statue rolled at that heading, and the one-sided 95% lower bound on the share of seeds clean at every heading meets the configured bound, with the reward rails as collapse floors only. The clean-seed count and its bound are recorded in gate_verdict.json but not exported to summary.json until a later phase (decision D-A9, deferred by D-B15), so the catalog names them with no value.
  • recover (recovery — Recovery) · Stable-Baselines3 — Recovery under pushes (recovery_quality/v1): The recovery checkpoint clears the recovery_quality/v1 gate, judged post-stage against the run's frozen gate_resolution.json: recovery-success LCB95 and the paired delta against each required frozen null meet the frozen thresholds, with re-entry inside the configured step budget and dwell. The statistics are not exported to summary.json until a later phase (decision D-A9, deferred by D-B15).
  • walk (2 — Locomotion) · Stable-Baselines3 — Gated forward velocity (reward_and_length/v1): The locomotion checkpoint clears the reward_and_length/v1 gate: mean forward velocity at or above the stage's configured minimum, with its reward and episode-length floors, over the required consecutive evaluations.
  • hunt (3 — Target Reach) · Stable-Baselines3 — Pelvis target-reaching success: While the target task is enabled, the upright pelvis enters the configured horizontal target radius at or below the configured speed; non-foot floor contact is forbidden.

Published run summaries

These are historical experiment records. A result is not evidence for the current model revision unless its provenance is explicitly marked current and verified.

No run summary has been published for this model.

Training​

Set SPECIES = "compsognathus_longipes" and EMBODIMENT = "anatomical" in the SB3 training notebook. Its manifest (configs/compsognathus_longipes/anatomical/stages.toml) declares four nodes, all published deliverables: stance (stand), recovery (recover, warm-started from stance), locomotion (walk, warm-started from stance) and behavior (hunt — the non-contact target-reach task, warm-started from locomotion). The notebook's BEHAVIOR = "hunt" default resolves to the behavior node here as for every model; BEHAVIOR = "stand" trains the stance alone and BEHAVIOR = "recover" trains stance then push recovery (decision D-D35; before it "stand" meant that chain here). The final task requires an upright, slow arrival within 8 cm of the target, measured at the pelvis in the ground plane.

python -m pip install -e ".[train]"
python -m environments.shared.train --species compsognathus_longipes --embodiment anatomical train --stage 1

# The advancing stages in manifest order; reuse an earlier run's certified stance and walk
python -m environments.shared.train --species compsognathus_longipes --embodiment anatomical curriculum \
--trunk-from logs/<earlier_run> --output-dir logs/<new_run>

Actions are residual joint-position commands around a preloaded standing pose. The control rate is 50 Hz and the default episode horizon is 20 seconds. Simulator state and target coordinates are privileged MLP inputs; the RGB camera is available separately for rendering. These policies are not onboard camera controllers.

The initial configurations and short integration runs establish training compatibility. They do not establish learned walking, behavior convergence or hardware readiness. The zero-action standing baseline should be measured before tuning. Every node is judged on its own and its verdict written to gate_verdict.json beside the handoff checkpoint; a later run reuses it only under the reuse rule (a passed verdict, the same task digest and plant, chained by the parent's checkpoint digest) — see Behavior Recipes.

See the model and training guide for mechanical assumptions, sensor details and validation commands.