Controltools

This file contains some functions that are quite helpful when designing feedback laws. This collection is not complete and does not aim to be so. For a more sophisticated collection have a look at the symbtools (https://github.com/TUD-RST/symbtools) or control package which are not used in this package to keep a small footprint.

pymoskito.controltools.char_coefficients(poles)[source]

Calculate the coefficients of a characteristic polynomial.

Parameters:poles (list or numpy.ndarray) – pol configuration
Returns:coefficients
Return type:numpy.ndarray
pymoskito.controltools.place_siso(a_mat, b_mat, poles)[source]

Place poles for single input single output (SISO) systems:

  • pol placement for state feedback: A and b
  • pol placement for observer: A^T and c
Parameters:
  • a_mat (numpy.ndarray) – System matrix.:math:A
  • b_mat (numpy.ndarray) – Input vector b or Output matrix c .
  • poles (list or numpy.ndarray) – Desired poles.
Returns:

Feedback vector or k or observer gain l^T .

Return type:

numpy.ndarray

pymoskito.controltools.calc_prefilter(a_mat, b_mat, c_mat, k_mat=None)[source]

Calculate the prefilter matrix

\boldsymbol{V} = - \left[\boldsymbol{C} \left(\boldsymbol{A} -
\boldsymbol{B}\boldsymbol{K}\right)^{-1}\boldsymbol{B}\right]^{-1}

Parameters:
  • a_mat (numpy.ndarray) – system matrix
  • b_mat (numpy.ndarray) – input matrix
  • c_mat (numpy.ndarray) – output matrix
  • k_mat (numpy.ndarray) – control matrix
Returns:

Prefilter matrix

Return type:

numpy.ndarray

pymoskito.controltools.controllability_matrix(a_mat, b_mat)[source]

Calculate controllability matrix and check controllability of the system.

\boldsymbol{Q_{c}} = \begin{pmatrix}
\boldsymbol{B} & \boldsymbol{A}\boldsymbol{B} & \boldsymbol{A}^{2}
\boldsymbol{B} &
\cdots & \boldsymbol{A}^{n-1}\boldsymbol{B}\\
\end{pmatrix}

Parameters:
  • a_mat (numpy.ndarray) – system matrix
  • b_mat (numpy.ndarray) – manipulating matrix
Returns:

controllability matrix \boldsymbol{Q_{c}}

Return type:

numpy.ndarray

pymoskito.controltools.observability_matrix(a_mat, c_mat)[source]

Calculate observability matrix and check observability of the system.

\boldsymbol{Q_{o}} = \begin{pmatrix}
\boldsymbol{C}\\
\boldsymbol{C}\boldsymbol{A}\\
\boldsymbol{C}\boldsymbol{A}^{2}\\
\vdots \\
\boldsymbol{C}\boldsymbol{A}^{n-1}\\
\end{pmatrix}

Parameters:
  • a_mat (numpy.ndarray) – system matrix
  • c_mat (numpy.ndarray) – output matrix
Returns:

observability matrix \boldsymbol{Q_{o}}

Return type:

numpy.ndarray

pymoskito.controltools.lie_derivatives(h, f, x, order=1)[source]

Calculates the Lie-Derivative from a scalar field h(x) along a vector field f(x).

Parameters:
  • h (sympy.matrix) – scalar field
  • f (sympy.matrix) – vector field
  • x (sympy.matrix) – symbolic representation of the states
  • order (int) – order
Returns:

lie derivatives in ascending order

Return type:

list of sympy.matrix