Safetynet论文精读

news2025/1/16 11:04:27

基本信息

团队:Level 5, Toyota收购的Lyft自动驾驶团队(对,这个团队名字就叫Level 5)
年份:2021
官网:https://www.self-driving-cars.org/papers/2022-safetynet(对,他们专门做了个网站)
论文链接:https://arxiv.org/abs/2109.13602
代码链接:git clone https://github.com/woven-planet/l5kit.git
视频链接:safety.l5kit.org
数据集:内部数据集380h,300h做训练,80h做测试

Motivation

规则方案

传统的SDV的planning任务是一个优化问题optimization problem,需要手动设计loss function,这种cost function很难模拟人类在safety/comfort/route之间的trade off,如果需要调整,代价是昂贵的the process is expensive,而且泛化能力弱scale poorly to new geographies。

深度学习方案

随着深度学习的出现,规划拥有了新的范式,取代了手工设计,泛化性更好。主要有两种方法:模仿学习和强化学习。但是目前的这些方法暂时没有安全保证safety guarantees。

组合方案

深度学习模型提供多条轨迹,轨迹对轨迹进行评估evaluation。比如MP3模型。
本文使用了一个人工设计的轻量级系统,来进行sanity(心智健全)检查。

解决方法

在这里插入图片描述

在decoder部分,用MLP解析出加加速度和曲率,通过运动学模型去迭代推导车辆状态,而不是直接解码出自车轨迹。这样轨迹的平滑性会更好。

可行性检查会考虑碰撞概率。方法是光栅化图像,检查重叠;以及检查纵向速度、TOC,TimeHeadway等。
如果不可行,就要进行轨迹生成。轨迹生成方法参照《Optimal trajectories
for time-critical street scenarios using discretized terminal manifolds》。

实验结果

评价指标

1.碰撞
2.距离障碍物过近
3.急刹车
4.被动(仿真中比数据集中的速度小5m/s)
5.偏航(比原路线偏移超过10m)
6.ADE

仿真结果

针对ADE,没有和其他模型进行对比,只是展示了随着数据集大小和预测时长的变化,ADE如何变化。
在这里插入图片描述
针对评价指标1-5,未与其他模型进行对比,只是做了消融实验。
在这里插入图片描述fallback层最主要的工作在于ML生成的轨迹(1)接触路沿;(2)接触障碍物;(3)与周车距离过近infeasible distance gap;(4)转向太突然infeasible steering jerk,这些没英里mile会出现超过1次,第一项超过2次。

尽管有了fallback层,但是仍然有一些场景可能出现危险。文中举了一个例子:自车贴着黄线行驶,对面来车速度突然改变a sudden change in velocity。自车没有和该车保持足够的安全距离。

实车结果

在旧金山开了150+miles,能够面对各种复杂场景(lane-following, merging, yielding to
pedestrians or nudging around parked cars)。其中fallback层起作用占比7.9%,说明了相当有必要有这一层做最后保险。

总结

这是第一个将深度学习和规则组合起来使用的方案,具有开创性。
但是对于模型设计、中间表示等涉及不足,读者只能知道最终效果,但是无法获知其可解释性如何。
从实车测试结果来看,规则的判断与重新生成安全的轨迹是相当有必要的,这也应该是我们出于安全考虑应该做的事情。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1016358.html

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

相关文章

Godot 和 VScode配置C#环境注意事项

前言 尽管有些博主会建议如果我们熟悉C#的话,最好还是使用GDscript,而且对于小白上手也相对简单,但是C#的性能终究还是比动态语言好,也相比CPP简单些,尽管现在Godot还是有些问题,比如不像unity那样适配swit…

HDFS的存储原理

1、存储原理 1.1、HDFS分布式文件存储 将文件分为集群节点的部分数,分别存入每个节点中。 1.2、问题:文件大小不一,不利于统一管理 1.2.1、问题:文件大小不一,不利于统一管理 1.2.2、解决:设定统一的…

二,手机硬件参数介绍和校验算法

系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…

Presto 之 Query Stage的几种状态

一. 前言 在Presto中,Stage的状态是指: Query的状态则是指: 本文主要介绍在Presto中,Query和Stage的几种状态以及每个状态下的主要任务。 二. Stage的几种状态 PLANNED:PLANNED是Stage的初始状态,处于PLAN…

kaptcha-2.3.2.jar

开源google验证码包。。。不太清晰 com.google.code.kaptcha 这就是为了我很反对添加开源的,为了几个功能点不断更新包,头痛要死 反正现在都是一堆开源的,我自己当架构师的时候都是能精简就要精简的。

2817. 限制条件下元素之间的最小绝对差;2305. 公平分发饼干;878. 第 N 个神奇数字

2817. 限制条件下元素之间的最小绝对差 核心思想:枚举二分。我们去枚举nums[j],然后用一个数据结构去装nums[i],利用二分去找在这个数据结构中离nums[j]最近的值的下标,然后统计最小值。这个数据结构可以使用SortedList&#xff…

基于SSM的毕业生就业状况管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

python-OpenCV-对图片进行操作

anaconda https://www.anaconda.com/download/ OpenCV拥有丰富的常用图像处理函数库 主要应用领域有计算机视觉领域:如物体识别、图像分割、人脸识别、动作识别及运动追踪 安装模块 pip install opencv-python pip install opencv-contrib-python一、cv2的基本方…

【力扣周赛】第 113 场双周赛(贪心异或性质换根DP)

文章目录 竞赛链接Q1:8039. 使数组成为递增数组的最少右移次数竞赛时代码——枚举答案 Q2:2856. 删除数对后的最小数组长度竞赛时代码——贪心优先队列 Q3:6988. 统计距离为 k 的点对竞赛时代码——异或性质哈希表 Q4:100041. 可以…

【深度学习】Pytorch 系列教程(十):PyTorch数据结构:2、张量操作(Tensor Operations):(4)索引和切片详解

目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、张量(Tensor) 2、张量操作(Tensor Operations) 1. 数学运算 2. 统计计算 3. 张量变形 4. 索引和切片 使用索引访问单个元素 使用切片访问子集 使用索引和…

超级详细 SQL 优化大全

1、MySQL的基本架构 1)MySQL的基础架构图 左边的client可以看成是客户端,客户端有很多,像我们经常你使用的CMD黑窗口,像我们经常用于学习的WorkBench,像企业经常使用的Navicat工具,它们都是一个客户端。右…

基于matlab实现的 BPSK调制AWGN通道未编码数据误码率程序

完整程序: clear; close all; clc; c0; rate1; %Code rate N10000000; %Number of bits for EbNoc0:1:10 %Ratio of bit energy to no…

gRpc_go_dart-1.编写第一个服务

​ 通俗的讲下grpc 简化掉所有复杂的实现,它要求服务端和客户端之间按照protobuf的规范进行数据交换,所以服务端和客户端都不用关心彼此的代码实现,只关心按照protobuf的形式提供数据 为什么是go和dart 技术栈,已经是google的形状了 同时,go客户端和Flutter间本身通过http…

05-Flask-Flask查询路由方式

Flask查询路由方式 前言命令行方式代码实现返回所有路由 前言 本篇来学习下Flask中查询路由的方式 命令行方式 # window 用set linux 用 export set FLASK_APPtest_6_flask运行发方式# 打印所有路由 flask routes代码实现返回所有路由 # -*- coding: utf-8 -*- # Time …

优质医疗机构网站模板源码(含手机端)基于pbootcms开源项目

模板名称: 基于pbootcms的医疗机构网站模板(手机端优化) 模板介绍: 这是一个使用PbootCMS内核开发的医疗机构网站模板,专为医疗机构和医疗保健类企业设计。该模板具有简洁、简单和易于管理的页面风格,并附…

征战开发板从无到有(三)

接上一篇,翘首已盼的PCB板子做好了,管脚约束信息都在PCB板上体现出来了,很满意,会不会成为爆款呢,嘿嘿,来,先看看PCB裸板美图 由于征战开发板电路功能兼容小梅哥ACX720,大家可以直…

数据结构---链表(java)

目录 1. 链表 2. 创建Node 3. 增加 4. 获取元素 5. 删除 6. 遍历链表 7. 查找元素是否存在 8. 链栈的实现 9. 链队的实现 1. 链表 数据存放在"Node"结点中 优点:不用考虑扩容和缩容的问题,实现了动态存储数据 缺点:没有…

SQLAlchemy Oracle Database 23c Free 集成之旅

SQLAlchemy & Oracle Database 23c Free 集成之旅 1. SQLAlchemy 是什么2. Oracle Database 23c Free 是什么3. 运行 Oracle Database 23c Free4. 学习 SQLAlchemy 统一教程4-1. 安装依赖库4-2. 建立连接 - 引擎4-3. 使用事务和 DBAPI4-3-1. 获取连接4-3-2. 提交更改4-3-3.…

git git fetch 和 git fetch origin master 的区别

git fetch 第1步 先读取 .git/config 配置 [remote origin],若 fetch 并没有指定其中一个或多个远程仓库,就会处理所有的远程仓库 [remote “origin”]url gitgithub.com:kaku/testGit.gitfetch refs/heads/:refs/remotes/origin/第2步 git fetch 会…

Python 字符串的常用方法

视频版教程 Python3零基础7天入门实战视频教程 下标索引操作和前面的列表,元组用法一样。 虽然字符串不能被修改,但是返回一个操作过的新字符串,所以方法还不少。 我先学习下常用方法; 1,index(元素)方法&#xff0…