Apollo 10.0
自动驾驶开放平台
README_cn

planning-scenario-emergency-stop

简介

EmergencyStopScenario: 紧急停车场景,车辆在行驶过程中如果收到PadMessage命令“PadMessage::STOP”,主车计算停车距离,直接停车。

IsTransferable: 场景切入条件

  1. 接收到PadMessage命令为 PadMessage::STOP

Stages

阶段名 类型 描述
EMERGENCY_STOP_APPROACH apollo::planning::EmergencyStopStageApproach 根据最大减速度计算刹车距离,主车减速刹车,减速度达到阈值后,退出该阶段
EMERGENCY_STOP_STANDBY apollo::planning::EmergencyStopStageStandby 主车保持紧急停车状态,PadMessageSTOP 切换至其他状态后退出该阶段

1. EMERGENCY_STOP_APPROACH

EmergencyStopStageApproach : 该阶段用于主车急停前减速,主车速度达到阈值后退出。

Process: 该阶段处理的主函数,输入为规划初始点 planning_init_pointFrame;输出为当前阶段处理状态StageResult

  • 主车灯光设置:打开危险报警闪光灯frame->mutable_reference_line_info()->front().SetEmergencyLight()
  • 构建虚拟障碍物:根据规划计算的停车点,构建id为EMERGENCY_STOP的虚拟障碍物。
  • ExecuteTaskOnReferenceLine:输入为规划初始点planning_init_pointFrame信息,按照该stage配置的task列表,依次进行规划。
  • 检查主车状态:检查主车是否减速达到目标速度。如果减速达到目标速度,进入FinishStage,结束当前Stage,进入EMERGENCY_STOP_STANDBY阶段。如果未达到目标速度,则仍处于EMERGENCY_STOP_APPROACH阶段,返回状态值StageStatusType::RUNNING

FinishStage: 该阶段的退出函数。

  • 退出EMERGENCY_STOP_APPROACH阶段,进入EMERGENCY_STOP_STANDBY阶段。

2. EMERGENCY_STOP_STANDBY

EmergencyStopStageStandby : 该阶段用于主车保持紧急停车状态。

Process: 该阶段处理的主函数,输入为规划初始点 planning_init_pointFrame;输出为当前阶段处理状态StageResult

  • 构建虚拟障碍物:根据规划计算的停车点,构建id为EMERGENCY_PULL_OVER的虚拟障碍物。
  • ExecuteTaskOnReferenceLine:输入为规划初始点planning_init_pointFrame信息,按照该stage配置的task列表,依次进行规划。
  • 检查PadMessage:PadMessageSTOP 切换至其他状态后,进入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

模块

EmergencyStopScenario插件

apollo::planning::EmergencyStopScenario

配置

文件路径 类型/结构
说明
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组件的配置文件

使用方式

配置加载 EmergencyStopScenario 插件
  • modules/planning/planning_component/conf/planning_config.pb.txt文件中增加standard_planning_config的配置,配置使用当前场景插件。
    shell
    # 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>

配置 EmergencyStopScenario 参数

文档意见反馈

如果您在使用文档的过程中,遇到任何问题,请到我们在【开发者社区】建立的 反馈意见收集问答页面,反馈相关的问题。我们会根据反馈意见对文档进行迭代优化。