Go to the documentation of this file.
15 #include "knotpoint.h"
17 #include "riccati/constants.h"
128 enum ulqr_ReturnCode ulqr_SetCost(
RiccatiSolver* solver,
const double* Q,
const double* R,
129 const double* H,
const double* q,
const double* r,
double c,
130 int k_start,
int k_end);
132 enum ulqr_ReturnCode ulqr_SetDynamics(
RiccatiSolver* solver,
const double* A,
const double* B,
133 const double* f,
int k_start,
int k_end);
double * data
pointer to the beginning of the single block of memory allocated by the solver
Definition: riccati_solver.h:71
double ulqr_Getc(RiccatiSolver *solver, int k)
Get cost constant.
Definition: riccati_solver.c:227
Matrix * ulqr_Getf(RiccatiSolver *solver, int k)
Get (n,) affine dynamice term.
Definition: riccati_solver.c:221
Stores the state, control, and time information at a single timestep / knot point.
Definition: knotpoint.h:11
enum ulqr_ReturnCode ulqr_SetInitialState(RiccatiSolver *solver, double *x0)
Set the initial state.
Definition: riccati_solver.c:116
Matrix * ulqr_GetR(RiccatiSolver *solver, int k)
Get control cost Hessian.
Definition: riccati_solver.c:223
Matrix * ulqr_GetState(RiccatiSolver *solver, int k)
Get (n,) state vector.
Definition: riccati_solver.c:240
int nstates
size of state vector (n)
Definition: riccati_solver.h:66
Matrix * ulqr_GetA(RiccatiSolver *solver, int k)
Get (n,n) state transition matrix.
Definition: riccati_solver.c:219
Matrix * ulqr_GetQx(RiccatiSolver *solver, int k)
Get (n,) Action-value state gradient.
Definition: riccati_solver.c:237
Solver that uses Riccati recursion to solve an LQR problem.
Definition: riccati_solver.h:63
Matrix * ulqr_GetQu(RiccatiSolver *solver, int k)
Get (m,) Action-value conrol gradient.
Definition: riccati_solver.c:238
double t_solve_ms
Total solve time in milliseconds.
Definition: riccati_solver.h:73
Matrix * ulqr_GetQ(RiccatiSolver *solver, int k)
Get state cost Hessian.
Definition: riccati_solver.c:222
Matrix * ulqr_GetB(RiccatiSolver *solver, int k)
Get (n,m) control input matrix.
Definition: riccati_solver.c:220
RiccatiSolver * ulqr_NewRiccatiSolver(int nstates, int ninputs, int nhorizon)
Initialize a new Riccati solver.
Definition: riccati_solver.c:20
Matrix * ulqr_Getq(RiccatiSolver *solver, int k)
Get affine state cost.
Definition: riccati_solver.c:225
int ulqr_PrintRiccatiSummary(RiccatiSolver *solver)
Prints a summary of the solve.
Definition: riccati_solver.c:129
double t_backward_pass_ms
Time spent in the backward pass in milliseconds.
Definition: riccati_solver.h:74
KnotPoint * Z
state and control trajectory
Definition: riccati_solver.h:69
int nvars
total number of decision variables, including the dual variables
Definition: riccati_solver.h:68
Represents a matrix of double-precision data.
Definition: matrix.h:71
Matrix * ulqr_GetDual(RiccatiSolver *solver, int k)
Get (n,) dual vector.
Definition: riccati_solver.c:248
int ninputs
number of control inputs (m)
Definition: riccati_solver.h:67
Matrix * ulqr_GetQux(RiccatiSolver *solver, int k)
Get (m,n) Action-value Hessian cross-term.
Definition: riccati_solver.c:236
Matrix * ulqr_GetQuu(RiccatiSolver *solver, int k)
Get (m,m) Action-value control Hessian.
Definition: riccati_solver.c:235
LQRData * lqrdata
LQR Problem data.
Definition: riccati_solver.h:70
Matrix * ulqr_GetQxx(RiccatiSolver *solver, int k)
Get (n,n) Action-value state Hessian.
Definition: riccati_solver.c:234
double t_forward_pass_ms
Time spent in the forward pass in milliseconds.
Definition: riccati_solver.h:75
Holds the data for a single time step of LQR.
Definition: lqr_data.h:56
int ulqr_FreeRiccatiSolver(RiccatiSolver **solver)
Free the memory for a Riccati solver.
Definition: riccati_solver.c:103
Matrix x0
Initial state.
Definition: riccati_solver.h:72
Matrix * ulqr_GetInput(RiccatiSolver *solver, int k)
Get (m,) input vector.
Definition: riccati_solver.c:244
int nhorizon
length of the time horizon
Definition: riccati_solver.h:65
Matrix * ulqr_GetFeedbackGain(RiccatiSolver *solver, int k)
Get (m,n) feedback gain.
Definition: riccati_solver.c:229
Matrix * ulqr_GetCostToGoGradient(RiccatiSolver *solver, int k)
Get (n,) Gradient of the cost-to-go.
Definition: riccati_solver.c:232
Matrix * ulqr_GetCostToGoHessian(RiccatiSolver *solver, int k)
Get (n,n) Hessian of the cost-to-go.
Definition: riccati_solver.c:231
Matrix * ulqr_GetFeedforwardGain(RiccatiSolver *solver, int k)
Get (m,) feedforward gain.
Definition: riccati_solver.c:230
Matrix * ulqr_GetH(RiccatiSolver *solver, int k)
Get cost Hessian cross-term (m,n)
Definition: riccati_solver.c:224
Matrix * ulqr_Getr(RiccatiSolver *solver, int k)
Get affine control cost.
Definition: riccati_solver.c:226