control.flatsys.SystemTrajectory

class control.flatsys.SystemTrajectory(sys, basis, coeffs=[], flaglen=[], params=None)[source]

Bases: object

Class representing a trajectory for a flat system.

The SystemTrajectory class is used to represent the trajectory of a (differentially flat) system. Used by the point_to_point() function to return a trajectory.

Parameters
  • sys (FlatSystem) – Flat system object associated with this trajectory.

  • basis (BasisFamily) – Family of basis vectors to use to represent the trajectory.

  • coeffs (list of 1D arrays, optional) – For each flat output, define the coefficients of the basis functions used to represent the trajectory. Defaults to an empty list.

  • flaglen (list of ints, optional) – For each flat output, the number of derivatives of the flat output used to define the trajectory. Defaults to an empty list.

Methods

eval

Return the state and input for a trajectory at a list of times.

response

Return the trajectory of a system as a TimeResponseData object

eval(tlist)[source]

Return the state and input for a trajectory at a list of times.

Evaluate the trajectory at a list of time points, returning the state and input vectors for the trajectory:

x, u = traj.eval(tlist)

Parameters

tlist (1D array) – List of times to evaluate the trajectory.

Returns

  • x (2D array) – For each state, the values of the state at the given times.

  • u (2D array) – For each input, the values of the input at the given times.

response(tlist, transpose=False, return_x=False, squeeze=None)[source]

Return the trajectory of a system as a TimeResponseData object

Evaluate the trajectory at a list of time points, returning the state and input vectors for the trajectory:

response = traj.response(tlist) time, yd, ud = response.time, response.outputs, response.inputs

Parameters
  • tlist (1D array) – List of times to evaluate the trajectory.

  • transpose (bool, optional) – If True, transpose all input and output arrays (for backward compatibility with MATLAB and scipy.signal.lsim()). Default value is False.

  • return_x (bool, optional) – If True, return the state vector when assigning to a tuple (default = False). See forced_response() for more details.

  • squeeze (bool, optional) – By default, if a system is single-input, single-output (SISO) then the output response is returned as a 1D array (indexed by time). If squeeze=True, remove single-dimensional entries from the shape of the output even if the system is not SISO. If squeeze=False, keep the output as a 3D array (indexed by the output, input, and time) even if the system is SISO. The default value can be set using config.defaults[‘control.squeeze_time_response’].

Returns

results – Time response represented as a TimeResponseData object containing the following properties:

  • time (array): Time values of the output.

  • outputs (array): Response of the system. If the system is SISO and squeeze is not True, the array is 1D (indexed by time). If the system is not SISO or squeeze is False, the array is 3D (indexed by the output, trace, and time).

  • states (array): Time evolution of the state vector, represented as either a 2D array indexed by state and time (if SISO) or a 3D array indexed by state, trace, and time. Not affected by squeeze.

  • inputs (array): Input(s) to the system, indexed in the same manner as outputs.

The return value of the system can also be accessed by assigning the function to a tuple of length 2 (time, output) or of length 3 (time, output, state) if return_x is True.

Return type

TimeResponseData