星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

文章目录

  • 1. Apollo决策技术详解
    • 1.1 Planing模块运行机制
    • 1.2 Apollo决策功能的设计与实现
      • 1.2.1参考路径 Reference Line
      • 1.2.2 交规决策 Traffic rule process
      • 1.2.3 路径决策 Path decider
      • 1.2.4 速度决策 Speed decider
      • 1.2.5 Planing模块运行流程
      • 1.2.6 场景 Scenarios
  • 2. 交规决策场景实现机制
    • 2.1 交规的配置
    • 2.2 交规决策的运行流程
      • 2.2.1 Traffic Light场景的进入
      • 2.2.2 Traffic Light场景的stage
      • 2.2.3 APPROACH阶段
      • 2.2.4 CRUISE阶段
      • 2.2.5 交通灯通过检测
      • 2.2.6 停止墙生成
  • 3. 交通灯场景仿真实现
    • 3.1 云实验
      • 3.1.1 创建场景
      • 3.1.2 启动dreamview
      • 3.1.3 场景同步
      • 3.1.4 选择需要调试场景
      • 3.1.5 实验流程
    • 3.2 WSL2下Apollo-EDU-pre运行

1. Apollo决策技术详解

1.1 Planing模块运行机制

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第1张图片
星火计划学习笔记——第七讲自动驾驶规划技术原理1

1.2 Apollo决策功能的设计与实现

●目的
○ 保障无人车的行车安全并且遵守交规
○ 为路径和速度的平滑优化提供限制信息
● 决策的输入
○ Routing信息
○ 道路结构,比如当前车道,相邻车道,汇入车道,路口等信息
○ 交通信号和标示,比如红绿灯,人行横道,Stop Sign,Keep Clear等
○ 障碍物状态信息,比如障碍物类型,大小,和速度
○ 障碍物预测信息,比如障碍物未来可能的运动轨迹
● 决策的输出
○ 路径的长度以及左右边界限制
○ 速度限制边界
○ 位置限制边界
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第2张图片

Apollo 决策的5个步骤

1.2.1参考路径 Reference Line

● 没有障碍物情况下的默认行车路径
○ 参考路径需要保证连续和平滑 当前参考路径
参考路径也用于表达换道的需求
○ 目标参考路径(优先级高)
○ 当前参考路径(目标参考路径)
参考路径的一种实现方法
○ 根据Routing找到对应道路中心线
○ 对道路中心线进行平滑

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第3张图片

路径边界

1.2.2 交规决策 Traffic rule process

主要作用:
处理红绿灯,Stop Sign, 人行横道等交通规则
输入信息:
○ 参考路径
○ 高精地图
○ 信号灯状态
输出:
○ 虚拟墙
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第4张图片

判断是否需要生成停止墙。

1.2.3 路径决策 Path decider

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第5张图片
    首先判断是否要进行换道操作。若有许多条参考路径,且车辆未处于最高优先级上,表明车辆有换道的需求。接着判断当前道路状况是否可以换道,若可以换道,则路径决策生成一个换道边界,若不可以换道,则会生成一个道内的边界。若车辆没有换道的需求,则需要判断车辆是否需要借道避让。借道避让有两个判断条件,主车所在的车道是否有足够的宽度可以避让以及前方是否有静止的障碍物。若确认可以换道,同样会生成两个决策。
    ps:在路径决策时,一般只考虑静态障碍物,对于动态障碍物,则由速度规划模块考虑。
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第6张图片

1.2.4 速度决策 Speed decider

对车辆速度限制的因素:
● 道路限速
● 路径周边行人,自行车等
● 通过人行横道时
● 减速带
● 路径上过近的车辆,较为拥挤的道路
● 借道避让时
● 换道时
● 更多…
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第7张图片

速度决策的流程

    在车辆行驶过程中,需要对车辆的速度进行许多限制。在得到路径边界之后,通过路径规划器,得到平滑的路径曲线,之后再对曲线进行路径决策。
    速度决策的流程:对当前路径产生一个或多个速度边界,再将其集成一个速度边界的集合,生成一个ST图。用ST图得到时间上的位置边界。利用速度边界和位置边界可以进行速度决策,从而生成轨迹。

1.2.5 Planing模块运行流程

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第8张图片

1.2.6 场景 Scenarios

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第9张图片
依据场景来做决策和规划有以下两个优点,
1)场景之间互不干扰,有利于并行开发和独立调参。
2)功能之间相互解耦,有利于开发者开发自己的特有场景。

2. 交规决策场景实现机制

2.1 交规的配置

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第10张图片

    Apollo对 交 通 规 则 的 处 理 是 通 过for循 环 来 遍 历 配 置 文 件/apollo/modules/planning/conf/traffic_rule_config.pb.txt中设置的交通规则,处理后相关信息存入ReferenceLineInfo中。星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第11张图片

2.2 交规决策的运行流程

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第12张图片

依托输入信息来判断选择哪个场景

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第13张图片
交通规则的运行流程

2.2.1 Traffic Light场景的进入

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第14张图片

Traffic Light场景的进入这部分主要有两个部分:第一个部分通过Overlap重叠判断是否进入交叉路口,第二个部分通过由高精地图提供的车道信息以及交通信号等情况进入不同的场景,选择是有保护的场景还是无保护的场景。

2.2.2 Traffic Light场景的stage

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第15张图片

2.2.3 APPROACH阶段

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第16张图片

2.2.4 CRUISE阶段

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第17张图片

CRUISE阶段主要用以判断,当CRUISE阶段结束时,就会恢复到lanefollow阶段

2.2.5 交通灯通过检测

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第18张图片

2.2.6 停止墙生成

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第19张图片

3. 交通灯场景仿真实现

3.1 云实验

云实验地址——Apollo规划之交通灯场景仿真调试

3.1.1 创建场景

系统场景: Go Straight (Intersection w/ Lights)
场景ID:Sunnyvale_3
场景描述:主车在路口红灯时直行
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第20张图片

3.1.2 启动dreamview

    Dreamview 是Apollo提供的可视化交互界面,开发者可通过Dreamview对车辆硬件、各自动驾驶模块的状态进行实时监测与操作。同时提供PnC monitor、Console 等调试工具可以快速帮助开发者实现对自动驾驶开发的过程调试。
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第21张图片

bash scripts/apollo_neo.sh bootstrap

3.1.3 场景同步

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第22张图片

3.1.4 选择需要调试场景

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第23张图片

3.1.5 实验流程

按照Apollo规划之交通灯场景仿真调试实验的步骤进行即可。

3.2 WSL2下Apollo-EDU-pre运行

启动docker:

sudo service docker start

在这里插入图片描述

启动 Apollo docker环境:

bash scripts/edu_launcher.sh start

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第24张图片输入以下命令进入 Apollo:

bash scripts/edu_launcher.sh enter

启动DreamView(如果启动失败,可以尝试更改网络,用手机热点替代)

bash scripts/apollo_neo.sh bootstrap

星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第25张图片
打开Sim Control 和 PnC Monitor
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第26张图片
选择场景
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第27张图片
选好模块
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第28张图片
未更改配置时启动后停止距离为1m
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第29张图片
注意运行时Scenario History中的信息
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第30张图片
打开Vscode

在这里插入图片描述

code .

建立停止决策的代码

traffic_light.cc
    // build stop decision
    ADEBUG << "BuildStopDecision: traffic_light["
           << traffic_light_overlap.object_id << "] start_s["
           << traffic_light_overlap.start_s << "]";
    std::string virtual_obstacle_id =
        TRAFFIC_LIGHT_VO_ID_PREFIX + traffic_light_overlap.object_id;
    const std::vector<std::string> wait_for_obstacles;
    util::BuildStopDecision(virtual_obstacle_id, traffic_light_overlap.start_s,
                            config_.traffic_light().stop_distance(),
                            StopReasonCode::STOP_REASON_SIGNAL,
                            wait_for_obstacles,
                            TrafficRuleConfig::RuleId_Name(config_.rule_id()),
                            frame, reference_line_info);
  }
}

停止距离的配置文件
星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)_第31张图片
停止距离更改为2.1m

config: {
  rule_id: TRAFFIC_LIGHT
  enabled: true
  traffic_light {
    stop_distance: 2.1
    max_stop_deceleration: 4.0
  }
}

这个是人行道的修改配置

config: {
  rule_id: CROSSWALK
  enabled: true
  crosswalk {
    stop_distance: 2.1
    max_stop_deceleration: 6.0
    min_pass_s_distance: 1.0
    max_valid_stop_distance: 3.5
    expand_s_distance: 2.0
    stop_strict_l_distance: 6.0
    stop_loose_l_distance: 8.0
    stop_timeout: 4.0
  }
}

你可能感兴趣的:(Apollo星火计划,学习,人工智能,数据挖掘)