56 optimized_trajectory.clear();
57 optimized_trajectory = optimized_trajectory_;
64 void LoadTrajectoryInEigen(
66 Eigen::MatrixXd& xWS, Eigen::MatrixXd& uWS);
68 void PartitionTrajectory(
70 std::vector<DiscretizedTrajectory>* partitioned_trajectories);
72 void CombineTrajectories(
73 const std::vector<Eigen::MatrixXd>& xWS_vec,
74 const std::vector<Eigen::MatrixXd>& uWS_vec,
75 const std::vector<Eigen::MatrixXd>& state_result_ds_vec,
76 const std::vector<Eigen::MatrixXd>& control_result_ds_vec,
77 const std::vector<Eigen::MatrixXd>& time_result_ds_vec,
78 const std::vector<Eigen::MatrixXd>& l_warm_up_vec,
79 const std::vector<Eigen::MatrixXd>& n_warm_up_vec,
80 const std::vector<Eigen::MatrixXd>& dual_l_result_ds_vec,
81 const std::vector<Eigen::MatrixXd>& dual_n_result_ds_vec,
82 Eigen::MatrixXd* xWS, Eigen::MatrixXd* uWS,
83 Eigen::MatrixXd* state_result_ds, Eigen::MatrixXd* control_result_ds,
84 Eigen::MatrixXd* time_result_ds, Eigen::MatrixXd* l_warm_up,
85 Eigen::MatrixXd* n_warm_up, Eigen::MatrixXd* dual_l_result_ds,
86 Eigen::MatrixXd* dual_n_result_ds);
88 bool GenerateDistanceApproachTraj(
89 const Eigen::MatrixXd& xWS,
const Eigen::MatrixXd& uWS,
90 const std::vector<double>& XYbounds,
91 const Eigen::MatrixXi& obstacles_edges_num,
92 const Eigen::MatrixXd& obstacles_A,
const Eigen::MatrixXd& obstacles_b,
93 const std::vector<std::vector<common::math::Vec2d>>& obstacles_vertices_vec,
94 const Eigen::MatrixXd& last_time_u,
const double init_v,
95 Eigen::MatrixXd* state_result_ds, Eigen::MatrixXd* control_result_ds,
96 Eigen::MatrixXd* time_result_ds, Eigen::MatrixXd* l_warm_up,
97 Eigen::MatrixXd* n_warm_up, Eigen::MatrixXd* dual_l_result_ds,
98 Eigen::MatrixXd* dual_n_result_ds);
100 bool GenerateDecoupledTraj(
101 const Eigen::MatrixXd& xWS,
const double init_a,
const double init_v,
102 const std::vector<std::vector<common::math::Vec2d>>& obstacles_vertices_vec,
103 Eigen::MatrixXd* state_result_dc, Eigen::MatrixXd* control_result_dc,
104 Eigen::MatrixXd* time_result_dc);
106 void UseWarmStartAsResult(
107 const Eigen::MatrixXd& xWS,
const Eigen::MatrixXd& uWS,
108 const Eigen::MatrixXd& l_warm_up,
const Eigen::MatrixXd& n_warm_up,
109 Eigen::MatrixXd* state_result_ds, Eigen::MatrixXd* control_result_ds,
110 Eigen::MatrixXd* time_result_ds, Eigen::MatrixXd* dual_l_result_ds,
111 Eigen::MatrixXd* dual_n_result_ds);
114 const Eigen::MatrixXd& state_result,
const Eigen::MatrixXd& control_result,
115 const Eigen::MatrixXd& time_result);
119 Eigen::MatrixXd* state_result_dc, Eigen::MatrixXd* control_result_dc,
120 Eigen::MatrixXd* time_result_dc);
122 void RecordDebugInfo(
124 const std::vector<double>& end_pose,
const Eigen::MatrixXd& xWS,
125 const Eigen::MatrixXd& uWS,
const Eigen::MatrixXd& l_warm_up,
126 const Eigen::MatrixXd& n_warm_up,
const Eigen::MatrixXd& dual_l_result_ds,
127 const Eigen::MatrixXd& dual_n_result_ds,
128 const Eigen::MatrixXd& state_result_ds,
129 const Eigen::MatrixXd& control_result_ds,
130 const Eigen::MatrixXd& time_result_ds,
131 const std::vector<double> XYbounds,
132 const std::vector<std::vector<common::math::Vec2d>>&
133 obstacles_vertices_vec);
138 std::unique_ptr<DistanceApproachProblem> distance_approach_;
139 std::unique_ptr<DualVariableWarmStartProblem> dual_variable_warm_start_;
140 std::unique_ptr<IterativeAnchoringSmoother> iterative_anchoring_smoother_;