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

ops/2024/9/20 7:21:49/ 标签: 自动驾驶, 决策规划, 算法, 笔记

写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝
个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。

🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒
若您觉得内容有价值,还请评论告知一声,以便更多人受益。
转载请注明出处,尊重原创,从我做起。

👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜
在这里,您将收获的不只是技术干货,还有思维的火花

📚 系列专栏:【决策规划】系列,带您深入浅出,领略控制之美。🖊
愿我的分享能为您带来启迪,如有不足,敬请指正,让我们共同学习,交流进步!

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


文章目录

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


引言

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

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


一、自动驾驶级别划分

  首先讲一下自动驾驶的六个级别,从 L 0 L0 L0 L 5 L5 L5

级别功能
L0没有任何自动驾驶功能
L1有横向和纵向自动驾驶功能,但横纵向无法联合作用
L2横纵向可以联合作用,但驾驶员必须对驾驶所发生的一切情况负责
L3横纵向可以联合作用,但对部分场景驾驶员不必负责
L4大部分道路都可以自动驾驶,大部分场景不需要驾驶员负责
L5完全自动驾驶

  这就是自动驾驶 L 0 L0 L0 L 5 L5 L5 六个级别的区分。

1、级别划分依据

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

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

  从 L 0 L 0 L0 L 2 L2 L2 主要是功能区分,从 L 3 L3 L3 L 5 L5 L5 主要是责任区分,区别不在于有什么花里胡哨的功能,而是在于责任划分。

  不同公司的 L 2 L2 L2 L 2 L2 L2 之间差距巨大,只要厂家宣称驾驶员需要负全责,那即使在功能上做到和 L 4 L4 L4 一样的功能,但只要说驾驶员需要负全责,本质上还是 L 2 L2 L2,而 L 2 L2 L2 本身是比较宽泛的概念。

  比如车辆只有 定速巡航 + 车道保持,就是非常简单的可以横纵向联合控制的称为 L 2 L2 L2

  车辆具有 L 5 L5 L5 级别的功能,但厂家宣称驾驶员必须负全责,即在自动驾驶过程中必须要盯着,准备随时接管,那么车也属于 L 2 L2 L2

  从简单的 L 2 L2 L2 进化成什么都能做的 L 2 L2 L2,其重要模块就是决策规划算法

   有人可能会觉得决策规划算法难道不是 L 4 L4 L4 应该做的事情嘛?为什么是 L 2 L2 L2 的模块?上面也说了, L 4 L4 L4 L 2 L2 L2 就是有功能上的区别,但最重要的区别还是在于责任。 L 4 L4 L4 在大多数情况下都是车负责,驾驶员不需要接管, 而 L 2 L2 L2 是一切情况都要人接管。

2、核心模块作用类比

模块类比
感知模块人的眼睛、耳朵
控制模块人的小脑、双脚
决策规划模块人的大脑

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

  在 L 4 L4 L4 中,决策规划模块是整个模块中最重要的,也是最复杂、最难做的模块,难做到要把整个模块一分为三,还要加上地图模块,每个每块单独处理,才能勉强完成大脑的工作。


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

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

1、导航规划模块

  导航规划算法计算整体上从 A A A B B B 的最优路径,和机器人导航、手机导航的算法基本一致,长度在几公里到几百公里不等,该算法是整个规划模块中最成熟的算法

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

2、行为规划模块

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

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

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

3、运动规划算法

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

  特点:运动规划生成的轨迹是整个决策规划模块最终的输出,具有详细的路径、速度信息,且执行频率与决策频率相同,都是 10 H z 10Hz 10Hz

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


三、目录与大纲

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

  注意EM Planner 是在Apollo 1.5 1.5 1.5 时加入,在 Apollo 6.0 6.0 6.0 时的 EM Panner 换了个名字叫 OnLine Planning。本系列博客所讲解的是最初 1.5 1.5 1.5 版的 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 下做。

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


参考资料

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


后记:

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

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

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

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

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


http://www.ppmy.cn/ops/100622.html

相关文章

JavaEE-传输层协议

目录 一、UDP协议 二、TCP协议 TCP报文结构 TCP十大核心机制 确认应答 超时重传 接收缓冲区 连接管理 建立连接 断开连接 一、UDP协议 学习一个网络协议首先要学习报文结构。 对于UDP协议来说,应用层数据到达UDP后就会给应用层数据加上UDP报头。 &#…

智能新时代:探索【人工智能】、【机器学习】与【深度学习】的前沿技术与应用

目录 1. 引言 1.1 人工智能的概念与历史 1.2 机器学习与深度学习的演进 1.3 计算机视觉的崛起与应用场景 2. 人工智能基础 2.1 什么是人工智能? 2.2 人工智能的分类 2.3 人工智能的现实应用 3. 机器学习 3.1 机器学习的定义与基本原理 3.2 机器学习的主要…

如何给文档加密?文档加密软件是什么样的?

一、如何给文档加密? 1、利用第三方加密软件(1)选择合适的加密软件:市面上有许多专门的加密软件,这些软件通常提供更多的加密选项和更强的安全性能。(2)操作第三方加密软件:安装并打…

推荐一款低成本 小尺寸数字脉冲编码调制(PCM)输入D类功率放大器 MAX98357AETE+T 兼具AB类性能

MAX98357AETET是数字脉冲编码调制(PCM)输入D类功率放大器,可提供AB类音频性能,同时具有D类的效率。器件在I2S/左对齐模式下通过单个增益设置输入可提供5中可选择增益(3dB、6dB、9dB、12dB、15dB),在TDM模式下为固定12dB增益。 数字音频接口高…

Linux驱动学习之内核poll阻塞

在linux系统编程课程中学习过多路IO复用,简单来说就三个函数select,poll,epoll。 对于select 此函数是跨平台的,可以在windows,Linux中使用。 对于poll与epoll 只能在linux平台下使用, epoll底层实现是一个…

WebSocket、Socket和Netty的关系

目录 WebSocket、Socket和Netty的关系 WebSocket Socket Netty 关系总结 Socket API 有那些? 1. socket() 2. bind() 3. listen() 4. accept() 5. connect() 6. send() 和 recv() 7. close() 8. shutdown() 9. inet_pton() 和 inet_ntop() 10. setso…

Windows系统安装MySQL

下载MySQL 打开网址MySQL :: Download MySQL Community Server点击图下所示位置Download 进入图下所示界面,点击图下所示位置不登录下载 已下载完成 安装MySQL 将下载好的压缩包解压到一个专门的位置,该软件为绿色版软件,解压即可使用 配置…

Spring 中的BeanPostProcessor

BeanPostProcessor 是 Spring Framework 中的一个接口,用于对 bean 实例进行自定义处理,它位于 org.springframework.beans.factory.config 包下。该接口允许开发者在 Spring 容器创建 bean 实例后进行处理,或在 bean 实例初始化过程中进行自…

单调栈 LeetCode 1130. 叶值的最小代价生成树

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 给你一个正整数数组 arr,考虑所有满足以下条件的二叉树: 每个节点都有 0 个或是 2 个子节点。数…

论坛系统登录测试结果

目录 1 登录成功1.1 输入合法已注册手机号 2 登录失败2.1 输入未注册手机号2.2 输入非法手机号2.3 输入错误、过期验证码 论坛系统——部分测试用例 1 登录成功 1.1 输入合法已注册手机号 打开登录界面 输入已注册手机号 点击发送验证码 输入验证码,点击登录按钮 …

架构师面试题系列之Spring MVC面试专题及答案(31题)

目录 1、什么是 SpringMvc?说一下你对它的理解2、SpringMVC 的优点 :3、SpringMVC 工作原理?4、SpringMVC 的主要组件?5、讲下 SpringMvc 的执行流程6、SpingMvc 中的控制器的注解一般用那个,有没有别的注解可以替代?7、如果在拦截请求中,想拦截 get 方式提交的方法,怎么…

Python接口自动化测试:断言封装详解

在进行API接口测试时,断言起着至关重要的作用。断言是用于验证预期结果与实际结果是否一致的过程。在Python中,我们可以利用一些库来实现断言功能。 1. 安装必要的库 在Python中,我们主要会使用两个库:requests和jsonpath。requ…

解析阿里巴巴中国站商品详情API返回值的更新与变化

阿里巴巴中国站(通常指的是1688.com,阿里巴巴的国内批发平台)的商品详情API返回值可能会随着平台功能的更新、数据结构的调整或API版本的迭代而发生变化。为了准确解析这些更新与变化,你可以采取以下几个步骤: 1. 查阅…

2024焊工操作证考试在线模拟考试题

焊工证考试试题分为理论《焊工理论知识》考试和《焊工实操知识》专业能力考核。 焊工证考试试题理论知识考试采用闭卷电脑答题方式;理论知识考试和实操考核均实行百分制,焊工证考试成绩皆达80分及以上者为合格。 以下为焊工理论考试模拟试题&#xff0c…

apache httpclient速成

目录标题 快速使用连接池参数连接池状态清除闲置连接evictIdleConnections删除过期连接 timeToLive 和evictExpiredConnections 注意释放内存关闭流 http和netty的关系 导入依赖 <dependency><groupId>org.apache.httpcomponents.client5</groupId><artif…

QT通过信号传递参数至槽函数(不通层级通信)

传递参数参数多个&#xff0c;采用map&#xff0c;一直insert 前提&#xff0c; //map类型 typedef QMap <unsigned int , QByteArray> Map;//信号和槽的声明 signals:void sigToCems(InfoMap);void slotFromEms(Map Map);// 发射点&#xff1a;由事件触发 //Addr_EM…

龙旭 付玲云新歌推出原创歌曲热榜

盘点2024年8月全国受关注的经典热门歌曲你更爱那首&#xff1f; 歌曲1.《甜妹专属BGMentertainer》&#xff0c;2.情歌专属《尘世情缘》情歌唱给谁来听&#xff0c;3.巜迟来的情话》听完敢不敢留下你最想对TA说的话如果在18我没能送你花&#xff0c;那到28我请你喝酒吧&#x…

Linux驱动开发—设备模型框架 kobject创建属性文件

文章目录 什么是属性文件&#xff1f;1. sysfs 与 kobject2. 属性文件的作用3. 属性文件的基本操作4. 典型的属性文件用例5. 创建属性文件的步骤6.示例代码7.效果图 使用 ATTR 宏定义优化__ATTR用法解析1. __ATTR() 宏的定义2. __ATTR() 宏的参数3.优化示例 优化关键点解析1. 数…

Java与C#在中国:我们在信息技术领域的脆弱性和依赖性

2019年8月&#xff0c;微软公司宣布停止在俄罗斯销售新产品和服务&#xff0c;并暂停相关更新和授权。这一决定对俄罗斯用户和企业造成了不小的冲击。 2024年6月&#xff0c;微软陆续关闭中国线下门店授权。微软官方给出的回应是&#xff1a;为了满足客户不断变化的需求&#…

linux命令使用

vi可打开&#xff0c;可创建&#xff0c;cat只能打开已有的文件 rm -r 删除文件夹-r&#xff1a;这个选项代表“递归”&#xff08;recursive&#xff09;。当你用 -r 选项与 rm 一起使用时&#xff0c;rm 会递归地删除目录及其内容&#xff0c;包括所有子目录和文件。 pip i…