pathsim / pathsim/pathsim-control

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

Open
#1 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2
Forks
1
PR merge metrics
No merged PRs in 30d

Description

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)

The linearization design landed differently than originally scoped here.
pathsim/pathsim#237 (trim() + linearize_system()) was closed without
merging; the maintainer implemented linearization as a pure query instead
in pathsim/pathsim#239 — see
https://github.com/orgs/pathsim/discussions/195#discussioncomment-17779351
for the design rationale.

Simulation.to_statespace(inputs, outputs, t=None) (merged into
pathsim master, not yet in a PyPI release) returns a StateSpace
block whose A/B/C/D and state_labels/input_labels/output_labels
already match control.StateSpace's states=/inputs=/outputs=
kwargs. to_control_statespace(sim, inputs, outputs, t=None) here is a
thin wrapper around it, no adapter code needed. Unlocks control.margin,
control.root_locus, control.bode_plot, etc. on any pathsim
Simulation immediately.

trim() wasn't part of that merge and doesn't exist yet — planned as an
extension of Simulation.steadystate().

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading Simulation.to_statespace and the to_control_statespace entry point, then compare their labels and A/B/C/D behavior with control.StateSpace. Phase 1 is done when the thin linear bridge exposes the documented python-control tooling; Phase 2 requires studying pathsim core's utils/linearization.py and assemble_linear_system before wrapping a Simulation as NonlinearIOSystem.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.