# Longer Panda tracking replay — 2026-09-21

Public reproduction note: archive aliases and `SIMCOMPARE_ROOT` are portable placeholders; use your own archive and checkout locations. Private deployment identifiers are omitted.

2.5 seconds, one smooth out-and-back joint reference; maximum hand excursion approximately 19.3 cm.
No contacts, active fingers, policy or native position drives. Canonical asset and import gates
are unchanged from the [original audit](../panda/audit.md).

This is a separate feedback-controlled experiment, not an extension of the identical-effort baseline.
Offline MuJoCo 3.11 inverse dynamics creates one frozen feedforward/reference tape sampled at 0.5 ms.
All engines use the same explicit controller, updated at 1 kHz:

    u = clip(feedforward + kp * (q_reference - q) + kd * (qd_reference - qd), -limit, limit)
    kp = [80, 80, 60, 60, 20, 15, 8]
    kd = [18, 18, 14, 14, 5, 4, 2]
    limit = [87, 87, 87, 87, 12, 12, 12] Nm

Quintic joint offsets at the midpoint: [0.3, 0.25, 0.2, 0.2, -0.25, 0.15, 0.3] rad.
Feedback torques can differ between engines. The plotted torques are actual commands.
Gravity arrows remain 1 N = 5 cm. Joint torque is not converted into an invented force arrow.

Three fixed-scene seeds per engine at 1 ms; one 0.5 ms trial per engine, holding control
commands for two steps. All 16 trials pass the existing import, FK and original joint-limit gates.
All baseline repeated recorded frames are exactly equal within each engine.

At 1 ms, maximum joint tracking errors: PhysX 0.02585°, Newton/MuJoCo-Warp 0.00714°,
CPU MuJoCo and Genesis 0.00716°. Maximum hand separation from CPU: PhysX 0.19385 mm,
Newton 0.00211 mm, Genesis floating-point roundoff. At 0.5 ms those separations are
0.73977 mm, 0.00234 mm and roundoff. CPU is a reference, not ground truth.
This is not a convergence or hardware-accuracy claim.

Retained diagnostics: extending the original constant-feedforward open-loop pulses crosses
an original joint limit at 1.018 s in CPU; an offline-feedforward-only sweep also diverges.
The initial shared 100 Hz PD run has large wrist errors (about 55°).
The final 1 kHz setting is common to all engines, with no engine-specific gain tuning.

Reproduction in state-of-robot-aug-2026/experiments/simcompare:
`panda_sweep.py`, `panda_run.py --duration 2.5 --tracking --tape assets/panda-shared-v1/tracking-targets.json`,
`setup/panda_tracking.py`, and `panda_report.py --tape ...`.
Raw final trials: `output/archive-rigid/panda-tracking-02`; 100 Hz diagnostic: `panda-tracking-01`.
The report verifies the frozen tape SHA across traces. Inherited base-asset simplification text
describes the original pulse protocol; the explicit `effort_protocol` and `controller` fields
specify this run. Raw evidence is retained unchanged.
