Skip to content

Roadmap: python-control integration (Phase 1 — state-space bridge, Phase 2 — NonlinearIOSystem wrapper) #1

Description

@miguelpi314

Context

Following up on https://github.com/orgs/pathsim/discussions/195, this is
where the python-control integration for pathsim lives, split into two
phases.

Phase 1 — linear bridge (in progress)

Once pathsim/pathsim#237 is merged, this phase is straightforward:
Simulation.linearize_system(..., as_block=False) returns a
LinearizationResult (A,B,C,D,state_labels,input_labels,output_labels)
whose labels already match control.StateSpace's states=/inputs=/
outputs= kwargs — verified against real python-control in
tests/evals/test_linearize_system_python_control.py. So
to_control_statespace(sim, inputs, outputs, t=None) is just a thin
wrapper building a control.StateSpace from that result, no adapter code
needed. Unlocks control.margin, control.root_locus, control.bode_plot,
etc. on any pathsim Simulation immediately.

Phase 2 — nonlinear bridge (later)

Wrap an entire pathsim Simulation as a control.NonlinearIOSystem
(updfcn/outfcn), enabling full nonlinear simulation/operating-point
analysis through python-control's own tooling. Harder: needs adapting the
DAG-order algebraic-loop-resolution logic in pathsim core's
utils/linearization.py (assemble_linear_system) to work with nonlinear
per-block functions instead of Jacobians.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions