modules/planning/tasks/piecewise_jerk_speed_nonlinear/README_cn.md
PiecewiseJerkSpeedNonlinearOptimizer任务基于非线性规划在凸ST空间的速度规划算法
if (reference_line_info_->ReachedDestination()) {
return Status::OK();
}
const auto problem_setups_status =
SetUpStatesAndBounds(path_data, *speed_data);
const auto qp_smooth_status =
OptimizeByQP(speed_data, &distance, &velocity, &acceleration);
const auto path_curvature_smooth_status = SmoothPathCurvature(path_data);
const auto speed_limit_smooth_status = SmoothSpeedLimit();
基于非线性规划优化ST曲线
c++ const auto nlp_smooth_status = OptimizeByNLP(&distance, &velocity, &acceleration);
填充速度点满足轨迹时长要求
SpeedProfileGenerator::FillEnoughSpeedPoints(speed_data);
RecordDebugInfo(*speed_data, st_graph_data->mutable_st_graph_debug());
modules/planning/tasks/piecewise_jerk_speed_nonlinear/
├── BUILD
├── conf
│ └── default_conf.pb.txt
├── cyberfile.xml
├── piecewise_jerk_speed_nonlinear_ipopt_interface.cc
├── piecewise_jerk_speed_nonlinear_ipopt_interface.h
├── piecewise_jerk_speed_nonlinear_optimizer.cc
├── piecewise_jerk_speed_nonlinear_optimizer.h
├── plugins.xml
├── proto
│ ├── BUILD
│ └── piecewise_jerk_speed_nonlinear.proto
└── README_cn.md
apollo::planning::PiecewiseJerkSpeedNonlinearOptimizer
| 文件路径 | 类型/结构 | <div style="width: 300pt">说明</div> |
|---|---|---|
modules/planning/tasks/piecewise_jerk_speed_nonlinear/conf/default_conf.pb.txt | apollo::planning::PiecewiseJerkNonlinearSpeedOptimizerConfig | PiecewiseJerkNonlinearSpeedOptimizer的默认配置文件 |
| 文件路径 | <div style="width: 300pt">说明</div> |
|---|---|
modules/planning/planning_component/conf/planning.conf | planning模块的flag配置文件 |
算法参数配置定义于modules/planning/tasks/piecewise_jerk_speed_nonlinear/proto/piecewise_jerk_speed_nonlinear.proto
| acc_weight | 加速度权重 |
|---|---|
| jerk_weight | 加加速度权重 |
| kappa_penalty_weight | 曲率惩罚权重 |
| ref_s_weight | 参考位置权重 |
| ref_v_weight | 参考速度权重 |
| follow_distance_buffer | 跟车距离缓冲 |
modules/planning/planning_base/common/planning_gflags.cc中定义了用到的命令行参数,planning.conf中定义命令行参数值。
| flag | 描述 |
|---|---|
| FLAGS_longitudinal_jerk_lower_bound | 速度规划加加速度下边界 |
| FLAGS_longitudinal_jerk_upper_bound | 速度规划加加速度上边界 |
| FLAGS_planning_upper_speed_limit | 最大速度 |
| FLAGS_follow_min_distance | 最小跟车距离 |
| FLAGS_follow_time_buffer | 最小跟车时距 |
在 modules/planning/scenarios/xxxx/conf/pipeline.pb.txt 在期望增加PiecewiseJerkSpeedNonlinearOptimizer插件的scenarios xxxx中增加相应的配置,配置参数中name 表示task的名称,这个由用户自定义,表达清楚是哪个task即可,type 是task的类名称,即PiecewiseJerkSpeedNonlinearOptimizer。
task {
name: "PIECEWISE_JERK_SPEED_NONLINEAR"
type: "PiecewiseJerkSpeedNonlinearOptimizer"
}