文章目录

  • 前言
  • 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运行

前言

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:

sudo service docker 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 decisionADEBUG << "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_LIGHTenabled: truetraffic_light {stop_distance: 2.1max_stop_deceleration: 4.0}
}

这个是人行道的修改配置

config: {rule_id: CROSSWALKenabled: truecrosswalk {stop_distance: 2.1max_stop_deceleration: 6.0min_pass_s_distance: 1.0max_valid_stop_distance: 3.5expand_s_distance: 2.0stop_strict_l_distance: 6.0stop_loose_l_distance: 8.0stop_timeout: 4.0}
}

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

  1. Apollo星火计划学习笔记——Apollo开放空间规划算法原理与实践

    文章目录 前言 1. 开放空间规划算法总体介绍 1.1 Task: OPEN_SPACE_ROI_DECIDER 1.2 Task: OPEN_SPACE_TRAJECTORY_PROVIDER 1. ...

  2. Apollo星火计划学习笔记——Apollo路径规划算法原理与实践

    文章目录 前言 1. 路径规划算法总体介绍 1.1 Task: LANE_CHANGE_DECIDER 1.2 Task: PATH_REUSE_DECIDER 1.3 Task: PATH_BORR ...

  3. Apollo星火计划学习笔记——参考线平滑算法解析及实现(以U型弯道场景仿真调试为例)

    文章目录 1. Apollo参考线介绍 1.1 参考线的作用 1.2 导航规划的路线 1.3 为什么需要重新生成参考线 1.4 ReferenceLine数据结构 1.5 ReferencePoint ...

  4. Apollo星火计划学习笔记——Apollo速度规划算法原理与实践

    文章目录 1. 速度规划算法总体介绍 1.2 不同场景下的ST图 1.2.1 主车向前匀速行驶 1.2.2 主车先向前匀速行驶,后停车 1.2.3 主车跟随前车行驶 1.2.4 主车跟随前车刹停 1. ...

  5. Apollo进阶课程㉖丨Apollo规划技术详解——Understand More on the MP Difficulty

    原文链接:进阶课程㉖丨Apollo规划技术详解--Understand More on the MP Difficulty EM是一个在已知部分相关变量的情况下,估计未知变量的迭代技术,EM的算法流程 ...

  6. Apollo进阶课程㉔丨Apollo 规划技术详解——Motion Planning Environment

    原文链接:进阶课程㉔丨Apollo 规划技术详解--Motion Planning Environment 自动驾驶汽车核心技术包括环境感知.行为决策.运动规划与控制等方面.其中,行为决策系统.运动规 ...

  7. Apollo进阶课程㉒丨Apollo规划技术详解——Motion Planning with Autonomous Driving

    原文链接:进阶课程㉒丨Apollo规划技术详解--Motion Planning with Autonomous Driving 自动驾驶车辆的规划决策模块负责生成车辆的行驶行为,是体现车辆智慧水平的 ...

  8. Apollo进阶课程㉑丨Apollo规划技术详解——Basic Motion Planning and Overview

    原文链接:进阶课程㉑丨Apollo规划技术详解--Basic Motion Planning and Overview 运动规划(Motion Planning)就是在给定的位置A与位置B之间为机器人 ...

  9. Apollo进阶课程㉕丨Apollo规划技术详解——Optimization Inside Motion Planning

    原文链接:进阶课程㉕丨Apollo规划技术详解--Optimization Inside Motion Planning 在自动驾驶软件的开发中,运动规划是最核心的模块之一.它将综合感知.定位和地图等 ...

最新文章

  1. HarmonyOS 修改App 的name
  2. SQL INNER JOIN LEFT JOIN RIGHT JOIN 笛卡尔积
  3. 我的人生,需要一个计划
  4. java应用的优化【转】
  5. 注解赋值可以是方法_P7笔记,把Spring注解讲的明明白白
  6. Pycharm中的Debug工具以及简单的使用方法
  7. 2023年考研之路或将更难
  8. java高级mysql面试题_Java高级面试题
  9. 大数据技术周报第 006 期
  10. 实现让两个DIV横向排列方法揭秘
  11. Linux 命令(25)—— cp 命令
  12. 如何修改python代码_解决如何去除Python代码前行号的方法
  13. 菠萝在线完成数千万元A轮融资,盛力投资领投
  14. [原创]差分放大器阻抗匹配计算+阻抗计算小工具
  15. X-Scan-v3.3 漏洞扫描工具使用
  16. VBA学习笔记3-数据结构类型SortedList
  17. 云客服让每一个企业客户都成为座上宾
  18. Django笔记 CMS框架Mezzanine 2
  19. 一文通读SAP BRFPlus
  20. 学生成绩管理系统E-R图

热门文章

  1. 10 款下载量最高的 Mac 软件分享
  2. 在vuex中,不经过mutations能直接修改state中的数据吗?为什么
  3. PythonStock(38)全栈股票系统:Python全栈股票系统,使用vue进行前端界面开发,修改接口可以展示股票数据,持续开发中。
  4. PowerDesigner---数据库设计软件的介绍与使用
  5. java setscale_BigDecimal.setScale(int newScale, int roundingMode)方法实例
  6. js 64进制转换方法 URL参数压缩
  7. android 背诵方歌项目
  8. 【翻译】可重复可复现的机器学习在生产中的12个要素
  9. 笔经-腾讯2018暑期实习生-数据分析岗笔试经历
  10. python excel 分组统计一个时间段内的数据,如三个月内,但不限于某个时间起止,是任何三个月的长度内