Skip to content

feat: expand the multi-robot simulation stack#4

Draft
Functionhx wants to merge 4 commits into
mainfrom
feature/ros2-navigation
Draft

feat: expand the multi-robot simulation stack#4
Functionhx wants to merge 4 commits into
mainfrom
feature/ros2-navigation

Conversation

@Functionhx

@Functionhx Functionhx commented Jul 19, 2026

Copy link
Copy Markdown
Owner

What changed

  • migrate and validate the Isaac Lab backend on Isaac Sim 6.0.1 GA, including robust/stair training, transfer tooling, and audited capsule-compatible assets
  • add shared 1/2/3-link inverted-pendulum tasks across MuJoCo and Isaac Lab, with PPO, SAC, TD3, classical/robust/observer/trajectory controllers, and same-contract evaluation
  • add the serial wheel-legged URDF/MJCF pair, Isaac Lab training/evaluation/export, and MuJoCo sim2sim tooling
  • add the 11-DOF ActuateX Sentinel as a paired MuJoCo/Isaac Lab system: shared 28-D observation and 6-D action contract, 500 Hz explicit DC-motor physics, power-buffer/thermal state, launcher safety and ballistics, PPO/SAC/TD3 training, and bidirectional evaluation
  • add native local system identification in MuJoCo and Isaac Lab, command-space gain scheduling, LQR synthesis, and a genuine discrete-time H-infinity zero-sum-game Riccati solver with saddle-Hessian and bounded-real frequency certificates
  • add a shared six-segment remote-command protocol, continuous CSV/SVG traces, fall/power/thermal/buffer telemetry, native evaluation, and bidirectional sim2sim classification behind one policy-loader contract
  • add a ROS 2/Nav2 integration package with camera profiles, MID360 non-repetitive point timing, point-cloud conversion, maps, and launch/config files
  • add the first industrial humanoid layer: a Unitree G1 29-DOF SDK-order contract with 50 Hz timing, 480-D term-major observation history, motor torque-speed/friction envelopes, action latency, and fail-closed runtime guards
  • refresh bilingual READMEs, architecture/migration/benchmark reports, the code-change PDF, third-party provenance, and repository verification
  • document a primary-source RoboMaster community mechanical survey, the current Sentinel model, Isaac Sim fidelity limits, licensing boundaries, and the next identification/training milestones

Why

ActuateX is growing from a single quadruped coursework baseline into a reviewable multi-robot, multi-simulator control stack. The contract layer makes simulator-to-simulator and future simulator-to-real claims testable by freezing joint order, frames, observation layout, actuator semantics, timing, and acceptance metrics.

The Sentinel phase now closes both the dynamics loop and the classical-control loop across two independent physics engines. Local models are rejected unless their validation, equilibrium, rank, controllability, and fall gates pass. Scheduled LQR and H-infinity artifacts carry source hashes and backend metadata, so native and cross-engine results cannot be silently mixed.

The H-infinity implementation is not a relabeled LQR. It solves an indefinite discrete zero-sum game, verifies the control/disturbance saddle conditions, checks Schur stability, and certifies the disturbance-to-performance gain on a dense unit-circle frequency grid. Runtime tests also preserve negative evidence: local linear certificates do not guarantee robustness to contact changes, actuator saturation, large command reversals, or broad domain randomization.

The Sentinel asset remains an original serial-leg design. Community CAD is not redistributed, and restricted mechanical releases are referenced only as design and failure-mode research. The model is control-grade nominal physics, not yet a team-specific digital twin.

The G1 and Sentinel smoke runs prove that the local Isaac/PhysX and MuJoCo pipelines launch, sample, update, and exchange policies. They are intentionally not presented as completed humanoid or competition-grade wheel-legged training. Long-running multi-seed RL training, terrain/impact/self-righting acceptance, and parameter identification remain follow-up work.

Validation

  • PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 pytest -q backends/mujoco/tests/test_sentinel_linear_control.py backends/mujoco/tests/test_sentinel_evaluation_protocol.py backends/mujoco/tests/test_sentinel_evaluation_trace.py backends/mujoco/tests/test_robomaster_dynamics.py — 32 passed
  • H-infinity unit gate — gain differs from LQR; saddle Hessian signs, Schur stability, and frequency norm below gamma all passed
  • Ruff on every changed Python file — passed
  • python -m compileall -q ... — passed
  • git diff --check — passed
  • clean full-sequence scheduled LQR, 64 environments and zero falls in all four directions: Isaac native 0.0587 RMSE; Isaac to MuJoCo 0.0616; MuJoCo native 0.0417; MuJoCo to Isaac 0.0544
  • clean full-sequence scheduled H-infinity, 64 environments and zero falls in all four directions: Isaac native 0.0619 RMSE; Isaac to MuJoCo 0.0718; tuned MuJoCo native 0.0409; MuJoCo to Isaac 0.0536
  • Isaac training-randomization and held-out stress modes exercised mass/COM, friction, actuator, delay, reset, push, contact, power, buffer, and thermal limits; results retain the observed PPO advantage over local linear control under broad nonlinear perturbations
  • Sentinel MuJoCo asset compile — nq=18, nv=17, nu=11, 44 sensors
  • Isaac Sim 6 Sentinel rigid-body smoke — 4 environments x 250 physics steps
  • Sentinel PPO smoke — MuJoCo 8 environments x 1 iteration; Isaac Lab 4 environments x 1 iteration
  • Sentinel SAC and TD3 smoke — MuJoCo 8 environments / Isaac Lab 16 environments, 1024 transitions each, with GPU updates
  • bidirectional inference smoke — MuJoCo SAC to Isaac Sim and Isaac SAC to MuJoCo both completed with shared observations, actions, motor temperature, chassis power, and referee-buffer telemetry
  • MID360 .xz integrity and 800,000-row count — passed
  • code-change PDF rebuilt successfully (12 A4 pages)

Generated logs, checkpoints, identification models, evaluation JSON/CSV/SVG, videos, simulator installations, and external Unitree/Isaac repositories remain excluded from Git.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant