自动驾驶中的决策规划

news/2025/2/21 7:35:52/

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

如图所示, 

各模块介绍

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

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

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

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

 高精度地图的作用

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

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

决策规划模块

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

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

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

导航模块

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

决策--车道决策

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

障碍物决策

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

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

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


http://www.ppmy.cn/news/1119266.html

相关文章

使用PageHelper进行分页

使用PageHelper进行分页 1. 使用Spring Boot2. 不使用Spring Boot的实现 1. 使用Spring Boot 要在Spring MVC中使用PageHelper进行分页,你需要完成以下几个步骤: 添加PageHelper依赖:在你的项目中添加PageHelper的Maven或Gradle依赖。例如&…

stl_stack_queue的模拟实现

stl_stack_queue的模拟实现 Stack.hQueue.hTest.cpp Stack.h #pragma once #include <deque>namespace jpc {template<class T,class container deque<T>> //容器适配器class stack{public:void push(const T& x){_con.push_back(x);}void pop(){_con…

学习SLAM:SLAM进阶(十)暴力更改ROS中的PCL库

话不多说&#xff0c;上活 1.1 为什么要这么做 项目中有依赖。。。。 1.2 安装VTK7.1.1 PCL1.8.0 略 1.3 移植到ROS 删除ROS依赖的vtk6.2和PCL1.8.0的动态链接库&#xff1a; liugongweiubuntu:~$ sudo mv /usr/lib/x86_64-linux-gnu/libvtk* Desktop/lib/ [sudo] password fo…

STM32 NVIC中断优先级管理通过结构图快速理解

STM32 NVIC中断优先级管理通过结构图快速理解 &#x1f4d1;抢占优先级和响应优先级基本常识 &#x1f33f;抢占优先级的级别高于响应优先级。&#x1f33f;抢占优先级数值编号越小&#xff0c;所代表的优先级就越高&#xff1b;同理&#xff0c;响应优先级也是如此。&#x1…

echarts-根据数据大小实现折线渐变色

先看示例图&#xff1a; 这几年一直在做大数据可视化前端开发&#xff0c;接下来把近几年用到的比较经典案例给大家分享下&#xff0c;主要用到的可视化库为Echarts、Threejs、Element、D3、fabricjs等。 这个案例是Echarts&#xff0c;Echarts算是学习成本比较低的一个很好的…

gin 基本使用

gin 初体验 import ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong",})})r.Run() }gin 路由接受一个 type …

PostgreSQL设置主键为自增

1、创建自增序列 CREATE SEQUENCE table_name_id_seq START 1; 2、设置字段默认值 字段默认值中设置 nextval(table_name_id_seq) 3、常用查询 -- 查询所有序列 select * from information_schema.sequences where sequence_schema public; -- 查询自增序列的当前值 select cu…

9.2.3.1 【MySQL】XDES Entry链表

当段中数据较少的时候&#xff0c;首先会查看表空间中是否有状态为 FREE_FRAG 的区&#xff0c;也就是找还有空闲空间的碎片区&#xff0c;如果找到了&#xff0c;那么从该区中取一些零碎的页把数据插进去&#xff1b;否则到表空间下申请一个状态为 FREE 的区&#xff0c;也就是…