0


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

文章目录

前言

Apollo星火计划课程链接如下
星火计划2.0基础课:https://apollo.baidu.com/community/online-course/2
星火计划2.0专项课:https://apollo.baidu.com/community/online-course/12

1. Apollo决策技术详解

1.1 Planing模块运行机制

在这里插入图片描述
星火计划学习笔记——第七讲自动驾驶规划技术原理1

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

●目的
○ 保障无人车的行车安全并且遵守交规
○ 为路径和速度的平滑优化提供限制信息
● 决策的输入
○ Routing信息
○ 道路结构,比如当前车道,相邻车道,汇入车道,路口等信息
○ 交通信号和标示,比如红绿灯,人行横道,Stop Sign,Keep Clear等
○ 障碍物状态信息,比如障碍物类型,大小,和速度
○ 障碍物预测信息,比如障碍物未来可能的运动轨迹
● 决策的输出
○ 路径的长度以及左右边界限制
○ 速度限制边界
○ 位置限制边界
在这里插入图片描述
Apollo 决策的5个步骤

1.2.1参考路径 Reference Line

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

在这里插入图片描述
路径边界

1.2.2 交规决策 Traffic rule process

主要作用:
处理红绿灯,Stop Sign, 人行横道等交通规则
输入信息:
○ 参考路径
○ 高精地图
○ 信号灯状态
输出:
○ 虚拟墙
在这里插入图片描述
判断是否需要生成停止墙。

1.2.3 路径决策 Path decider

在这里插入图片描述
    首先判断是否要进行换道操作。若有许多条参考路径,且车辆未处于最高优先级上,表明车辆有换道的需求。接着判断当前道路状况是否可以换道,若可以换道,则路径决策生成一个换道边界,若不可以换道,则会生成一个道内的边界。若车辆没有换道的需求,则需要判断车辆是否需要借道避让。借道避让有两个判断条件,主车所在的车道是否有足够的宽度可以避让以及前方是否有静止的障碍物。若确认可以换道,同样会生成两个决策。
    ps:在路径决策时,一般只考虑静态障碍物,对于动态障碍物,则由速度规划模块考虑。
在这里插入图片描述

1.2.4 速度决策 Speed decider

对车辆速度限制的因素:
● 道路限速
● 路径周边行人,自行车等
● 通过人行横道时
● 减速带
● 路径上过近的车辆,较为拥挤的道路
● 借道避让时
● 换道时
● 更多…
在这里插入图片描述
速度决策的流程

    在车辆行驶过程中,需要对车辆的速度进行许多限制。在得到路径边界之后,通过路径规划器,得到平滑的路径曲线,之后再对曲线进行路径决策。

    速度决策的流程:对当前路径产生一个或多个速度边界,再将其集成一个速度边界的集合,生成一个ST图。用ST图得到时间上的位置边界。利用速度边界和位置边界可以进行速度决策,从而生成轨迹。

1.2.5 Planing模块运行流程

在这里插入图片描述

1.2.6 场景 Scenarios

在这里插入图片描述
依据场景来做决策和规划有以下两个优点,
1)场景之间互不干扰,有利于并行开发和独立调参。
2)功能之间相互解耦,有利于开发者开发自己的特有场景。

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

2.1 交规的配置

在这里插入图片描述

    Apollo对 交 通 规 则 的 处 理 是 通 过

for

循 环 来 遍 历 配 置 文 件

/apollo/modules/planning/conf/traffic_rule_config.pb.txt

中设置的交通规则,处理后相关信息存入

ReferenceLineInfo

中。在这里插入图片描述

2.2 交规决策的运行流程

在这里插入图片描述
依托输入信息来判断选择哪个场景

在这里插入图片描述交通规则的运行流程

2.2.1 Traffic Light场景的进入

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

2.2.2 Traffic Light场景的stage

在这里插入图片描述

2.2.3 APPROACH阶段

在这里插入图片描述

2.2.4 CRUISE阶段

在这里插入图片描述
CRUISE阶段主要用以判断,当CRUISE阶段结束时,就会恢复到lanefollow阶段

2.2.5 交通灯通过检测

在这里插入图片描述

2.2.6 停止墙生成

在这里插入图片描述

3. 交通灯场景仿真实现

在这里插入图片描述

3.1 云实验

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

3.1.1 创建场景

系统场景: Go Straight (Intersection w/ Lights)
场景ID:Sunnyvale_3
场景描述:主车在路口红灯时直行
在这里插入图片描述

3.1.2 启动dreamview

    Dreamview 是Apollo提供的可视化交互界面,开发者可通过Dreamview对车辆硬件、各自动驾驶模块的状态进行实时监测与操作。同时提供PnC monitor、Console 等调试工具可以快速帮助开发者实现对自动驾驶开发的过程调试。
在这里插入图片描述

bash scripts/apollo_neo.sh bootstrap

3.1.3 场景同步

在这里插入图片描述

3.1.4 选择需要调试场景

在这里插入图片描述

3.1.5 实验流程

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

3.2 WSL2下Apollo-EDU-pre运行

启动docker:

sudoservicedocker start

在这里插入图片描述

启动 Apollo docker环境:

bash scripts/edu_launcher.sh start

在这里插入图片描述输入以下命令进入 Apollo:

bash scripts/edu_launcher.sh enter

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

bash scripts/apollo_neo.sh bootstrap

在这里插入图片描述
打开Sim Control 和 PnC Monitor
在这里插入图片描述
选择场景
在这里插入图片描述
选好模块
在这里插入图片描述
未更改配置时启动后停止距离为1m
在这里插入图片描述
注意运行时Scenario History中的信息
在这里插入图片描述
打开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);}}

停止距离的配置文件
在这里插入图片描述
停止距离更改为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}}

本文转载自: https://blog.csdn.net/sinat_52032317/article/details/128371101
版权归原作者 yuan〇 所有, 如有侵权,请联系我们删除。

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

还没有评论