modules/planning/scenarios/emergency_stop/README_cn.md
EmergencyStopScenario: 紧急停车场景,车辆在行驶过程中如果收到PadMessage命令“PadMessage::STOP”,主车计算停车距离,直接停车。
PadMessage::STOP| 阶段名 | 类型 | 描述 |
|---|---|---|
EMERGENCY_STOP_APPROACH | apollo::planning::EmergencyStopStageApproach | 根据最大减速度计算刹车距离,主车减速刹车,减速度达到阈值后,退出该阶段 |
EMERGENCY_STOP_STANDBY | apollo::planning::EmergencyStopStageStandby | 主车保持紧急停车状态,PadMessage从 STOP 切换至其他状态后退出该阶段 |
EmergencyStopStageApproach : 该阶段用于主车急停前减速,主车速度达到阈值后退出。
Process: 该阶段处理的主函数,输入为规划初始点 planning_init_point、Frame;输出为当前阶段处理状态StageResult
frame->mutable_reference_line_info()->front().SetEmergencyLight()。EMERGENCY_STOP的虚拟障碍物。planning_init_point、Frame信息,按照该stage配置的task列表,依次进行规划。FinishStage,结束当前Stage,进入EMERGENCY_STOP_STANDBY阶段。如果未达到目标速度,则仍处于EMERGENCY_STOP_APPROACH阶段,返回状态值StageStatusType::RUNNING。FinishStage: 该阶段的退出函数。
EMERGENCY_STOP_APPROACH阶段,进入EMERGENCY_STOP_STANDBY阶段。EmergencyStopStageStandby : 该阶段用于主车保持紧急停车状态。
Process: 该阶段处理的主函数,输入为规划初始点 planning_init_point、Frame;输出为当前阶段处理状态StageResult
EMERGENCY_PULL_OVER的虚拟障碍物。planning_init_point、Frame信息,按照该stage配置的task列表,依次进行规划。PadMessage从 STOP 切换至其他状态后,进入FinishStage,结束当前Stage;否则仍处于EMERGENCY_STOP_STANDBY阶段,返回状态值StageStatusType::RUNNING。FinishStage: 该阶段的退出函数。
EMERGENCY_STOP_STANDBY阶段, 进入EmergencyStopScenario场景。modules/planning/scenarios/emergency_stop/
├── BUILD
├── conf
│ ├── pipeline.pb.txt
│ └── scenario_conf.pb.txt
├── cyberfile.xml
├── emergency_stop_scenario.cc
├── emergency_stop_scenario.h
├── emergency_stop_scenario_test.cc
├── plugins.xml
├── proto
│ ├── BUILD
│ └── emergency_stop.proto
├── README_cn.md
├── stage_approach.cc
├── stage_approach.h
├── stage_approach_test.cc
├── stage_standby.cc
├── stage_standby.h
└── stage_standby_test.cc
apollo::planning::EmergencyStopScenario
| 文件路径 | 类型/结构 | <div style="width: 300pt">说明</div> |
|---|---|---|
modules/planning/scenarios/emergency_stop/conf/scenario_conf.pb.txt | apollo::planning::ScenarioEmergencyStopConfig | 场景的配置文件 |
modules/planning/scenarios/emergency_stop/conf/pipeline.pb.txt | apollo::planning::ScenarioPipeline | 场景的流水线文件 |
modules/planning/planning_component/conf/planning_config.pb.txt | apollo::planning::PlanningConfig | planning组件的配置文件 |
modules/planning/planning_component/conf/planning_config.pb.txt文件中增加standard_planning_config的配置,配置使用当前场景插件。
# modules/planning/planning_component/conf/planning_config.pb.txt
standard_planning_config {
planner_type: ......
planner_public_road_config {
......
scenario {
name: "EMERGENCY_STOP"
type: "EmergencyStopScenario"
}
......
}
}
modules/planning/scenarios/emergency_stop/conf/pipeline.pb.txt中编辑该场景下所有Stage,以及各Stage对应的Task列表。Stage插件,需要添加至modules/planning/scenarios/emergency_stop/plugins.xml。
# modules/planning/scenarios/emergency_stop/plugins.xml
<library path="modules/planning/scenarios/emergency_stop/libemergency_stop_scenario.so">
<class type="apollo::planning::EmergencyStopScenario" base_class="apollo::planning::Scenario"></class>
<class type="apollo::planning::EmergencyStopStageApproach" base_class="apollo::planning::Stage"></class>
<class type="apollo::planning::EmergencyStopStageStandby" base_class="apollo::planning::Stage"></class>
</library>
proto文件配置:modules/planning/scenarios/emergency_stop/proto/emergency_stop.protomodules/planning/scenarios/emergency_stop/conf/scenario_conf.pb.txt