API Reference

pole_placement.poleTool.cli

Command-line interface for pole_placement.poleTool.

The CLI supports two usage styles:

  1. Modern subcommand form:

    python -m pole_placement.poleTool.cli run --json_in in/system.json --poles "0.5,0.6"
    
  2. Historical no-subcommand form:

    python -m pole_placement.poleTool.cli --json_in in/system.json --poles "0.5,0.6"
    

It also includes a sphinx-skel helper for generating a conservative, GitHub Pages friendly Sphinx documentation skeleton.

pole_placement.poleTool.cli.build_parser()[source]

Build the command-line parser.

Return type:

ArgumentParser

pole_placement.poleTool.cli.main(argv=None)[source]

Run the poleTool command-line interface.

Parameters:

argv (list[str] | None)

Return type:

int

pole_placement.poleTool.apis

class pole_placement.poleTool.apis.RunRequest(A=None, B=None, C=None, json_in=None, poles=None, deadbeat=False, method='auto', samples=60, plot='mpl', style='dots', pretty=False, save_json=False, save_csv=False, name='pole_place', outdir=None, log='INFO')[source]

Bases: object

User-facing API request for a pole-placement design & simulation run.

Parameters:
  • A (str | None)

  • B (str | None)

  • C (str | None)

  • json_in (str | None)

  • poles (str | None)

  • deadbeat (bool)

  • method (str)

  • samples (int)

  • plot (str)

  • style (str)

  • pretty (bool)

  • save_json (bool)

  • save_csv (bool)

  • name (str)

  • outdir (str | None)

  • log (str)

A: str | None = None
B: str | None = None
C: str | None = None
deadbeat: bool = False
json_in: str | None = None
log: str = 'INFO'
method: str = 'auto'
name: str = 'pole_place'
outdir: str | None = None
plot: str = 'mpl'
poles: str | None = None
pretty: bool = False
samples: int = 60
save_csv: bool = False
save_json: bool = False
style: str = 'dots'

pole_placement.poleTool.app

class pole_placement.poleTool.app.PolePlacementApp[source]

Bases: object

High-level orchestration of pole placement design, simulation, plotting & exports.

run(req)[source]
Parameters:

req (RunRequest)

Return type:

Dict[str, Any]

pole_placement.poleTool.core

pole_placement.poleTool.core.ackermann_siso(A, B, poles)[source]
Parameters:
  • A (numpy.ndarray)

  • B (numpy.ndarray)

  • poles (numpy.ndarray)

Return type:

numpy.ndarray

pole_placement.poleTool.core.compute_K0(Acl, B, C)[source]
Parameters:
  • Acl (numpy.ndarray)

  • B (numpy.ndarray)

  • C (numpy.ndarray)

pole_placement.poleTool.core.ctrb(A, B)[source]
Parameters:
  • A (numpy.ndarray)

  • B (numpy.ndarray)

Return type:

numpy.ndarray

pole_placement.poleTool.core.eigenvector_method_siso(A, B, poles)[source]
Parameters:
  • A (numpy.ndarray)

  • B (numpy.ndarray)

  • poles (numpy.ndarray)

Return type:

numpy.ndarray

pole_placement.poleTool.core.mat_pow(A, k)[source]
Parameters:
  • A (numpy.ndarray)

  • k (int)

Return type:

numpy.ndarray

pole_placement.poleTool.core.match_pole_sets(lcl, mu)[source]
Parameters:
  • lcl (numpy.ndarray)

  • mu (numpy.ndarray)

Return type:

float

pole_placement.poleTool.core.obsv(A, C)[source]
Parameters:
  • A (numpy.ndarray)

  • C (numpy.ndarray)

Return type:

numpy.ndarray

pole_placement.poleTool.core.place_method(A, B, poles)[source]
Parameters:
  • A (numpy.ndarray)

  • B (numpy.ndarray)

  • poles (numpy.ndarray)

Return type:

numpy.ndarray

pole_placement.poleTool.core.pretty_poly_from_roots(roots)[source]
Parameters:

roots (numpy.ndarray)

Return type:

list[float]

pole_placement.poleTool.core.pretty_poly_string(coeffs)[source]
Return type:

str

pole_placement.poleTool.core.simulate_step(A, B, C, K, K0, N=60)[source]
Parameters:
  • A (numpy.ndarray)

  • B (numpy.ndarray)

  • C (numpy.ndarray)

  • K (numpy.ndarray)

  • K0 (numpy.ndarray)

  • N (int)

pole_placement.poleTool.io

pole_placement.poleTool.io.load_json_ABC(path)[source]
Parameters:

path (str)

pole_placement.poleTool.io.parse_matrix(s)[source]
Parameters:

s (str | None)

Return type:

np.ndarray | None

pole_placement.poleTool.io.parse_poles(s, n)[source]
Parameters:
  • s (str)

  • n (int)

Return type:

numpy.ndarray

pole_placement.poleTool.io.safe_scalar(x)[source]
Parameters:

x (Any)

Return type:

Any

pole_placement.poleTool.io.safeify(obj)[source]
Parameters:

obj (Any)

Return type:

Any

pole_placement.poleTool.utils

pole_placement.poleTool.utils.ensure_out_dir(default_rel='out', override=None)[source]

Return an output directory. If override is given, create and use it; else use ./out (package-local).

Parameters:
  • default_rel (str)

  • override (str | None)

Return type:

Path

pole_placement.poleTool.utils.mat_to_str(M, width=11, prec=6)[source]
Parameters:
  • width (int)

  • prec (int)

Return type:

str

pole_placement.poleTool.utils.timeit(func)[source]
pole_placement.poleTool.utils.to_real_if_close(M, tol=1e-12)[source]
Parameters:

tol (float)

pole_placement.poleTool.design

pole_placement.poleTool.design.plot_step(k, y, backend, style, outfile)[source]
Parameters:
  • backend (str)

  • style (str)

  • outfile (Path)

pole_placement.poleTool.design.save_csv_step(k, y, outdir, name)[source]
Parameters:
  • outdir (Path)

  • name (str)

Return type:

Path

pole_placement.poleTool.design.save_json(summary, outdir, name)[source]
Parameters:
  • summary (Dict[str, Any])

  • outdir (Path)

  • name (str)

Return type:

Path