当前位置: 首页 > 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. 单链表的基本…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...