写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝


🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~



文章目录

  • 引言
  • 一、自动驾驶级别划分
  • 1、级别划分依据
  • 2、核心模块作用类比
  • 二、决策规划算法模块三大构成
  • 1、导航规划模块
  • 2、行为规划模块
  • 3、运动规划算法
  • 三、目录与大纲
  • 四、仿真环境
  • 参考资料



引言

  各位小伙伴们大家好,本篇博客开一个新的系列,自动驾驶决策规划算法。内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。

  本篇博客是第一节序章,也就是整个教程的开篇,介绍决策规划的地位以及作用。


一、自动驾驶级别划分

【自动驾驶】决策规划算法概述_算法【自动驾驶】决策规划算法概述_移动机器人_02

级别

功能

L0

没有任何自动驾驶功能

L1

有横向和纵向自动驾驶功能,但横纵向无法联合作用

L2

横纵向可以联合作用,但驾驶员必须对驾驶所发生的一切情况负责

L3

横纵向可以联合作用,但对部分场景驾驶员不必负责

L4

大部分道路都可以自动驾驶,大部分场景不需要驾驶员负责

L5

完全自动驾驶

【自动驾驶】决策规划算法概述_算法【自动驾驶】决策规划算法概述_移动机器人_02

1、级别划分依据

有两个区分等级的关键因素:

  • 车辆可实现的功能
  • 驾驶员所负的责任

【自动驾驶】决策规划算法概述_决策规划_05【自动驾驶】决策规划算法概述_笔记_06 主要是功能区分,从 【自动驾驶】决策规划算法概述_移动机器人_07【自动驾驶】决策规划算法概述_移动机器人_02

【自动驾驶】决策规划算法概述_笔记_09【自动驾驶】决策规划算法概述_笔记_09 之间差距巨大,只要厂家宣称驾驶员需要负全责,那即使在功能上做到和 【自动驾驶】决策规划算法概述_笔记_11 一样的功能,但只要说驾驶员需要负全责,本质上还是 【自动驾驶】决策规划算法概述_笔记_09,而 【自动驾驶】决策规划算法概述_笔记_09

  比如车辆只有 定速巡航 + 车道保持,就是非常简单的可以横纵向联合控制的称为 【自动驾驶】决策规划算法概述_笔记_06

【自动驾驶】决策规划算法概述_移动机器人_02 级别的功能,但厂家宣称驾驶员必须负全责,即在自动驾驶过程中必须要盯着,准备随时接管,那么车也属于 【自动驾驶】决策规划算法概述_笔记_06

【自动驾驶】决策规划算法概述_笔记_06 进化成什么都能做的 【自动驾驶】决策规划算法概述_笔记_06,其重要模块就是决策规划算法。

【自动驾驶】决策规划算法概述_笔记_11 应该做的事情嘛?为什么是 【自动驾驶】决策规划算法概述_笔记_09 的模块?上面也说了,【自动驾驶】决策规划算法概述_笔记_11【自动驾驶】决策规划算法概述_笔记_09 就是有功能上的区别,但最重要的区别还是在于责任。【自动驾驶】决策规划算法概述_笔记_11 在大多数情况下都是车负责,驾驶员不需要接管, 而 【自动驾驶】决策规划算法概述_笔记_09

2、核心模块作用类比

模块

类比

感知模块

人的眼睛、耳朵

控制模块

人的小脑、双脚

决策规划模块

人的大脑

  功能越往上做越丰富、越复杂,决策规划的算法也就越重要,并且也越难。

【自动驾驶】决策规划算法概述_决策规划_25


二、决策规划算法模块三大构成

  整个决策规划算法模块一分为三。

1、导航规划模块

【自动驾驶】决策规划算法概述_决策规划_26【自动驾驶】决策规划算法概述_笔记_27

  特点:导航算法给出粗略的、大范围的路径,但路径不考虑如何避障,也不考虑车辆动力学约束,所以规划出来的路径是不规则的折线,导航算法一般只需执行一次,只有遇到大范围的拥堵、施工、偏航情况才会再次执行。

2、行为规划模块

  行为规划算法又叫决策算法,决定车辆行驶意图。对于静态障碍物,往左绕还是往右绕?对于动态障碍物是减速避让还是加速超车,决策算法决定了车辆的行驶意图,是整个规划算法中最难做的部分。

  特点:给出车辆的行驶意图,指导车辆该避让还是该超车,该左转还是往右转,但决策并不给具体的运动建议,例如左转多少度或车辆加减速到多少。由于实际环境瞬息万变,所以决策算法需要有较高的执行频率,一般为 【自动驾驶】决策规划算法概述_自动驾驶_28

  决策算法也需要有一定的稳定性,不允许在周围环境比较稳定的情况下,出现“朝令夕改”的现象,即决策算法在环境稳定时不允许出现决策指令的剧烈波动。除非环境发生变化,否则决策算法不允许频繁改变结果,这样会导致控制效果变得非常差。

3、运动规划算法

  运动规划算法是根据决策给出的行为意图,在相关的时空中搜索或优化出一条具有详细路径速度信息,且满足各约束条件的轨迹,并将轨迹发给控制模块去跟踪,轨迹长度一般在几米到几十米不等。

  特点:运动规划生成的轨迹是整个决策规划模块最终的输出,具有详细的路径、速度信息,且执行频率与决策频率相同,都是 【自动驾驶】决策规划算法概述_自动驾驶_28

  运动规划也要有一定的稳定性,在环境不发生剧烈变动的情况下,运动规划的轨迹要基本一致。


三、目录与大纲

  本系列博客将详细讲解决策算法与运动规划算法,不讲导航算法,因为导航算法相对比较成熟。以 Apollo EM Planner 算法为例,本算法擅长处理复杂环境下的决策规划问题,也是 Apollo 默认的决策规划算法。

注意EM Planner 是在Apollo 【自动驾驶】决策规划算法概述_算法_30 时加入,在 Apollo 【自动驾驶】决策规划算法概述_决策规划_31 时的 EM Panner 换了个名字叫 OnLine Planning。本系列博客所讲解的是最初 【自动驾驶】决策规划算法概述_算法_30 版的 EM Planner,当然思想上是殊途同归的,建议各位学完后要看一下 6.0 的 OnLine Planning。和最初的 EM Planner

  下面介绍本系列博客大概的目录和大纲:

章节

内容

序章

决策规划算法概述

第一章

数学基础

第二章

Apollo EM Planner

第三章

Apollo EM Planner

终章

决策规划算法总结

  • 第一章是必要的数学基础。
  • 第二章将详细解读 Apollo EM Planner
  • 第三章将具体的实践,写 Apollo EM Planner
  • 终章是决策规划算法的总结,具体讲 Apollo EM Planner 的优点和缺点,以及除了 EM Planner

四、仿真环境

  目前代码环境是在 Windows 下做,软件采用 Prescan + Matlab + Carsim 三者联合。

  在熟悉 EM Planner 之后,再用 Linux 下的 C++EM Planner 代码。因为目前主流的规划算法是在 C++ 上写更好,不过对于初学还是先在 Windows 下做。

  本篇博客到此结束,下一节再见,欢迎关注!


参考资料

  自动驾驶决策规划算法序章 总纲与大致目录


后记:

🌟 感谢您耐心阅读这篇关于 自动驾驶决策规划算法概述 的技术博客。 📚

🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢

🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀

🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡

🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀