当前位置: 首页 > news >正文

萝卜快跑和端到端的自动驾驶(1)

先看一篇论文

2311.18636 (arxiv.org)

这篇论文里有一个非常好的图

比较了一下模块化任务(级联任务)和端到端自动驾驶的区别

首先什么叫模块化任务(级联)

如上图所示,左边的方块中的子方块,是展示了自动驾驶获取数据的途径,这里包括:

  • LiDARs(激光雷达):使用激光束创建周围环境的高分辨率3D地图。它们对于检测障碍物、测量距离和提供详细的空间信息至关重要。
  • Cameras(摄像头):用于视觉感知,帮助系统识别交通信号、道路标志、车道标记以及其他车辆和行人。摄像头提供的高分辨率图像对于目标检测和分类非常重要。
  • RADARs(雷达):使用无线电波检测物体并测量其距离和速度。雷达在恶劣天气条件下(如雾或大雨)尤其有用,因为在这些条件下摄像头和激光雷达可能表现不佳。
  • HD Maps(高精度地图):提供详细的道路信息,包括车道结构、交通标志和地理特征,帮助车辆准确定位和导航。
  • IMU(惯性测量单元):使用加速度计和陀螺仪测量车辆的加速度和角速度,提供精确的运动信息,有助于定位和稳定控制。
  • GPS(全球定位系统):提供车辆的地理位置信息,结合其他传感器数据,实现厘米级的精确定位。

以上的各种sensor其实可以看出来大部分的自动驾驶的输入其实天生就是多模态的,但是可以任务比如纯视觉方案(特斯拉)它就不是多模态的吗?

这是一个错误的理解,特斯拉的纯视觉方案在训练时有text指令的输入,所以它也是多模态的。

或者目前可了解到的,只有特斯拉实现了端到端的模型,是不是只有纯视觉方案才有资格称得上端到端?这些概念都是错误的。

这个也是不正确的理解,那让我们看一下怎么定义端到端。

如图所示,传统的自动驾驶的流程是由多个模型组成的(有些模块甚至不能严格成为模型),比如上面的一个概述:

  1. Perception(感知):感知模块负责处理来自各种传感器的数据(如摄像头、雷达和激光雷达),识别并理解车辆周围的环境。这包括检测其他车辆、行人、道路标志、交通信号灯等。
  2. Localization(定位):定位模块通过融合GPS、高精度地图、IMU(惯性测量单元)等数据,确定车辆在环境中的准确位置。这是确保车辆能够正确导航和执行路径规划的基础。
  3. Tracking(跟踪):跟踪模块持续监控并预测周围移动物体的位置和速度,例如其他车辆和行人,以便系统能够做出及时和准确的反应,避免碰撞。
  4. Path Planning(路径规划):路径规划模块基于感知和定位信息,计算车辆从当前地点到目的地的最优路径。该路径需要考虑道路状况、交通法规和动态障碍物等因素。
  5. Decision Making(决策):决策模块根据感知、定位和路径规划的信息,决定车辆的具体行动。例如,选择何时变道、超车或停车等待,这些决策都需要综合考虑安全性和效率。
  6. Controls(控制):控制模块将决策模块的输出转换为具体的车辆操作指令,如转向、加速、制动等。确保车辆按照规划的路径和速度安全行驶。

这些模块协同工作,构成了一个完整的自动驾驶系统,能够感知环境、确定位置、规划路径、做出决策并执行控制指令,实现自动驾驶的功能。

这些模块,各自有各自的训练任务,而且后一个模块,一般依赖于前一个模块的输出质量。

比如如果你感知做的很垃圾,那么很不幸的是,你的跟踪,路径规划,决策啥的,都会受到影响。

另外对于开发模式来讲,传统的自动驾驶,感知肯定是感知组,拿CV模型做一些工作。

那么决策组里面,很多根本和大模型是不沾边的,是基于非常多人的一个team。来写各种驾驶情况下的policy,通过tree或者其他的可解释的算法来对感知送过来的output来进行决策。

那么对于端到端的自动驾驶来讲,这些以上的模块绝大多数都集成在一个模型里,大概这样

一般来讲目前能做到纯粹上面的那种模式,直接sensor拿到input,进一个端到端的模型,最后直接出控制信号,让比如方向盘刹车来觉得的这种少之又少,相当于你直接拿encoder的各种模态的外界信息,去做一个loss function为控制信号的模型,这个多少还有点那个的,至少损失函数不是特别好定义(你整个车多少控制单元呢)。

相当而言,下面的这个方式,比较好容易被接受,就是把感知,预测,决策这些模块在一个模型了,planning和control这些不用放在模型里执行,在模型外,可以写一些兜底的策略,比如紧急避障,紧急刹车,限速啥的。(据传闻,特斯拉的FSD12,现在主要是这个模式,应该也没做到第一种形态)

我刚到西安,我估计这个内容很多人感兴趣,但是确实写着写着有点累了,先写到这吧,当个连载来更,萝卜快跑,fsd12啥的后面写

相关文章:

萝卜快跑和端到端的自动驾驶(1)

先看一篇论文 2311.18636 (arxiv.org) 这篇论文里有一个非常好的图 比较了一下模块化任务(级联任务)和端到端自动驾驶的区别 首先什么叫模块化任务(级联) 如上图所示,左边的方块中的子方块,是展示了自动驾驶获取数据的途径,这里包括&…...

通信原理学习笔记

一个手机通话需要经过下面三个网络 类别接入网(Access Network)承载网(Transport Network)核心网(Core Network)定义连接终端用户与电信网络的部分。在接入网和核心网之间传输数据的网络。处理、交换和管理…...

系统编程---day4

1. 链接文件 命令行: ln -s 文件名 softlink 1.1 symlink int symlink(const char *oldpath, const char *newpath); 功能:创建一个链接向oldpath文件的新符号链接文件 参数:oldpath:被链接向的文件的路径 newpath:新符号链接文件 返回值:成功返回0,失败返回…...

01:电容的什么,各类电容的优缺点

1.电容是什么? 电容是由两块不连通的导体,已经中间的不导电材料组成 电容结构: 1.2电容的容量计算公式 C ε s d \displaystyle\frac{εs}{d} dεs​ 1.3常见电容的种类 1.4各类电容的特点...

Android+Jacoco+code-diff全量、增量覆盖率生成实战

背景 主要是记录下Android项目使用jacoco生成代码覆盖率的实战流程,目前已完成全量覆盖方案,仅使用jacoco就能实现; 由于我们的Android端是使用Java和kotlin语言,目前增量的方案code-diff仅针对Java代码,卡在kotlin文件的分析&am…...

乌龟对对碰在线版

爆肝两天使用vue开发了一个在线版的乌龟对对碰小游戏之幸运对对碰。没有找到合适的乌龟素材,现在使用小兔子代替。 体验地址:幸运对对碰 | 乌龟对对碰小游戏 之前的python版本的乌龟对对碰:写文章-CSDN博客 乌龟对对碰-幸运对对碰...

如何更改select option边框颜色和选中的颜色

<!doctype html> <html> <head> <meta charset"utf-8"> <title>如何更改select option边框颜色和选中的颜色</title> </head><style>ul{border: 1px solid #000000;width: 500px;height: auto;background-color: aq…...

6. 数据结构—串的匹配算法

1.BF算法(暴力算法) //模式匹配(暴力算法) int Index(SString S,SString T){int i1,j1;while(i<S.length&&j<T.length){if(S[i]T[i]){i;j;}else{ii-j2; //最开始匹配的位置的后一个j1; //从头匹配 }}if(j>T.length)return i-T.length;return return 0…...

九大服务架构性能优化方式

来源&#xff1a;九大服务架构性能优化方式 目录 性能优化九大方式&#xff1a; 缓存 使用什么样的缓存 缓存常见问题 缓存淘汰 缓存数据一致性 并行化处理 批量化处理 数据压缩合并 无锁化 顺序写 分片化 避免请求 池化 异步处理 总结 最近做了一些服务性能优…...

【RabbitMQ】 相关概念 + 工作模式

本文将介绍一些MQ中常见的概念&#xff0c;同时也会简单实现一下RabbitMQ的工作流程。 MQ概念 Message Queue消息队列。是用来存储消息的队列&#xff0c;多用于分布式系统之间的通信。 系统间调用通常有&#xff1a;同步通信和异步通信。MQ就是在异步通信的时候使用的。 同…...

嵌入式学习 ——(Linux高级编程——进程)

目录 一、进程的含义 二、进程和程序的区别 三、进程的作用 四、进程的状态 五、进程的调度与上下文切换 六、查询进程相关命令 七、fork()函数 八、getpid()和getppid()函数 九、面试题解析&#xff1a; 十、应用场合及测试 一、进程的含义 进程指正在运行的程序&a…...

C++练习备忘录

1. 保留两位小数输出格式 #include <iostream> #include <iomanip> using namespace std; int main() {double S 0;S (15 25) * 20 / 2;cout << fixed << setprecision(2) << S;return 0; }2. 设置输出宽度 #include <iostream> #inclu…...

改善工作流

快捷键管理器 打开Editor->Shortcuts查看和编辑Unity中的快捷键 示例 ShiftSpace 窗口最大化 P 选择预制体 进入预制体编辑模式 单一检视窗口 选择组件&#xff0c;选择Properties打开一个窗口&#xff0c;显示组件信息&#xff1b;切换对象&#xff0c;窗口信息不会改变…...

迭代器失效

一、什么是迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构&#xff0c;其底层实际就是一个指针&#xff0c;或者是对指针进行了封装&#xff0c;比如&#xff1a;vector的迭代器就是原生态指针T* 。因此迭代器失效&#xff0c;实际就是迭代器底层对应指针所指…...

@RequestParam @RequestBody @PathVariable 这三个注解对应的前端使用vue的http请求时不同的调用方式

1. RequestParam 用途&#xff1a;用于提取请求参数&#xff0c;常见于GET请求或表单提交。 Vue HTTP 请求示例&#xff1a; // 使用axios发送GET请求 axios.get(/api/users, { params: { id: 1, name: John } }); 2. RequestBody 用途&#xff1a;用于提取请求体…...

SQL - 索引

索引本质上是数据库引擎用来快速查找数据的数据结构&#xff0c;可以显著提高查询的性能&#xff0c;为了加快运行较慢的查询。创建索引 默认索引 create index 索引名 on 表名 (列名); 通过对列名进行创建索引&#xff0c;在查询的时候&#xff0c;数据库就能通过索引找到匹配…...

Oracle23ai新特性FOR LOOP循环控制结构增强

在Oracle数据库中&#xff0c;FOR LOOP是一种常用的循环控制结构&#xff0c;它允许你重复执行一系列语句固定次数或直到满足特定条件为止。然而&#xff0c;标准的Oracle PL/SQL中的FOR LOOP主要用于遍历集合&#xff08;如数组或游标的结果集&#xff09;&#xff0c;而不是像…...

DHU OJ 二维数组

思路及代码 #include<iostream> using namespace std; int main(){ //input 多组 //input M,N int 1< <20 //input M 行 N 列 数据 //initialize listint M, N;while (cin >> M >> N){int list[M][N];for (int i 0; i < M-1; i){for (int j 0; j…...

UDP/TCP --- Socket编程

本篇将使用 Linux 中的系统调用来实现模拟 TCP 和 UDP 的通信过程&#xff0c;其中只对 UDP 和 TCP 进行了简单的介绍&#xff0c;本篇主要实现的是代码&#xff0c;至于 UDP 和 TCP 的详细讲解将会在之后的文章中给出。 本篇给出的 tcp 和 udp 的代码中的 echo 都是测试连接是…...

【C语言】最详细的单链表(两遍包会!)

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:C语言数据结构_小米里的大麦的博客-CSDN博客 &#x1f381;代码托管:黄灿灿/数据结构 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、单链表的概念 1. 单链表的特点 2. 单链表的基本…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...