ulqr  0.1.0
lqr_data.h
Go to the documentation of this file.
1 
13 #pragma once
14 
15 #include "lqr_data.h"
16 #include "riccati/constants.h"
17 #include "slap/matrix.h"
18 
56 typedef struct {
57  int nstates;
58  int ninputs;
59  Matrix Q;
60  Matrix R;
61  Matrix H;
62  Matrix q;
63  Matrix r;
64  double* c;
65  Matrix A;
66  Matrix B;
67  Matrix f;
78 
79  int datasize;
80 } LQRData;
81 
90 enum ulqr_ReturnCode ulqr_InitializeLQRData(LQRData* lqrdata, int nstates, int ninputs,
91  double* data);
92 
102 int ulqr_CopyLQRData(LQRData* dest, LQRData* src);
103 
104 int LQRDataSize(int nstates, int ninputs);
105 
LQRData::p
Matrix p
gradient fo the cost-to-go
Definition: lqr_data.h:71
LQRData::d
Matrix d
Feedforward gain.
Definition: lqr_data.h:69
LQRData::Qux
Matrix Qux
Action-value Hessian cross-term.
Definition: lqr_data.h:74
LQRData::K
Matrix K
Feedback gain.
Definition: lqr_data.h:68
ulqr_CopyLQRData
int ulqr_CopyLQRData(LQRData *dest, LQRData *src)
Copies one LQRData object to another.
Definition: lqr_data.c:93
LQRData::y
Matrix y
dual variable
Definition: lqr_data.h:77
matrix.h
Matrix type and basic operations.
LQRData::Qx
Matrix Qx
Action-value state gradient.
Definition: lqr_data.h:75
Matrix
Represents a matrix of double-precision data.
Definition: matrix.h:71
LQRData::datasize
int datasize
number of doubles needed to store the data
Definition: lqr_data.h:79
LQRData::P
Matrix P
Hessian of the cost-to-go.
Definition: lqr_data.h:70
LQRData::Quu
Matrix Quu
Action-value control Hessian.
Definition: lqr_data.h:73
LQRData
Holds the data for a single time step of LQR.
Definition: lqr_data.h:56
ulqr_InitializeLQRData
enum ulqr_ReturnCode ulqr_InitializeLQRData(LQRData *lqrdata, int nstates, int ninputs, double *data)
Initialize an LQRData object.
Definition: lqr_data.c:10
LQRData::Qu
Matrix Qu
Action-value control gradient.
Definition: lqr_data.h:76
lqr_data.h
LQRData type.
LQRData::Qxx
Matrix Qxx
Action-value state Hessian.
Definition: lqr_data.h:72