Apollo 10.0
自动驾驶开放平台
planner_open_space_config.proto
浏览该文件的文档.
1syntax = "proto2";
2
4
5package apollo.planning;
6
8 IPOPT = 0;
9 IPOPTQP = 1;
10 OSQP = 2;
11 DEBUG = 3;
13}
14
23
25 // Open Space ROIConfig
26 optional ROIConfig roi_config = 1;
27 // Hybrid A Star Warm Start
28 optional WarmStartConfig warm_start_config = 2;
29 // Dual Variable Warm Start
30 optional DualVariableWarmStartConfig dual_variable_warm_start_config = 3;
31 // Distance Approach Configs
32 optional DistanceApproachConfig distance_approach_config = 4;
33 // Iterative Anchoring Configs
34 optional IterativeAnchoringConfig iterative_anchoring_smoother_config = 5;
35 // sample time for speed planning
36 optional float delta_t = 7 [default = 1.0];
37 // Distance threshold to judge if vehicle is near destination
38 optional double near_destination_threshold = 8 [default = 0.001];
39 // If enable linear interpolation to get smoother path
40 optional bool enable_linear_interpolation = 10 [default = false];
41 // Theta error to judge if vehicle is near destination
42 optional double is_near_destination_theta_threshold = 11 [default = 0.05];
43}
44
45message ROIConfig {
46 // longitudinal range of parking roi backward
47 optional double roi_longitudinal_range_start = 1 [default = 10.0];
48 // longitudinal range of parking roi forward
49 optional double roi_longitudinal_range_end = 2 [default = 10.0];
50 // parking spot range detection threshold
51 optional double parking_start_range = 3 [default = 7.0];
52 // Parking orientation for reverse parking
53 optional bool parking_inwards = 4 [default = false];
54}
55
57// SpeedOptimizerConfig
58
60 // Acceleration weight
61 optional double acc_weight = 1 [default = 1.0];
62 // Jerk weight
63 optional double jerk_weight = 2 [default = 10.0];
64 // Kappa penalty weight
65 optional double kappa_penalty_weight = 3 [default = 1000.0];
66 // Reference line distance weight
67 optional double ref_s_weight = 4 [default = 10.0];
68 // Reference line speed weight
69 optional double ref_v_weight = 5 [default = 10.0];
70}
71// Hybrid a star for warm start
73 // Distance resolution of grid
74 optional double xy_grid_resolution = 1 [default = 0.2];
75 // Theta resolution of grid
76 optional double phi_grid_resolution = 2 [default = 0.05];
77 // Node num of next step
78 optional uint64 next_node_num = 3 [default = 10];
79 // Hybird a star traj point nums between two node
80 optional double step_size = 4 [default = 0.5];
81 // Penalty for moving forward
82 optional double traj_forward_penalty = 5 [default = 0.0];
83 // Penalty for moving backward
84 optional double traj_back_penalty = 6 [default = 0.0];
85 // Penalty for switching gear
86 optional double traj_gear_switch_penalty = 7 [default = 10.0];
87 // Penalty for steering
88 optional double traj_steer_penalty = 8 [default = 100.0];
89 // Penalty for chaning steering
90 optional double traj_steer_change_penalty = 9 [default = 10.0];
91 // Penalty when path is too short
92 optional double traj_short_length_penalty = 10 [default = 10.0];
93 // Grid a star xy axis resolution
94 optional double grid_a_star_xy_resolution = 11 [default = 0.1];
95 // Node radius for collision check
96 optional double node_radius = 12 [default = 0.5];
97 optional SpeedOptimizerConfig s_curve_config = 13;
98 // Maximum curvature ratio in warm start trajectory
99 optional double traj_kappa_contraint_ratio = 14 [default = 0.7];
100 // Maximum expolored number for searching
101 optional int32 max_explored_num = 15 [default = 10000];
102 // Minimum number of valid results to stop searching
103 optional int32 desired_explored_num= 16 [default = 10000];
104 // Path of length shorter than "traj_expected_shortest_length" will be
105 // considered as short path and set penalty
106 optional double traj_expected_shortest_length = 17 [default = 1.0];
107 // Stop searching if searching time exceeds "astar_max_search_time"
108 optional double astar_max_search_time = 18 [default = 5.0];
109 // Generate a star grad map local esdf range
110 optional double esdf_range = 19 [default = 2.0];
111 // Generate a star grad map local esdf range
112 optional double soft_boundary_penalty = 20 [default = 2.0];
113 // if generate esdf
114 optional bool use_esdf = 21 [default = true];
115}
116
118 // Parameter for weighing the weights between the two variables
119 optional double weight_d = 1 [default = 1.0];
120 // Config of ipopt
121 optional IpoptConfig ipopt_config = 2;
122 // qp warm up mode
123 optional DualWarmUpMode qp_format = 3;
124 // Minimum safety distance
125 optional double min_safety_distance = 4 [default = 0.0];
126 // If print debug information of osqp
127 optional bool debug_osqp = 5 [default = false];
128 // Parameter for adjusting adjust the weight between the objective function
129 // and constraint conditions
130 optional double beta = 6 [default = 1.0];
131 // Config of osqp
132 optional OSQPConfig osqp_config = 7;
133}
134
136 // Distance approach weight configs
137 optional double weight_steer = 1;
138 optional double weight_a = 2;
139 optional double weight_steer_rate = 3;
140 optional double weight_a_rate = 4;
141 optional double weight_x = 5;
142 optional double weight_y = 6;
143 optional double weight_phi = 7;
144 optional double weight_v = 8;
145 optional double weight_steer_stitching = 9;
146 optional double weight_a_stitching = 10;
147 optional double weight_first_order_time = 11;
148 optional double weight_second_order_time = 12;
149 // Minimum safety distance
150 optional double min_safety_distance = 13 [default = 0.0];
151 // Maximum speed for moving forward
152 optional double max_speed_forward = 14 [default = 3.0];
153 // Maximum speed for moving backward
154 optional double max_speed_reverse = 15 [default = 2.0];
155 // Maximum acceleration for moving forward
156 optional double max_acceleration_forward = 16 [default = 2.0];
157 // Maximum acceleration for moving backward
158 optional double max_acceleration_reverse = 17 [default = 2.0];
159 // Minimum scaling for time sample
160 optional double min_time_sample_scaling = 18 [default = 0.1];
161 // Maximum scaling for time sample
162 optional double max_time_sample_scaling = 19 [default = 10.0];
163 // If use fix time for planning
164 optional bool use_fix_time = 20 [default = false];
165 // Config of ipopt
166 optional IpoptConfig ipopt_config = 21;
167 // If enable constraint check
168 optional bool enable_constraint_check = 22;
169 // If enable hand derivative(not used any more)
170 optional bool enable_hand_derivative = 23;
171 // True to enable hand derived derivative inside open space planner
172 optional bool enable_derivative_check = 24;
173 // True to enable derivative check inside open space planner
174 optional bool enable_initial_final_check = 25 [default = false];
175 optional DistanceApproachMode distance_approach_mode = 26;
176 // If enable automatic differentiation of Jacobian matrix
177 optional bool enable_jacobian_ad = 27 [default = false];
178 // If enable initial state check
179 optional bool enable_check_initial_state = 28 [default = false];
180 // Weight of end state
181 optional double weight_end_state = 29 [default = 0.0];
182 // Weight of the slack variables
183 optional double weight_slack = 30 [default = 0.0];
184}
185
186message IpoptConfig {
187 // Ipopt log print level
188 optional int32 ipopt_print_level = 1;
189 // Parameter for representing a percentage of the total available memory that
190 // will be allocated to MUMPS
191 optional int32 mumps_mem_percent = 2;
192 // Parameter for controling the pivot tolerance for the MUMPS linear solver
193 optional double mumps_pivtol = 3;
194 // Maximum number of iterations allowed for the optimization process
195 optional int32 ipopt_max_iter = 4;
196 // Tolerance for convergence
197 optional double ipopt_tol = 5;
198 // Tolerance for constraint violations
199 optional double ipopt_acceptable_constr_viol_tol = 6;
200 // Minimum allowed perturbation for the Hessian matrix during the optimization
201 // process. It ensures that the Hessian matrix is appropriately regularized,
202 // which can help with numerical stability
203 optional double ipopt_min_hessian_perturbation = 7;
204 // Regularization value for the Jacobian matrix during the optimization
205 // process. It helps stabilize the numerical calculations by adding a small
206 // amount of artificial noise to the Jacobian
207 optional double ipopt_jacobian_regularization_value = 8;
208 // If Ipopt will print timing statistics to the console
209 optional string ipopt_print_timing_statistics = 9;
210 // Value of alpha for the constraint multipliers. It typically requires
211 // calibration and depends on the specific problem being solved
212 optional string ipopt_alpha_for_y = 10;
213 // if Ipopt should recalculate the constraint multipliers during the
214 // optimization process
215 optional string ipopt_recalc_y = 11;
216 // Initial value for the barrier parameter used in Ipopt's barrier algorithm
217 optional double ipopt_mu_init = 12 [default = 0.1];
218 // ipopt barrier parameter, default 0.1
219}
220
221// Dual variable configs for OSQP
222message OSQPConfig {
223 // Parameter deciding mode of initial problem solving, usually no need to change
224 optional double alpha = 1 [default = 1.0];
225 // Tolerance for absolute error
226 optional double eps_abs = 2 [default = 1.0e-3];
227 // Tolerance for relative error
228 optional double eps_rel = 3 [default = 1.0e-3];
229 // Maximum iteration times for stopping optimization
230 optional int32 max_iter = 4 [default = 10000];
231 // If "polishing" step will be performed after finding the preliminary solution
232 optional bool polish = 5 [default = true];
233 // If print debug log of osqp
234 optional bool osqp_debug_log = 6 [default = false];
235}
236
238 // Interpolation distance between two anchor points
239 optional double interpolated_delta_s = 1 [default = 0.1];
240 // The number of attempts during re-anchoring
241 optional int32 reanchoring_trails_num = 2 [default = 50];
242 // Parameter for controling the uncertainty of the position during re-anchoring
243 optional double reanchoring_pos_stddev = 3 [default = 0.25];
244 // Parameter for controling the uncertainty of the length during re-anchoring
245 optional double reanchoring_length_stddev = 4 [default = 1.0];
246 // Flag to indicate if estimate bound
247 optional bool estimate_bound = 5 [default = false];
248 // The default bound
249 optional double default_bound = 6 [default = 2.0];
250 // The minimum size of the vehicle, used to calculate some restrictions
251 optional double vehicle_shortest_dimension = 7 [default = 1.04];
252 // Config of FEM (finite element method) position deviation smoother
253 optional FemPosDeviationSmootherConfig fem_pos_deviation_smoother_config = 8;
254 // The collision reduction ratio may be used to adjust the effectiveness of
255 // collision avoidance strategies
256 optional double collision_decrease_ratio = 9 [default = 0.9];
257 // TODO(QiL, Jinyun): Merge following with overall config for open space
258 // Maximum speed for moving forward
259 optional double max_forward_v = 10 [default = 2.0];
260 // Maximum speed for moving backward
261 optional double max_reverse_v = 11 [default = 2.0];
262 // Maximum acceleration for moving forward
263 optional double max_forward_acc = 12 [default = 3.0];
264 // Maximum acceleration for moving backward
265 optional double max_reverse_acc = 13 [default = 2.0];
266 // Maximum jerk
267 optional double max_acc_jerk = 14 [default = 4.0];
268 // Time step
269 optional double delta_t = 15 [default = 0.2];
270 // Config for speed optimization
271 optional SpeedOptimizerConfig s_curve_config = 16;
272}
273
274// Dual variable configs for warm starting distance approach trajectory
275// smoothing
277 // Parameter for weighing the weights between the two variables
278 optional double weight_d = 1 [default = 1.0];
279 // Config of ipopt
280 optional IpoptSolverConfig ipopt_config = 2;
281 // qp warm up mode
282 optional DualVariableMode qp_format = 3;
283 // Minimum safety distance
284 optional double min_safety_distance = 4 [default = 0.0];
285 // If print debug information of osqp
286 optional bool debug_osqp = 5 [default = false];
287 // Parameter for adjusting adjust the weight between the objective function
288 // and constraint conditions
289 optional double beta = 6 [default = 1.0];
290}
291
298
299// Ipopt configs
301 // Log print level of ipopt
302 optional int32 ipopt_print_level = 1;
303 // Percentage of the total available memory that will be allocated to MUMPS
304 optional int32 mumps_mem_percent = 2;
305 // Pivot tolerance for the MUMPS linear solver
306 optional double mumps_pivtol = 3;
307 // Maximum number of iterations allowed for the optimization process
308 optional int32 ipopt_max_iter = 4;
309 // Tolerance for convergence
310 optional double ipopt_tol = 5;
311 // // Tolerance for constraint violations
312 optional double ipopt_acceptable_constr_viol_tol = 6;
313 // Minimum allowed perturbation for the Hessian matrix during the optimization
314 // process. It ensures that the Hessian matrix is appropriately regularized,
315 // which can help with numerical stability
316 optional double ipopt_min_hessian_perturbation = 7;
317 // Regularization value for the Jacobian matrix during the optimization
318 // process. It helps stabilize the numerical calculations by adding a small
319 // amount of artificial noise to the Jacobian
320 optional double ipopt_jacobian_regularization_value = 8;
321 // If Ipopt will print timing statistics to the console
322 optional string ipopt_print_timing_statistics = 9;
323 // Value of alpha for the constraint multipliers. It typically requires
324 // calibration and depends on the specific problem being solved
325 optional string ipopt_alpha_for_y = 10;
326 // if Ipopt should recalculate the constraint multipliers during the
327 // optimization process
328 optional string ipopt_recalc_y = 11;
329 // Initial value for the barrier parameter used in Ipopt's barrier algorithm
330 optional double ipopt_mu_init = 12 [default = 0.1];
331 // ipopt barrier parameter, default 0.1
332}