STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
engine.control.robust_ddp.dynamics Namespace Reference

Classes

class  DynamicsParams

Functions

np.ndarray step (np.ndarray x, np.ndarray u, float dt, DynamicsParams params, float mdot_F, float mdot_O)
Tuple[np.ndarray, np.ndarray] linearize (np.ndarray x, np.ndarray u, float dt, DynamicsParams params, float mdot_F, float mdot_O, float eps=1e-6)

Variables

int IDX_P_COPV = 0
int IDX_P_REG = 1
int IDX_P_U_F = 2
int IDX_P_U_O = 3
int IDX_P_D_F = 4
int IDX_P_D_O = 5
int IDX_V_U_F = 6
int IDX_V_U_O = 7
int IDX_M_GAS_COPV = 8
int IDX_M_GAS_F = 9
int IDX_M_GAS_O = 10
int IDX_U_F = 0
int IDX_U_O = 1
int N_STATE = 11
int N_CONTROL = 2

Detailed Description

Discrete-time dynamics model for robust DDP controller.

State vector: x = [P_copv, P_reg, P_u_F, P_u_O, P_d_F, P_d_O, V_u_F, V_u_O, m_gas_copv, m_gas_F, m_gas_O]
Control: u = [u_F, u_O] in [0, 1]

Gas masses are tracked for proper mass conservation and blowdown physics.

Function Documentation

◆ linearize()

Tuple[np.ndarray, np.ndarray] engine.control.robust_ddp.dynamics.linearize ( np.ndarray x,
np.ndarray u,
float dt,
DynamicsParams params,
float mdot_F,
float mdot_O,
float eps = 1e-6 )
Linearize dynamics via finite differences.

Computes A and B matrices such that:
x[k+1] ≈ A @ x[k] + B @ u[k] + c

Parameters:
-----------
x : np.ndarray, shape (N_STATE,)
    State vector
u : np.ndarray, shape (N_CONTROL,)
    Control vector
dt : float
    Time step [s]
params : DynamicsParams
    Dynamics parameters
mdot_F : float
    Fuel mass flow rate [kg/s]
mdot_O : float
    Oxidizer mass flow rate [kg/s]
eps : float
    Finite difference step size

Returns:
--------
A : np.ndarray, shape (N_STATE, N_STATE)
    State Jacobian matrix
B : np.ndarray, shape (N_STATE, N_CONTROL)
    Control Jacobian matrix

Definition at line 797 of file dynamics.py.

References step().

◆ step()

np.ndarray engine.control.robust_ddp.dynamics.step ( np.ndarray x,
np.ndarray u,
float dt,
DynamicsParams params,
float mdot_F,
float mdot_O )
Discrete-time dynamics step.

Parameters:
-----------
x : np.ndarray, shape (N_STATE,)
    Current state: [P_copv, P_reg, P_u_F, P_u_O, P_d_F, P_d_O, V_u_F, V_u_O, m_gas_copv, m_gas_F, m_gas_O]
u : np.ndarray, shape (N_CONTROL,)
    Control input: [u_F, u_O] in [0, 1]
dt : float
    Time step [s]
params : DynamicsParams
    Dynamics parameters
mdot_F : float
    Fuel mass flow rate [kg/s] (from engine physics)
mdot_O : float
    Oxidizer mass flow rate [kg/s] (from engine physics)

Returns:
--------
x_next : np.ndarray, shape (N_STATE,)
    Next state

Definition at line 116 of file dynamics.py.

References max, and min.

Referenced by linearize().

Variable Documentation

◆ IDX_M_GAS_COPV

int engine.control.robust_ddp.dynamics.IDX_M_GAS_COPV = 8

Definition at line 27 of file dynamics.py.

◆ IDX_M_GAS_F

int engine.control.robust_ddp.dynamics.IDX_M_GAS_F = 9

Definition at line 28 of file dynamics.py.

◆ IDX_M_GAS_O

int engine.control.robust_ddp.dynamics.IDX_M_GAS_O = 10

Definition at line 29 of file dynamics.py.

◆ IDX_P_COPV

int engine.control.robust_ddp.dynamics.IDX_P_COPV = 0

Definition at line 19 of file dynamics.py.

◆ IDX_P_D_F

int engine.control.robust_ddp.dynamics.IDX_P_D_F = 4

Definition at line 23 of file dynamics.py.

◆ IDX_P_D_O

int engine.control.robust_ddp.dynamics.IDX_P_D_O = 5

Definition at line 24 of file dynamics.py.

◆ IDX_P_REG

int engine.control.robust_ddp.dynamics.IDX_P_REG = 1

Definition at line 20 of file dynamics.py.

◆ IDX_P_U_F

int engine.control.robust_ddp.dynamics.IDX_P_U_F = 2

Definition at line 21 of file dynamics.py.

◆ IDX_P_U_O

int engine.control.robust_ddp.dynamics.IDX_P_U_O = 3

Definition at line 22 of file dynamics.py.

◆ IDX_U_F

int engine.control.robust_ddp.dynamics.IDX_U_F = 0

Definition at line 32 of file dynamics.py.

◆ IDX_U_O

int engine.control.robust_ddp.dynamics.IDX_U_O = 1

Definition at line 33 of file dynamics.py.

◆ IDX_V_U_F

int engine.control.robust_ddp.dynamics.IDX_V_U_F = 6

Definition at line 25 of file dynamics.py.

◆ IDX_V_U_O

int engine.control.robust_ddp.dynamics.IDX_V_U_O = 7

Definition at line 26 of file dynamics.py.

◆ N_CONTROL

int engine.control.robust_ddp.dynamics.N_CONTROL = 2

Definition at line 36 of file dynamics.py.

◆ N_STATE

int engine.control.robust_ddp.dynamics.N_STATE = 11

Definition at line 35 of file dynamics.py.