ulqr  0.1.0
riccati_solver.h File Reference

Basic methods for creating and using the Riccati solver. More...

#include "knotpoint.h"
#include "lqr_data.h"
#include "riccati/constants.h"

Go to the source code of this file.

Data Structures

struct  RiccatiSolver
 Solver that uses Riccati recursion to solve an LQR problem. More...
 

Functions

RiccatiSolverulqr_NewRiccatiSolver (int nstates, int ninputs, int nhorizon)
 Initialize a new Riccati solver. More...
 
int ulqr_FreeRiccatiSolver (RiccatiSolver **solver)
 Free the memory for a Riccati solver. More...
 
int ulqr_PrintRiccatiSummary (RiccatiSolver *solver)
 Prints a summary of the solve. More...
 
int ulqr_GetNumVars (RiccatiSolver *solver)
 
enum ulqr_ReturnCode ulqr_SetInitialState (RiccatiSolver *solver, double *x0)
 Set the initial state. More...
 
enum ulqr_ReturnCode ulqr_SetCost (RiccatiSolver *solver, const double *Q, const double *R, const double *H, const double *q, const double *r, double c, int k_start, int k_end)
 
enum ulqr_ReturnCode ulqr_SetDynamics (RiccatiSolver *solver, const double *A, const double *B, const double *f, int k_start, int k_end)
 
Matrixulqr_GetA (RiccatiSolver *solver, int k)
 Get (n,n) state transition matrix.
 
Matrixulqr_GetB (RiccatiSolver *solver, int k)
 Get (n,m) control input matrix.
 
Matrixulqr_Getf (RiccatiSolver *solver, int k)
 Get (n,) affine dynamice term.
 
Matrixulqr_GetQ (RiccatiSolver *solver, int k)
 Get state cost Hessian.
 
Matrixulqr_GetR (RiccatiSolver *solver, int k)
 Get control cost Hessian.
 
Matrixulqr_GetH (RiccatiSolver *solver, int k)
 Get cost Hessian cross-term (m,n)
 
Matrixulqr_Getq (RiccatiSolver *solver, int k)
 Get affine state cost.
 
Matrixulqr_Getr (RiccatiSolver *solver, int k)
 Get affine control cost.
 
double ulqr_Getc (RiccatiSolver *solver, int k)
 Get cost constant.
 
Matrixulqr_GetFeedbackGain (RiccatiSolver *solver, int k)
 Get (m,n) feedback gain.
 
Matrixulqr_GetFeedforwardGain (RiccatiSolver *solver, int k)
 Get (m,) feedforward gain.
 
Matrixulqr_GetCostToGoHessian (RiccatiSolver *solver, int k)
 Get (n,n) Hessian of the cost-to-go.
 
Matrixulqr_GetCostToGoGradient (RiccatiSolver *solver, int k)
 Get (n,) Gradient of the cost-to-go.
 
Matrixulqr_GetQxx (RiccatiSolver *solver, int k)
 Get (n,n) Action-value state Hessian.
 
Matrixulqr_GetQuu (RiccatiSolver *solver, int k)
 Get (m,m) Action-value control Hessian.
 
Matrixulqr_GetQux (RiccatiSolver *solver, int k)
 Get (m,n) Action-value Hessian cross-term.
 
Matrixulqr_GetQx (RiccatiSolver *solver, int k)
 Get (n,) Action-value state gradient.
 
Matrixulqr_GetQu (RiccatiSolver *solver, int k)
 Get (m,) Action-value conrol gradient.
 
Matrixulqr_GetState (RiccatiSolver *solver, int k)
 Get (n,) state vector.
 
Matrixulqr_GetInput (RiccatiSolver *solver, int k)
 Get (m,) input vector.
 
Matrixulqr_GetDual (RiccatiSolver *solver, int k)
 Get (n,) dual vector.
 
double ulqr_CalcCost (RiccatiSolver *solver)
 

Detailed Description

Basic methods for creating and using the Riccati solver.

Author
Brian Jackson (bjack.nosp@m.205@.nosp@m.gmail.nosp@m..com)
Version
0.1
Date
2022-01-30