自动驾驶中的决策规划

2023-09-21 22:22:50

参考:  【干货篇】轻舟智航:自动驾驶中的决策规划技术(附视频回放 +PPT 下载) - AIQ

如图所示, 

各模块介绍

定位模块主要负责解答的问题是“车现在在哪里”,是在道路上还是在路口,是在高架桥上还是在停车场里。

感知模块则负责解答“车周围有什么”这个问题。

预测模块,预测模块主要解答“周围的车现在想干什么”,比如前面的车要cut in,预测模块就会给出前方车辆切入本车道的意图。(所以有他车意图预测的这个任务)

预测对于高级别自动驾驶的决策规划是非常关键的,就像人开车一样,通常都会通过预测周围交通参与者的行为来灵活调整当前的动作。所以预测越智能,最后自动驾驶的行为也越智能。

 高精度地图的作用

对于感知来说,利用高精度地图的信息可以过滤掉障碍物。像马路牙子上一般不太可能停大卡车,高速公路上一般也不太可能有横穿马路的行人,所以感知通常会通过高精度地图信息来做一些预处理

预测也会利用高精度地图中的语义信息去预测车辆行为。比如路口有一辆车正停在左转车道上,那么预测模块会根据这个信息来判断,在接下来绿灯亮时它大概率会左转,而不会直行或右转。

决策规划模块

主要通过接收上游的定位、地图和预测信息,来决定车辆应该怎么走。

决策规划模块会根据自身当前位置和状态以及周围路况,输出一条轨迹下发给下游控制模块,然后控制模块将轨迹信息转译成可发送给下游执行器的命令,如油门、刹车、方向盘角度等等,控制车辆按照规划的路径去行驶。

主要包括三个子模块,分别是导航模块、决策模块和轨迹规划模块.

导航模块

首先是导航模块,我们开车出去或要远行都会首先拿出手机地图软件选定一个目的地,然后规划一条路线(此时的路线还是比较粗粒度的, 只是一个routing的信息)。对于自动驾驶来说,导航模块功能也是类似,主要在给定地图上任意两点a点和b点之后,寻找一条从a点到b点的导航路线。以上图为例,假如车辆位置是a点,然后又给定了终点b点,导航模块最终会根据路网信息来决定应该通过什么样的车道级路线到达b点。

决策--车道决策

对于自动驾驶来说,一般包含两级决策,第一级决策叫做车道决策,指在路上行驶时,我们是应该保持当前车道直行,还是借旁边车道再返回本车道,或因为某个目的而进行变道(上图分别对应这三种情况)

障碍物决策

当有了车道决策和障碍物决策后,就可以共同为下游的轨迹规划提供一个可行解空间,做进一步的轨迹优化了。

最后一个部分就是轨迹规划,主要指当我们给定导航路线,以及车道决策、障碍物决策后,怎么去定量地规划一条从当前位置指向目的地的轨迹。

通常轨迹规划所输出的轨迹需要满足一些性质,第一是一定要保证安全,不能与周围的障碍物发生碰撞;第二是需要比较舒适,加减速尽量平滑,在通过一些曲率比较大的路口时,速度也不要太快;第三是要求遵守交通规则,满足道路限速,遇到人行横道上的行人要礼貌让行。满足以上要求后,还要求轨迹能尽量快地将车辆引导到目的地。

更多推荐

Java集成支付宝沙箱支付,详细教程(SpringBoot完整版)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、开发前准备?二、使用步骤1、引入库2、配置在application.yml里面进行配置:3、alipay的java配置:AplipayConfig.java4、支付接口4、回调接口一、开发前准备?easy支付官方文档:https://opend

Ubuntu下 Docker、Docker Compose 的安装教程

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。DockerCompose是用于定义和运行多容器docker应用程序的工具,compose通过一个配置文件来管理多个do

微信小程序python+nodejs+php+springboot+vue 健身教练私教预约系统

管理员的主要功能有:1.管理员输入账户登陆后台2.个人中心:管理员修改密码和账户信息3.用户管理:对注册的用户信息进行删除,查询4.教练管理:对教练信息进行添加,修改,删除,查询5.教练简介管理:对教练的简介信息进行查询,删除6.在线预约信息:用户对教练的预约信息进行查询,删除7.健身指南管理:对用户查看的健身指南信息

Nginx之防盗链及高可用解读

目录防盗链解读盗链是什么?Nginx中配置防盗链高可用解读KeepalivedNginx中配置高可用防盗链解读盗链是什么?网页的加载顺序是先加载HTML相关的内容,然后解析HTML的内容,那些需要加载图片,那些需要加载文件,是逐步加载的,对于我们线上的图片等静态资源,经常会被其他网站盗用,外面可以我们请求到一个页面后,

LeetCode:2603. 收集树中金币 详解(2023.9.21 C++)

目录2603.收集树中金币题目描述:实现代码与解析:拓扑+bfs原理思路:2603.收集树中金币题目描述:给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,

SpringBoot

SpringBoot技术简介SpringBoot是一种用于构建现代化、可扩展的Java应用程序的框架,它的出现极大地简化了Java应用程序的开发流程。本文将介绍SpringBoot的关键特性以及为什么它成为Java开发者的首选工具。什么是SpringBoot?SpringBoot是SpringFramework的一个扩

Spring系列文章:Bean的作⽤域

1、singleton默认情况下,Spring的IoC容器创建的Bean对象是单例的<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.

Linux内核顶层Makefile前期工作分析二

一.Linux内核顶层Makefile前期工作本文继续分析Linux内核源码的顶层Makefile所做的准备工作。本文续上一篇文章,地址如下:Linux内核顶层Makefile前期工作分析一_凌肖战的博客-CSDN博客二.内核顶层Makefile前期工作7.模块编译Linux允许单独编译某个模块,使用命令“makeM=

【C++】STL简介 | string类的常用接口

目录STL简介学string类前的铺垫概念为什么要学string类string类的底层(了解)编码表的故事string类的常用接口与应用3个必掌握的构造赋值访问字符operator[]初识迭代器(iterator)反向迭代器用范围for遍历string类对象的修改操作插字符push_back()插字符串append()

【NCRE 二级Java语言程序设计03】考试环境及考试过程概览

目录前言一、考试环境介绍1.硬件环境2.软件环境二、考试特别说明1.考试时间说明2.考试题型及分值三、考试流程介绍1.登录考试系统2.考试答题界面3.答题交卷操作总结前言📜本专栏主要是分享自己备考全国计算机二级Java语言程序设计所学心得体会、所搜集的资料信息。虽然有Java语言相关基础,但是Java桌面编程、App

虚拟线上发布会带来颠覆性新体验,3D虚拟场景直播迸发品牌新动能

虚拟线上发布会是近年来在数字化营销领域备受关注的形式,而随着虚拟现实技术的不断进步,3D虚拟场景直播更成为了品牌宣传、推广的新选择。可以说,虚拟线上发布会正在以其颠覆性的新体验,为品牌带来全新的活力。1.突破时空限制,拓展潜在用户与传统的线下发布会相比,虚拟线上发布会通过互联网举办,不受地域和时间限制,让所有对品牌或者

热文推荐