26 #include "Eigen/Dense" 27 #include "modules/common/configs/proto/vehicle_config.pb.h" 29 #include "modules/planning/proto/planner_open_space_config.pb.h" 30 #include "osqp/osqp.h" 38 size_t horizon,
double ts,
const Eigen::MatrixXd& ego,
39 const Eigen::MatrixXi& obstacles_edges_num,
const size_t obstacles_num,
40 const Eigen::MatrixXd& obstacles_A,
const Eigen::MatrixXd& obstacles_b,
41 const Eigen::MatrixXd& xWS,
42 const PlannerOpenSpaceConfig& planner_open_space_config);
47 Eigen::MatrixXd* n_warm_up,
48 Eigen::MatrixXd* s_warm_up)
const;
52 void assembleP(std::vector<c_float>* P_data, std::vector<c_int>* P_indices,
53 std::vector<c_int>* P_indptr);
56 std::vector<c_int>* A_indices,
57 std::vector<c_int>* A_indptr);
59 void assembleA(
const int r,
const int c,
const std::vector<c_float>& P_data,
60 const std::vector<c_int>& P_indices,
61 const std::vector<c_int>& P_indptr);
64 const Eigen::MatrixXd& n_warm_up);
66 void printMatrix(
const int r,
const int c,
const std::vector<c_float>& P_data,
67 const std::vector<c_int>& P_indices,
68 const std::vector<c_int>& P_indptr);
71 OSQPConfig osqp_config_;
73 int num_of_variables_;
74 int num_of_constraints_;
78 int lambda_horizon_ = 0;
80 int slack_horizon_ = 0;
83 Eigen::MatrixXd l_warm_up_;
84 Eigen::MatrixXd n_warm_up_;
85 Eigen::MatrixXd slacks_;
90 std::vector<double> g_;
92 Eigen::MatrixXi obstacles_edges_num_;
94 int obstacles_edges_sum_;
96 double min_safety_distance_;
99 int l_start_index_ = 0;
102 int n_start_index_ = 0;
105 int s_start_index_ = 0;
108 Eigen::MatrixXd obstacles_A_;
111 Eigen::MatrixXd obstacles_b_;
114 Eigen::MatrixXd xWS_;
117 Eigen::MatrixXf constraint_A_;
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Planning module main class. It processes GPS and IMU as input, to generate planning info...
DualVariableWarmStartSlackOSQPInterface(size_t horizon, double ts, const Eigen::MatrixXd &ego, const Eigen::MatrixXi &obstacles_edges_num, const size_t obstacles_num, const Eigen::MatrixXd &obstacles_A, const Eigen::MatrixXd &obstacles_b, const Eigen::MatrixXd &xWS, const PlannerOpenSpaceConfig &planner_open_space_config)
void assembleConstraint(std::vector< c_float > *A_data, std::vector< c_int > *A_indices, std::vector< c_int > *A_indptr)
void printMatrix(const int r, const int c, const std::vector< c_float > &P_data, const std::vector< c_int > &P_indices, const std::vector< c_int > &P_indptr)
void assembleP(std::vector< c_float > *P_data, std::vector< c_int > *P_indices, std::vector< c_int > *P_indptr)
void assembleA(const int r, const int c, const std::vector< c_float > &P_data, const std::vector< c_int > &P_indices, const std::vector< c_int > &P_indptr)
void get_optimization_results(Eigen::MatrixXd *l_warm_up, Eigen::MatrixXd *n_warm_up, Eigen::MatrixXd *s_warm_up) const
Definition: dual_variable_warm_start_slack_osqp_interface.h:35
void checkSolution(const Eigen::MatrixXd &l_warm_up, const Eigen::MatrixXd &n_warm_up)
virtual ~DualVariableWarmStartSlackOSQPInterface()=default