本文章为Apollo星火计划PNC专项课程笔记,所有内容为百度所有。

星火计划2.0基础课:https://apollo.baidu.com/community/online-course/2
星火计划2.0专项课:https://apollo.baidu.com/community/online-course/12

本节课所要实现的场景

自动驾驶车辆在十字路口处理红绿灯的场景 。

整个apollo规划模块是一个双层状态机的架构,整个架构里包含场景,stage,task任务

那使用红绿灯的场景去分析,怎样可以看到这个架构呢?

apollo规划模块的核心思想,就是双层状态机的机制,在该机制之下,有三个核心的概念,场景,步骤,任务。

task中包含

第一种Onlane planning(默认规划模式,车道线规划)主要在城区, 高速公路场景的处理。

第二种是open space,主要针对一些没有车道线的路况,比如自主泊车,或者狭窄路况的调头。

每个stage都包含了路径决策,路径规划,速度决策,速度规划。

本节课重点关注这之中的决策技术是如何实现的。

决策部分的基本作用:

首先要保障无人车的驾驶安全,第二是要遵守交通规则。

然后要为路径和速度的平滑提供限制信息。

为了实现这个目的,决策的模块为无人车提供了各种各样的限制信息:

为了确保这些信息的准确度,决策模块几乎是利用了所有和无人车相关的环境信息,比如routing的信息,道路的结构,交通信号灯,障碍物的状态,包括预测的信息,这一切都可以为决策模块提供一个输入,从而保证决策模块的准确输出。

apollo的决策模块主要实现了以下五个功能:

接下来分别介绍这五个部分:

一、参考路径

参考路径是根据车辆的起始点和重点规划的一条没有障碍物的默认的行驶路径,交规决策、路径决策和速度决策都是基于参考线去实现的。

同时参考线也用于表达换道的需求。

参考路径实现的方法是有很多的,apollo目前是根据routing的输出去找到对应道路的中心线。

二、交通决策

有了参考路径之后结合高精地图以及信号灯状态的输入,主车会沿着参考线遍历这条路上所有的交通灯,遍历之后,根据交规的决策去判断车辆是不是需要在路口处生成停止墙。如果需要会生成停止墙,如果不需要会处理对应的决策信息,这块就是交规决策的处理方法。

三、路径决策

首先到达路径后,需要去判断是不是需要进行换道的操作,如果有很多参考路径,并且车辆不是在优先级比较高的参看路径上,就表明有换道的需求。有了这样的需求后需要去判断,当前路况是不是可以换道,如果可以换道的话,路径决策就会产生一个换道的路径边界,否则会产生一个道内的边界;如果确定当前没有一个换道的需求,那么路径决策会去判断,是否需要一个借道的避让,做避让的条件有两个:主车在当前行驶道路上的宽度是否足够,让车辆做换道,第二个,前方如果有障碍物的话,是否是静态障碍物,如果确定要去做换道的话,还会产生两个决策.

在路径决策时大部分只考虑静止的障碍物,关于动态障碍物,是在速度规划的时候需要去考虑的一个点。

边界问题:

二和三的区别在于默认优先级路径进行了更换。

四、速度决策

行驶中很多情况是为了遵守交规,保证安全,所以需要对速度做很多限制,比如在行驶过程中,路边有人的情况下,去做减速行驶;做借道绕行的时候,车速也要降低,这些环节都需要使用到速度决策。

速度决策是如何实现的呢?

当从上一部分路径决策处拿到路径边界后,就会调用路径优化器,去得到一个平滑的路径,有了这个平滑的路径之后,就可以进行速度的决策,速度决策的大体流程就是上图所画内容。

首先对当前路径上去产生一个或多个速度限制的边界,然后把这些速度限制的边界最终做一个集成,得到一个最终路径上的速度的行驶边界,得到该边界之后,再利用ST图(在PNC monitor中可以看到),去得到时间上位置的限制边界,通过速度边界和位置边界,最终去得到平滑的一个速度规划。

完成速度规划后,就可以生成规划的轨迹了。

以下是planning模块的运行流程:

这个图也是值得深入研究的,可以结合之前的材料将上图梳理一遍。

apollo的planning模块实际上是决策和规划一块做的。

接下来来了解场景的概念。

场景的概念是从apollo 3.5提出的:

场景的定义和划分是没有特别的规定的,只要合理即可。

大体可以把场景分为两类,第一类是lane follow的场景,第二类是lane breaking,其分为路口,临时借道,换道,这就是场景大概的思路,根据场景去划分,有两个优点:每个场景是互不干扰的,有利于去做并行的开发和独立的调参,同时功能上也能实现相互的解耦,有利于开发者去开发自己的场景,有了场景的设计后,二次开发就会相对容易一点。

以下介绍交规决策场景的实现机制。

交规在系统中总共定义了九种交规的类型:

apollo对交规的处理是通过for循环遍历一个交规的配置文件

这个配置文件中就存储了所有跟交规相关的配置,比如车辆在行驶到红绿灯场景的时候停止在停止线多少m的范围之内,其停止距离,停止时间都需要在交规配置里面去做配置,当配置完成之后,其处理信息就会存储到

之中,作为一个输入提供给后续的模块。

上述的reference_line_info作为输入,除了刚才的配置以外,还包含了很多其他的信息:车道信息、障碍物ID、地图重合信息….

当车辆靠近交叉路口的时候,场景管理器就会去判断是不是有车道线和交通信号有重合,有重合会去选择进入场景,当选择场景的时候需要根据以上的信息去判断应该进入哪个场景,然后再生成对应的stage(Approach、Cruise),每个stage又会对应很对task。其他交规也是大体这样的形式。

第一步:场景的进入

首先判断车道线跟交通信号是否有重合,有重合就表示进入交叉路口的场景

然后再根据车道线和交通信号具体的情况,比如高精地图上红绿灯的状态信息,如果有,就进入有保护的场景。

所以进入场景就由以上两部分代码完成,第一部分:判断是否是进入交叉路口的场景,第二部分,根据详细的信息去判断场景是有保护的场景还是有保护的场景,所以这是场景进入的大概的方法。

当进入场景之后,需要执行对应的stage文件。

可以通过配置文件查看,traffic_light中实际上对应了两个场景:靠近阶段、进入交叉路口阶段

同时,这两个stage都定义了不同的优先级:

可以看到,Approach的优先级是高于cruise的,所以场景是先去执行靠近阶段,再去执行进入交叉路口阶段。

可以在上述代码中看到各阶段的执行流程(上述代码展示了这两个阶段的注册流程)。

那么以上两个阶段是如何进行切换的呢?

首先做一个判断:主车离停止线的距离小于一个值之后就会进入Traffic_light的场景,这个值的配置就在交通灯的配置文件中

当满足这个值之后就会关注交通信号灯的一个状态,根据状态去触发不同的行为,比如红灯对应停。

进入交叉路口之后,就会进入cruise阶段,首先做一个判断,当车辆完全通过交叉路口之后,cruise阶段就会结束,再恢复lane follow阶段。

在这两个阶段中间,会进行交通灯的检测,即车辆在碰到红灯或黄灯后需要停车等待,假设车辆遇到红灯后会生成停止墙,停止墙到停止线的距离,也是通过刚才的配置文件进行设置。

其实现方法:

这个函数的入口参数,stop_distance()就是通过配置文件实现的。

交规这块的大致流程就是:

当车辆行驶到红绿灯路口之后,会进入到approach阶段,进入之后,系统会根据红绿灯状态去判断,是不是需要在当前形成一个停止墙(如果红灯就生成,如果是绿灯就同行),然后进入下一阶段。当整个阶段完成之后,再恢复到默认的阶段。

可以通过上述一个场景的分析掌握交规的处理流程,掌握之后可以依次分析一下其他的交规场景,看看它们的决策流程是什么样的,分析完成之后,可以进一步的去分析路径决策包括速度决策里边是怎么实现的。

(上述流程并没有讲解task阶段,每个stage都要去经历路径决策,路径优化,速度决策,速度优化,整个的过程,这些task会在后面的课程中会讲到)

1.决策技术解析与实现相关推荐

  1. 单目摄像头光学图像测距_自动驾驶汽车传感器技术解析——车载摄像头

    智能驾驶汽车之眼 车载摄像头是实现众多预警.识别类ADAS功能的基础.在众多ADAS功能中,视觉影像处理系统较为基础,而摄像头又是视觉影像处理系统的输入,因此车载摄像头对于智能驾驶必不可少. 摄像头可 ...

  2. 红外倒车雷达原理图_自动驾驶汽车传感器技术解析—毫米波雷达

    毫米波雷达的优势在全天候工作,即不良天气.夜晚等环境下可以发挥作用,而激光雷达会受雨雪雾霾的影响:并且毫米波雷达测距远,200 米以上都轻易胜任,但是分辨率低.较难成像,无法识别图像. 由于毫米波雷达 ...

  3. 《TensorFlow技术解析与实战》——1.2 什么是深度学习

    本节书摘来异步社区<TensorFlow技术解析与实战>一书中的第1章,第1.2节,作者:李嘉璇,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.2 什么是深 ...

  4. 特斯拉FSD技术解析

    特斯拉FSD技术解析 特斯拉疯狂进化的FSD 特斯拉的FSD Beta9(完全自动驾驶测试版9.0)已经在美国开始了全面推送,这标志着特斯拉已经正式迈入了全自动驾驶时代,虽然还不能做到老司机一样完美处 ...

  5. 计算机辅助决策系统基本原理,计算机辅助决策设计分析解析系统.ppt

    计算机辅助决策设计分析解析系统 计算机辅助决策设计分析系统 面临的困惑 CADDAS的对策 CADDAS简介 CADDAS系统的主要特点 系统技术结构图 规划设计及使用的灵活性 操作的简便性 功能扩展 ...

  6. 城市三维地理信息可视化 技术解析

    一.三维地理信息系统分析空间数据的科学工具 三维地理信息系统,即三维GIS,是对包括大气层在内的地球表层,与地理有关的数据进行采集.储存.管理.运算.分析.显示和描述的技术系统. 基于三维GIS将现实 ...

  7. CPU三级缓存技术解析

    CPU三级缓存技术解析 cpu存取数据 cpu存取数据大致可以认为是下图的流程(此处图比较简单) cpu拿到需要的内存地址,之后这个地址会被mmu转换成真正的物理地址,接下来会去查接下来查L1 cac ...

  8. 服务器BMC、BIOS、IPMI、UEFI技术解析

    服务器BMC.BIOS.IPMI.UEFI技术解析 以BIOS为核心的固件产业,是信创产业链的重要组成部分,可被誉为信创产业的"山海关".在计算机体系中,BIOS 有着比操作系统更 ...

  9. ITS智能交通监控系统技术解析

    ITS智能交通监控系统技术解析 红灯,逆行,变道 车辆抓拍和车速检测 非法停车和交通流量检测 交叉路口违法检测 发生碰撞的交叉口是智能交通管理. 机动执法 当你需要一个可以移动的系统时,会跟着你移动. ...

最新文章

  1. linux shell创建进程数,[原创]bash shell的并发实现及进程数的控制
  2. [NOI2005]维护数列
  3. MYSQL explain详解[转载]
  4. Java 字符串,byte[],16进制的字符串互转
  5. JavaScript数据结构与算法——栈详解
  6. 基于python的聊天室_Python实现文字聊天室
  7. android 小黄车首页,android采用MVP漫画APP、适配刘海屏、小黄车主界面、录音波浪动画、综合APP等源码...
  8. C++编译问题-检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
  9. Spring生态系统(Spring可能大家都在用,很少去关注整体架构)
  10. 深度相机原理及坐标系转换
  11. PCIE 转 spi 总线
  12. scikit-learn初级
  13. Unity3D播放ogv格式的视频
  14. 室内外地图切换(室内基于ibeacons三点定位)
  15. 努比亚 更新服务器设置在哪个文件夹,努比亚nubia Z7 mini官方系统升级更新教程和方法...
  16. 如何去远程控制公司电脑 这三样必备一样也不能少
  17. 微型计算机控制系统分几类,微型计算机控制技术 潘新民版 答案
  18. python内置函数 blool()
  19. 阻尼振动与无阻尼电磁振动(大学物理笔记)
  20. oracle如何添加小数点,Oracle处理保留小数点

热门文章

  1. 多店积分通用问题,解决方式
  2. eclipse中文版本转英文版
  3. 爱奇途——追求技术,提升自我
  4. linux 触摸屏驱动课程设计,linux驱动编写(触摸屏驱动)
  5. netbeans+j2mepolish 环境下开发黑莓(BlackBerry) 程序
  6. office提示“你的许可证并非正版,你可能是盗版软件的受害者“解决办法
  7. excel 根据单元格内容自动调整列宽
  8. 卡方分布、t分布 和F分布
  9. 用网络进行内核调试 VMware+windbg
  10. 轻松构建微服务之分库分表