26 #include <coin/IpTNLP.hpp> 27 #include <coin/IpTypes.hpp> 35 const double d_pprime_init,
const double delta_s,
36 const double d_ppprime_max,
37 std::vector<std::pair<double, double>> d_bounds);
42 const double w_ddx,
const double w_dddx,
43 const double w_d_obs);
46 bool get_nlp_info(
int& n,
int& m,
int& nnz_jac_g,
int& nnz_h_lag,
47 IndexStyleEnum& index_style)
override;
50 bool get_bounds_info(
int n,
double* x_l,
double* x_u,
int m,
double* g_l,
51 double* g_u)
override;
55 double* z_L,
double* z_U,
int m,
bool init_lambda,
56 double* lambda)
override;
59 bool eval_f(
int n,
const double* x,
bool new_x,
double& obj_value)
override;
62 bool eval_grad_f(
int n,
const double* x,
bool new_x,
double* grad_f)
override;
65 bool eval_g(
int n,
const double* x,
bool new_x,
int m,
double* g)
override;
71 bool eval_jac_g(
int n,
const double* x,
bool new_x,
int m,
int nele_jac,
72 int* iRow,
int* jCol,
double* values)
override;
79 bool eval_h(
int n,
const double* x,
bool new_x,
double obj_factor,
int m,
80 const double* lambda,
bool new_lambda,
int nele_hess,
int* iRow,
81 int* jCol,
double* values)
override;
87 const double* z_L,
const double* z_U,
int m,
88 const double* g,
const double* lambda,
89 double obj_value,
const Ipopt::IpoptData* ip_data,
90 Ipopt::IpoptCalculatedQuantities* ip_cq)
override;
93 std::vector<double>* ptr_opt_d_prime,
94 std::vector<double>* ptr_opt_d_pprime)
const;
99 int num_of_variables_;
101 int num_of_constraints_;
103 double x_init_ = 0.0;
105 double dx_init_ = 0.0;
107 double ddx_init_ = 0.0;
109 double delta_s_ = 0.0;
111 double dddx_max_ = 0.0;
113 std::vector<std::pair<double, double>> d_bounds_;
121 double w_dddx_ = 1.0;
125 std::vector<double> opt_x_;
127 std::vector<double> opt_dx_;
129 std::vector<double> opt_ddx_;
void GetOptimizationResult(std::vector< double > *ptr_opt_d, std::vector< double > *ptr_opt_d_prime, std::vector< double > *ptr_opt_d_pprime) const
bool eval_g(int n, const double *x, bool new_x, int m, double *g) override
PiecewiseJerkPathIpoptSolver(const double d_init, const double d_prime_init, const double d_pprime_init, const double delta_s, const double d_ppprime_max, std::vector< std::pair< double, double >> d_bounds)
bool eval_h(int n, const double *x, bool new_x, double obj_factor, int m, const double *lambda, bool new_lambda, int nele_hess, int *iRow, int *jCol, double *values) override
bool eval_grad_f(int n, const double *x, bool new_x, double *grad_f) override
Definition: piecewise_jerk_path_ipopt_solver.h:32
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
bool get_nlp_info(int &n, int &m, int &nnz_jac_g, int &nnz_h_lag, IndexStyleEnum &index_style) override
Planning module main class. It processes GPS and IMU as input, to generate planning info...
bool get_starting_point(int n, bool init_x, double *x, bool init_z, double *z_L, double *z_U, int m, bool init_lambda, double *lambda) override
bool eval_f(int n, const double *x, bool new_x, double &obj_value) override
virtual ~PiecewiseJerkPathIpoptSolver()=default
void set_objective_weights(const double w_x, const double w_dx, const double w_ddx, const double w_dddx, const double w_d_obs)
void finalize_solution(Ipopt::SolverReturn status, int n, const double *x, const double *z_L, const double *z_U, int m, const double *g, const double *lambda, double obj_value, const Ipopt::IpoptData *ip_data, Ipopt::IpoptCalculatedQuantities *ip_cq) override
bool get_bounds_info(int n, double *x_l, double *x_u, int m, double *g_l, double *g_u) override
bool eval_jac_g(int n, const double *x, bool new_x, int m, int nele_jac, int *iRow, int *jCol, double *values) override