54 const std::vector<common::TrajectoryPoint>& stitching_trajectory,
55 const std::vector<double>& end_pose,
const std::vector<double>& XYbounds,
57 const Eigen::MatrixXi& obstacles_edges_num,
58 const Eigen::MatrixXd& obstacles_A,
const Eigen::MatrixXd& obstacles_b,
59 const std::vector<std::vector<common::math::Vec2d>>&
60 obstacles_vertices_vec,
61 double* time_latency);
64 std::vector<common::TrajectoryPoint>* stitching_trajectory) {
65 stitching_trajectory->clear();
66 *stitching_trajectory = stitching_trajectory_;
70 optimized_trajectory->clear();
71 *optimized_trajectory = optimized_trajectory_;
77 const std::vector<double>& end_pose,
const Eigen::MatrixXd& xWS,
78 const Eigen::MatrixXd& uWs,
const Eigen::MatrixXd& l_warm_up,
79 const Eigen::MatrixXd& n_warm_up,
const Eigen::MatrixXd& dual_l_result_ds,
80 const Eigen::MatrixXd& dual_n_result_ds,
81 const Eigen::MatrixXd& state_result_ds,
82 const Eigen::MatrixXd& control_result_ds,
83 const Eigen::MatrixXd& time_result_ds,
84 const std::vector<double>& XYbounds,
85 const std::vector<std::vector<common::math::Vec2d>>&
86 obstacles_vertices_vec);
92 return &open_space_debug_;
96 bool IsInitPointNearDestination(
98 const std::vector<double>& end_pose,
double rotate_angle,
101 void PathPointNormalizing(
double rotate_angle,
103 double* x,
double* y,
double* phi);
105 void PathPointDeNormalizing(
double rotate_angle,
107 double* x,
double* y,
double* phi);
109 void LoadTrajectory(
const Eigen::MatrixXd& state_result_ds,
110 const Eigen::MatrixXd& control_result_ds,
111 const Eigen::MatrixXd& time_result_ds);
114 Eigen::MatrixXd* xWS, Eigen::MatrixXd* uWS);
116 void UseWarmStartAsResult(
117 const Eigen::MatrixXd& xWS,
const Eigen::MatrixXd& uWS,
118 const Eigen::MatrixXd& l_warm_up,
const Eigen::MatrixXd& n_warm_up,
119 Eigen::MatrixXd* state_result_ds, Eigen::MatrixXd* control_result_ds,
120 Eigen::MatrixXd* time_result_ds, Eigen::MatrixXd* dual_l_result_ds,
121 Eigen::MatrixXd* dual_n_result_ds);
123 bool GenerateDistanceApproachTraj(
124 const Eigen::MatrixXd& xWS,
const Eigen::MatrixXd& uWS,
125 const std::vector<double>& XYbounds,
126 const Eigen::MatrixXi& obstacles_edges_num,
127 const Eigen::MatrixXd& obstacles_A,
const Eigen::MatrixXd& obstacles_b,
128 const std::vector<std::vector<common::math::Vec2d>>&
129 obstacles_vertices_vec,
130 const Eigen::MatrixXd& last_time_u,
const double init_v,
131 Eigen::MatrixXd* state_result_ds, Eigen::MatrixXd* control_result_ds,
132 Eigen::MatrixXd* time_result_ds, Eigen::MatrixXd* l_warm_up,
133 Eigen::MatrixXd* n_warm_up, Eigen::MatrixXd* dual_l_result_ds,
134 Eigen::MatrixXd* dual_n_result_ds);
136 bool GenerateDecoupledTraj(
137 const Eigen::MatrixXd& xWS,
const double init_a,
const double init_v,
138 const std::vector<std::vector<common::math::Vec2d>>&
139 obstacles_vertices_vec,
140 Eigen::MatrixXd* state_result_dc, Eigen::MatrixXd* control_result_dc,
141 Eigen::MatrixXd* time_result_dc);
144 Eigen::MatrixXd* state_result_dc,
145 Eigen::MatrixXd* control_result_dc,
146 Eigen::MatrixXd* time_result_dc);
148 void CombineTrajectories(
149 const std::vector<Eigen::MatrixXd>& xWS_vec,
150 const std::vector<Eigen::MatrixXd>& uWS_vec,
151 const std::vector<Eigen::MatrixXd>& state_result_ds_vec,
152 const std::vector<Eigen::MatrixXd>& control_result_ds_vec,
153 const std::vector<Eigen::MatrixXd>& time_result_ds_vec,
154 const std::vector<Eigen::MatrixXd>& l_warm_up_vec,
155 const std::vector<Eigen::MatrixXd>& n_warm_up_vec,
156 const std::vector<Eigen::MatrixXd>& dual_l_result_ds_vec,
157 const std::vector<Eigen::MatrixXd>& dual_n_result_ds_vec,
158 Eigen::MatrixXd* xWS, Eigen::MatrixXd* uWS,
159 Eigen::MatrixXd* state_result_ds, Eigen::MatrixXd* control_result_ds,
160 Eigen::MatrixXd* time_result_ds, Eigen::MatrixXd* l_warm_up,
161 Eigen::MatrixXd* n_warm_up, Eigen::MatrixXd* dual_l_result_ds,
162 Eigen::MatrixXd* dual_n_result_ds);
167 std::unique_ptr<HybridAStar> warm_start_;
168 std::unique_ptr<DistanceApproachProblem> distance_approach_;
169 std::unique_ptr<DualVariableWarmStartProblem> dual_variable_warm_start_;
170 std::unique_ptr<IterativeAnchoringSmoother> iterative_anchoring_smoother_;
172 std::vector<common::TrajectoryPoint> stitching_trajectory_;
void RecordDebugInfo(const common::TrajectoryPoint &trajectory_stitching_point, const common::math::Vec2d &translate_origin, const double rotate_angle, const std::vector< double > &end_pose, const Eigen::MatrixXd &xWS, const Eigen::MatrixXd &uWs, const Eigen::MatrixXd &l_warm_up, const Eigen::MatrixXd &n_warm_up, const Eigen::MatrixXd &dual_l_result_ds, const Eigen::MatrixXd &dual_n_result_ds, const Eigen::MatrixXd &state_result_ds, const Eigen::MatrixXd &control_result_ds, const Eigen::MatrixXd &time_result_ds, const std::vector< double > &XYbounds, const std::vector< std::vector< common::math::Vec2d > > &obstacles_vertices_vec)