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

写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝
个人主页:清流君_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.mzph.cn/diannao/52871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络(CNN):算法、原理与应用

卷积神经网络(Convolutional Neural Networks, CNN)是深度学习领域中的重要算法之一,尤其在计算机视觉任务中表现出色。本文将从基础原理、核心组件、以及应用场景三个方面理解卷积神经网络的强大之处。 卷积神经网络的基本概念 卷积神经网…

u盘pe怎么安装系统_u盘pe安装系统详细步骤

u盘pe怎么安装系统?u盘pe安装系统需要准备一个u盘,然后将u盘制作成pe,进入pe后再安装系统,下面小编就教大家u盘pe安装系统详细步骤教程。 u盘pe启动盘是什么? u盘pe启动盘是一种可引导的USB存储设备,其中包…

10:Logic软件原理图中添加电源与GND

Logic软件原理图中添加电源与GND

Hive的存储格式

文章目录 Hive的存储格式1.存储格式简介2.行存储与列存储行式存储列式存储混合的 PAX 存储结构 TextFileSequenceFile Hive的存储格式 1.存储格式简介 Hive支持的存储数的格式主要有:TEXTFILE(默认格式) 、SEQUENCEFILE、RCFILE、ORCFILE、PARQUET。 textfile为默…

续:docker 仓库数据传输加密

上一个实验:非加密的形式在企业中是不被允许的。 示例:【为Registry 提供加密传输】 因为传输也是https,所以与ssh一样的加密。 ## 这种方式就不用写这个了。 [rootdocker ~]# cat /etc/docker/daemon.json #{ # "insecure-registrie…

7个流行的开源数据治理工具

数字化时代,数据是已经成为最宝贵的资产之一。数据支撑着我们的政府、企业以及各类组织的所有流程,并为决策以及智能化服务提供支撑。大数据有大用途,但是也可能隐藏着巨大的风险,特别是如果我们对数据的情况不是很了解的时候&…

计算机组成原理:实验四常规型微程序控制器组成实验

一、实验目的 1.掌握时序产生器的组成原理。 2.掌握微程序控制器的组成原理。 3.掌握微指令格式的化简和归并。 二、实验电路 1.时序发生器 TEC-4计算机组成原理实验系统的时序电路如图4.1所示。电路采用2片GAL22V10(U6、U7),可产生两极…

钓鱼特辑(四)安全较量,摆脱“麻瓜”标签

时至今日,尽管员工们对网络安全有所了解,却往往因缺乏足够的安全意识而对攻防没有直观感知。在红队看来,普通员工可能犹如“麻瓜”,防御薄弱,易于突破。 现在红队以求职者或合作方等“人畜无害”的身份在日常沟通中发动…

Windows中pip换源

step1:检查是否安装 输入如下,出现版本号,就是安装好了 pip -V或pip --version pip3 -V pip3 --version step2:找到(创建)配置文件 对于 Windows 用户,配置文件在【%APPDATA%\pip\pip.ini】文…

AutoGen ConversableAgent 基类解析

目录 一、ConversableAgent 类 二、主要函数 1.1 __init__ 1.2 initiate_chat 本文主要对 AutoGen 代理的基类 ConversableAgent 进行介绍。 一、ConversableAgent 类 ConversableAgent 类是代理的基类,AssistantAgent 和 UserProxyAgent 是该类的子类&#x…

使用LinkedHashMap实现固定大小的LRU缓存

使用LinkedHashMap实现固定大小的LRU缓存 1. 什么是LRU? LRU是"Least Recently Used"的缩写,意为"最近最少使用"。LRU缓存是一种常用的缓存淘汰算法,它的核心思想是:当缓存满时,优先淘汰最近最少…

PTA L1-030 一帮一

L1-030 一帮一(15分) “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚…

Mac下的压缩包和Win看到的不一样怎么办 Mac压缩后Win电脑看文件名会乱码

在当今多平台的数字工作环境中,Mac和Windows用户常常需要交换文件,但有时候会遇到一些兼容性问题。特别是在处理压缩文件时,Mac用户创建的压缩包在Windows系统中打开时,常常会遇到文件名乱码的问题。本文将详细讨论“Mac下的压缩包…

C语言基础(二十八)

1、冒泡排序&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 函数声明 void bubbleSort(int *arr, int n); int* createRandomArray(int n, int *size); int main() { int time getTi…

Java算法之梳排序(Comb Sort)

梳排序简介 梳排序&#xff08;Comb Sort&#xff09;是冒泡排序的一个变种&#xff0c;其核心思想是在比较相邻元素之前先进行更大步长的比较。这种算法的名称来源于其工作方式类似于梳头发时的动作&#xff0c;先大范围地移动&#xff0c;然后逐渐减小移动的步长&#xff0c…

22行为型设计模式——解释器模式

一、解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于解析和解释特定的语言或表达式。它的核心思想是为语言中的每种语法规则定义一个解释器&#xff0c;通过这些解释器将语言的表示形式转换为可执行的操作。解释器…

双臂机器人协作/合作阻抗建模及其控制实现(Dual-Arm Cooperative)

机器人阻抗控制是一种基于力的控制方法,其核心在于通过调整机器人的阻抗特性(如刚度、阻尼等),使机器人在与环境交互时能够表现出特定的力学行为。以下是对机器人阻抗控制的详细解析: 一、定义与内涵 机器人阻抗控制是指通过调整机器人的阻抗特性(如刚度、阻尼等),使…

【Python机器学习】NLP词频背后的含义——距离和相似度

我们可以使用相似度评分&#xff08;和距离&#xff09;&#xff0c;根据两篇文档的表示向量间的相似度&#xff08;或距离&#xff09;来判断文档间有多相似。 我们可以使用相似度评分&#xff08;和举例&#xff09;来查看LSA主题模型与高维TF-IDF模型之间的一致性。在去掉了…

697.数组的度

697.数组的度 给定一个非空且只包含非负数的整数数组 nums&#xff0c;数组的 度 的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组&#xff0c;返回其长度。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,2…

STM32基于HAL库串口printf使用和接收

我们这里使用HAL库直接用cubemx生成代码配置串口 1.打开cubemx&#xff0c;选择MCU型号 2.我这里使用的是STM32F103C8T6&#xff0c;根据自己的型号选择&#xff0c;这里不限制型号 3.选择时钟源 4.系统设置 5时钟配置 5.选择和配置串口 5.配置中断和中断优先级 6.工程设置…