API Reference

pole_placement.servoTool.cli

Command-line interface for pole_placement.servoTool.

The CLI preserves the original servo-tool subcommands:

  • example

  • design

  • observer

  • sim

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

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

Build the command-line parser.

Return type:

ArgumentParser

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

Run the servoTool command-line interface.

Parameters:

argv (list[str] | None)

Return type:

int

pole_placement.servoTool.apis

class pole_placement.servoTool.apis.DesignResult(K1: 'List[List[float]]', K2: 'List[List[float]]', meta: 'Dict[str, Any]')[source]

Bases: object

Parameters:
  • K1 (List[List[float]])

  • K2 (List[List[float]])

  • meta (Dict[str, Any])

K1: List[List[float]]
K2: List[List[float]]
meta: Dict[str, Any]
class pole_placement.servoTool.apis.ObserverResult(Ke: 'List[List[float]]', T: 'List[List[float]]', notes: 'str')[source]

Bases: object

Parameters:
  • Ke (List[List[float]])

  • T (List[List[float]])

  • notes (str)

Ke: List[List[float]]
T: List[List[float]]
notes: str
class pole_placement.servoTool.apis.RunRequest(mode: 'str', config: 'Optional[str]' = None, G: 'Optional[str]' = None, H: 'Optional[str]' = None, C: 'Optional[str]' = None, which: 'str' = 'ogata', method: 'str' = 'acker', poles: 'Optional[str]' = None, observer_mode: 'str' = 'current', K1: 'Optional[str]' = None, K2: 'Optional[str]' = None, N: 'int' = 10, ref: 'str' = 'step', use_observer: 'bool' = False, Ke: 'Optional[str]' = None, T: 'Optional[str]' = None, csv: 'Optional[str]' = None, out: 'Optional[str]' = None, plot: 'bool' = False, savefig: 'Optional[str]' = None, plotly: 'bool' = False, html: 'Optional[str]' = None, open_html: 'bool' = False, eq: 'bool' = False, eq_stdout: 'bool' = False, eq_file: 'Optional[str]' = None)[source]

Bases: object

Parameters:
  • mode (str)

  • config (str | None)

  • G (str | None)

  • H (str | None)

  • C (str | None)

  • which (str)

  • method (str)

  • poles (str | None)

  • observer_mode (str)

  • K1 (str | None)

  • K2 (str | None)

  • N (int)

  • ref (str)

  • use_observer (bool)

  • Ke (str | None)

  • T (str | None)

  • csv (str | None)

  • out (str | None)

  • plot (bool)

  • savefig (str | None)

  • plotly (bool)

  • html (str | None)

  • open_html (bool)

  • eq (bool)

  • eq_stdout (bool)

  • eq_file (str | None)

C: str | None = None
G: str | None = None
H: str | None = None
K1: str | None = None
K2: str | None = None
Ke: str | None = None
N: int = 10
T: str | None = None
config: str | None = None
csv: str | None = None
eq: bool = False
eq_file: str | None = None
eq_stdout: bool = False
html: str | None = None
method: str = 'acker'
mode: str
observer_mode: str = 'current'
open_html: bool = False
out: str | None = None
plot: bool = False
plotly: bool = False
poles: str | None = None
ref: str = 'step'
savefig: str | None = None
use_observer: bool = False
which: str = 'ogata'
class pole_placement.servoTool.apis.SimResult(y: 'List[float]', u: 'List[float]', k0_u: 'float', summary: 'Dict[str, Any]')[source]

Bases: object

Parameters:
  • y (List[float])

  • u (List[float])

  • k0_u (float)

  • summary (Dict[str, Any])

k0_u: float
summary: Dict[str, Any]
u: List[float]
y: List[float]

pole_placement.servoTool.app

class pole_placement.servoTool.app.ServoApp[source]

Bases: object

run(req)[source]
Parameters:

req (RunRequest)

pole_placement.servoTool.core

class pole_placement.servoTool.core.MinObserver(Ke: 'np.ndarray', T: 'np.ndarray')[source]

Bases: object

Parameters:
  • Ke (numpy.ndarray)

  • T (numpy.ndarray)

Ke: numpy.ndarray
T: numpy.ndarray
class pole_placement.servoTool.core.SimOut(y: 'list[float]', u: 'list[float]', k0_u: 'float')[source]

Bases: object

Parameters:
  • y (list[float])

  • u (list[float])

  • k0_u (float)

k0_u: float
u: list[float]
y: list[float]
pole_placement.servoTool.core.acker(A, B, desired_poles)[source]
Parameters:
  • A (numpy.ndarray)

  • B (numpy.ndarray)

  • desired_poles (List[complex])

Return type:

numpy.ndarray

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

  • B (numpy.ndarray)

Return type:

numpy.ndarray

pole_placement.servoTool.core.design_min_observer(G, H, C, poles=None, method='acker')[source]
Parameters:
  • G (numpy.ndarray)

  • H (numpy.ndarray)

  • C (numpy.ndarray)

  • poles (List[complex] | None)

  • method (str)

Return type:

MinObserver

pole_placement.servoTool.core.design_servo_aug(G, H, C, poles=None, method='acker')[source]
Parameters:
  • G (numpy.ndarray)

  • H (numpy.ndarray)

  • C (numpy.ndarray)

  • poles (List[complex] | None)

  • method (str)

Return type:

Tuple[numpy.ndarray, numpy.ndarray]

pole_placement.servoTool.core.design_servo_ogata(G, H, C, poles=None, method='acker')[source]
Parameters:
  • G (numpy.ndarray)

  • H (numpy.ndarray)

  • C (numpy.ndarray)

  • poles (List[complex] | None)

  • method (str)

Return type:

Tuple[numpy.ndarray, numpy.ndarray]

pole_placement.servoTool.core.measured_form_T(C, n, m)[source]
Parameters:
  • C (numpy.ndarray)

  • n (int)

  • m (int)

Return type:

numpy.ndarray

pole_placement.servoTool.core.place_wrapper(A, B, poles, method)[source]
Parameters:
  • A (numpy.ndarray)

  • B (numpy.ndarray)

  • poles (List[complex])

  • method (str)

Return type:

numpy.ndarray

pole_placement.servoTool.core.poly_from_roots(roots)[source]
Parameters:

roots (List[complex])

Return type:

numpy.ndarray

pole_placement.servoTool.core.right_inverse(C)[source]
Parameters:

C (numpy.ndarray)

Return type:

numpy.ndarray

pole_placement.servoTool.core.simulate_servo(G, H, C, K1, K2, N=10, r_type='step', use_observer=False, minobs=None, observer_mode='current')[source]
Parameters:
  • G (numpy.ndarray)

  • H (numpy.ndarray)

  • C (numpy.ndarray)

  • K1 (numpy.ndarray)

  • K2 (numpy.ndarray)

  • N (int)

  • r_type (str)

  • use_observer (bool)

  • minobs (MinObserver | None)

  • observer_mode (str)

Return type:

SimOut

pole_placement.servoTool.core.to_real_if_close(a, tol=1e-12)[source]
Parameters:
  • a (numpy.ndarray)

  • tol (float)

Return type:

numpy.ndarray

pole_placement.servoTool.io

pole_placement.servoTool.io.force_col(a)[source]
Parameters:

a (numpy.ndarray | None)

Return type:

numpy.ndarray | None

pole_placement.servoTool.io.load_yaml(path)[source]
Parameters:

path (str | None)

Return type:

Dict[str, Any]

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

s (str | None)

Return type:

numpy.ndarray | None

pole_placement.servoTool.io.parse_poles(ps)[source]
Parameters:

ps (str | None)

Return type:

list[complex] | None

pole_placement.servoTool.io.write_csv_matrix(M, path)[source]
Parameters:
  • M (numpy.ndarray)

  • path (str | None)

Return type:

None

pole_placement.servoTool.io.write_csv_series(y, path)[source]
Parameters:
  • y (List[float])

  • path (str | None)

Return type:

None

pole_placement.servoTool.io.write_json(obj, path)[source]
Parameters:
  • obj (Dict[str, Any])

  • path (str | None)

Return type:

None

pole_placement.servoTool.utils

pole_placement.servoTool.utils.out_path(path)[source]
Parameters:

path (str | None)

Return type:

str | None

pole_placement.servoTool.utils.timed(func)[source]
Parameters:

func (Callable[[...], Any])

Return type:

Callable[[…], Any]

pole_placement.servoTool.design

pole_placement.servoTool.design.emit_equations(lines, eq_file, eq_stdout)[source]
Parameters:
  • lines (List[str])

  • eq_file (str | None)

  • eq_stdout (bool)

Return type:

str

pole_placement.servoTool.design.fmt_num(val)[source]
Parameters:

val (float)

Return type:

str

pole_placement.servoTool.design.observer_eqs(mode='current', Ke_shape=None)[source]
Parameters:
  • mode (str)

  • Ke_shape (tuple[int, int] | None)

Return type:

List[str]

pole_placement.servoTool.design.servo_eqs(G, H, C, K1, K2)[source]
Parameters:
  • G (numpy.ndarray)

  • H (numpy.ndarray)

  • C (numpy.ndarray)

  • K1 (numpy.ndarray)

  • K2 (numpy.ndarray)

Return type:

List[str]