GenerativeDynamics

Architecture

GenerativeDynamics implements generative dynamics on manifold for robotics planning, control and learning through replaceable components. Define a task, compose planners, constraints and learned models, then run through the direct Python API or experiment framework. Explicit adapters connect selected plans to the separate deployment runtime. Learned policies and trajectory models supply proposals; model-based objectives and constraints shape online generation; controllers execute the selected result and return the next measured state.

flowchart TB
    C[Configuration and plugins] --> R[Experiment runtime]
    R --> ENV[Task and environment adapters]
    R --> GEN[Generative solver]

    subgraph LEARN[Learning and reusable models]
        DATA[Simulation episodes / offline demonstrations] --> TRAIN[Policy or diffusion training]
        TRAIN --> CKPT[Checkpoints and model configuration]
        CKPT --> PRIOR[PPO horizon priors / learned trajectory diffusion]
    end

    ENV --> TRAIN
    PRIOR --> GEN
    ENV --> MODEL[Dynamics and task objectives]
    MODEL --> GEN
    GEO[Constraint manifolds / geometry / solvers / schedules] --> GEN
    GEN --> ACCEPT[Task acceptance and safety checks]
    ACCEPT --> CTRL[Controllers and robot I/O]
    CTRL --> WORLD[Simulator or physical robot]
    WORLD --> STATE[Measured state]
    STATE --> GEN
    ENV --> WORLD

    GEN --> EVIDENCE[Metrics / traces / replay / provenance]
    WORLD --> EVIDENCE
    EVIDENCE -. offline evaluation and retraining .-> DATA
    EVIDENCE -. task-specific fit and calibration .-> REL[Reliability model]
    REL --> ACCEPT

    classDef learning fill:#ede9fe,stroke:#8b5cf6,color:#312e81
    classDef inference fill:#dbeafe,stroke:#3b82f6,color:#1e3a8a
    classDef execution fill:#dcfce7,stroke:#22c55e,color:#14532d
    classDef evidence fill:#fff7ed,stroke:#f97316,color:#7c2d12
    class DATA,TRAIN,CKPT,PRIOR,REL learning
    class GEN,MODEL,GEO,ACCEPT inference
    class CTRL,WORLD,STATE execution
    class C,R,ENV,EVIDENCE evidence

Each task selects the paths it needs. MGA combines PPO proposals with online model-based generative optimization; DPCC and SafeDiffuser sample learned trajectory diffusion models. Model-based diffusion also runs without learned weights. The dotted feedback paths describe explicit offline workflows, rather than automatic learning during robot execution. See learning and priors for runnable entries.

Constraints follow the sample batch

A generative planner maintains candidate trajectories, not just one final plan. Supported JAX paths map rollout and correction kernels across candidates with vmap, while state-dependent time propagation uses scan. Feasibility weights, CBF/CFS corrections and manifold geometry feed subsequent updates. 2GO limits projection work through probes; MGA can evaluate learned horizon proposals alongside the model-based search. Learned trajectory diffusion has its own denoising and constraint integration path. See batched constraints and generative samples for the exact per-method order, shapes and numerical-backend boundaries.

Ownership boundaries

Configuration owns the protocol

ExperimentConfig owns method/environment selection, seeds, suites, device, metrics, visualization, and output identity. Relative base: chains merge dictionaries recursively and replace scalar/list values deterministically.

Plugins adapt components

Plugins translate a stable runner interface into solver-, environment-, or task-specific calls. They keep conditional logic out of the runner and give registrations explicit names that YAML can reference.

Solvers own planning mathematics

Solvers own generative inference and online optimization over dynamics, objectives, constraints, random keys and schedule parameters. They can consume learned priors without taking ownership of training. They do not choose result paths, render figures, or aggregate multi-seed experiments.

Learning owns models and their training contracts

Training entries own policy/diffusion fitting, datasets or training domains, normalization and checkpoint configuration. Shared prior interfaces expose actions, control-horizon proposals and optional scores to consumers. PPO checkpoints can serve standalone inference and MGA horizon proposals; SAC currently serves standalone policies. DPCC has a dedicated Torch diffusion training/loading path. Task-specific reliability fitting and calibration stay separate from online candidate evaluation.

The small JAX learned-diffusion prior is an extension component; the published MGA recipes do not automatically train it or inject its score into transport.

Environments own state and execution semantics

Environment plugins create model environments and, where required, distinct execution environments. Contact tasks can keep structured simulator state and provide task-owned reset, position extraction, recovery, and reliability contracts.

The runner owns evidence

The runner validates configuration, expands suite/seed matrices, persists success and failure state, invokes metrics and visualizations, and aggregates numeric results. A failed matrix entry remains visible rather than appearing as a successful partial run.

Deployment is a separate runtime

Deployment composes robot I/O, controllers, tasks, safety filters, observers, and localization through registries. Planning outputs cross into deployment through explicit adapters and saved artifacts instead of simulator internals. Measured state closes the execution/replanning loop. Saved traces can support later learning and calibration, with the selected checkpoint and task contract recorded for the next run.

Why this is an industrial architecture

The framework makes replaceability and evidence first-class. A policy prior can be reused without folding training into a solver; a planner can be changed without creating a new result format; a simulator can be changed without rewriting method selection. A benchmark identifies its config, device and checkpoint provenance, and an incomplete run records its failure. These boundaries turn paper algorithms into maintainable application components.

Backend boundary

V1 solver implementations target JAX. NumPy supports utilities and adapters. Torch supports a runtime adapter and specialized learned planners, but is not a general replacement for JAX solvers. Rust and C++ require the same tensor, randomness, compilation, device, and serialization contracts before they can be advertised as backends.

Based on the framework documentation · docs/concepts/architecture.md · main · View source