solver_lqr
BackwardPass.hpp
Go to the documentation of this file.
1 
9 #pragma once
10 
12 #include <solver/interface/Solver.hpp>
14 
15 namespace solverlqr {
16 
18  {
19  public:
20  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
21 
22  public:
23  BackwardPass() : is_initialized_(false) {}
24  virtual ~BackwardPass(){}
25 
26  void initialize(OcpBase* ocp, const SolverLqrSetting& stgs);
27  void optimizeController(const ForwardPass& fpass, const FiniteDifferences& devs, double lambda);
28 
29  const Eigen::Vector2d& dV() const { return dV_; }
30  ControlSequence& controlSeq() { return control_seq_; }
31  const bool& hasDiverged() const { return diverge_flag_; }
32  const int& divergeIteration() const { return diverge_iteration_; }
33  const ControlSequence& controlSeq() const { return control_seq_; }
34 
35  private:
36 
37  OcpBase& getOcp() { return *ocp_; }
38  const OcpBase& getOcp() const { return *ocp_; }
39  const SolverLqrSetting& getLqrSetting() const { return *stgs_; }
40  Eigen::MatrixXd tensorContraction(const Eigen::VectorXd& vz, const std::vector<Eigen::MatrixXd>& fzz);
41  void findConstrainedControls(int time_id, const Eigen::MatrixXd& chol_hessian, const Eigen::VectorXd& gradient);
42 
43  private:
44  Eigen::VectorXd V_;
45  Eigen::Vector2d dV_;
46  Eigen::VectorXd Qu_; // nu * 1
47  Eigen::VectorXd Qx_; // nx * 1
48  Eigen::MatrixXd Qxx_, VxxR_; // nx * nx
49  Eigen::MatrixXd Qxu_, QxuR_; // nx * nu
50  Eigen::MatrixXd Quu_, QuuR_; // nu * nu
51  std::vector<Eigen::VectorXd> Vx_, Vxh_; // nx * 1 * horizon+1
52  std::vector<Eigen::MatrixXd> Vxx_, Vxxh_, Vxhxh_; // nx * nx * horizon+1
53 
54  solver::Model model_;
55  solver::LinExpr lin_expr_;
56  std::vector<solver::Var> vars_;
57  solver::DCPQuadExpr quad_expr_;
58 
59  OcpBase* ocp_;
60  ControlSequence control_seq_;
61  const SolverLqrSetting* stgs_;
62  Eigen::LLT<Eigen::MatrixXd> llt_;
63  bool diverge_flag_, is_initialized_;
64  int diverge_iteration_, tdim_, xdim_, udim_;
65  };
66 
67 }
Definition: BackwardPass.hpp:17
Definition: FiniteDifferences.hpp:17
Definition: BackwardPass.hpp:15
Optimal Control Problem Description Class.
Definition: OcpDescription.hpp:115
Definition: OcpDescription.hpp:88
Definition: ForwardPass.hpp:16
Definition: SolverLqrSetting.hpp:18