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

无人驾驶实战-第一课(自动驾驶概述)

在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。
—————————————————————————————————————————
无人驾驶汽车的定义:
无人驾驶汽车是可载人的移动智能机器人,通过丰富感知系统和智能的行为系统实现高效率高可靠性的驾驶能力。
无人驾驶与自动驾驶的关系:
无人驾驶:完全不依赖于人的行为
自动驾驶:某些情况下可以加入人的参与和监督 
无人驾驶是自动驾驶的一个真子集。
未来出行的三大趋势:共享、新能源与自动驾驶。
无人驾驶的发展历程
探索阶段(2004年以前) 
1921年, 第一辆无人驾驶(实为遥控)汽车在美国诞生 
1956年,通用汽车第一辆具备了自动导航系统的汽车,采用车路协同设备实现无人驾驶(预埋的线缆与车端的接收器进行电子通讯)
FireBird II
1921年, 第一辆无人驾驶(实为遥控)汽车在美国诞生
1956年,通用汽车第一辆具备了自动导航系统的汽车,采用车路协同设备实现无人驾驶(预埋的线缆与车端的接收器进行电子通讯) 
1960年,斯坦福大学研究出第一个全自主轮式机器人Shakey,具备完整感知、规划和控制能力,也是后来机无人车的基础
Shakey
1990年,CMU的导航实验室 NavLab也是著名的无人驾驶发源地之一。
1995年,完成了从匹兹堡到圣地亚哥的 “ No Hands ” 跨越美国之旅  
1995年,戴姆勒奔驰发布了尤里卡·普罗米修斯计划,联合研发无人驾驶技术,这是第一个大范围联合开发的自动驾驶项目,整个欧洲大学研究院都有参与
NavLab 5
S500
发展阶段(2004 – 2016年)
2004年,美国DARPA( 美国国防高级研究计划局 ) 无人车挑战赛:要求无人车成功穿过240公里的沙漠道路 
2005年,斯坦福大学的Stanley成功夺冠,该团队由Sebastian Thrun带领。这次比赛中,大量车使用了激光雷达、高精度的地理信息系统和惯性导航系统 
2007年,这次DARPA城市挑战赛 (Urban Challenge),这次由Chris Urmson带队的CMU成功夺冠。 这三次挑战赛中,真正引领了无人车的发展,各大公司都是从这些比赛中逐渐发展起来的,比如Mobileye,Velodyne,Google X
Stanley
2010年,Google X实验室做了他们第一辆无人车丰田Pirus,通过顶上的64线雷达,建立高分辨率的三维环境模型(SLAM) 
2014年,Google无人车Firefly诞生,取消了方向盘,仅用手柄进行调试和接管
Google Pirus
Firefly
2011年,中国国防科技大学自动化系完成了自研的红旗 HQ3 无人驾驶汽车, 也拿到了当年“智能车未来挑战”大赛的冠军 
2015年, 百度自动驾驶部门正式成立, 与宝马合作的无人车进行了北京开放道路的试验
百度-宝马无人车
成熟阶段(2016以后)
AlphaGo的原因,投资界对AI开始疯狂追捧,对无人车更是热情高涨。同时,无人驾驶也真正进入中国大众视野 
2016年,Tesla自动驾驶因为一起致死的交通事故,与Mobileye分道扬镳,开始了自动驾驶高速投入 
2016年,Waymo正式从Google拆分出去,开始了独立运营 
2017年更是百花齐放,创业公司层出不穷 
2017年百度Apollo项目正式开源 
2018年,Waymo无人车对外商业运营
Pacifica
2019年,预计有更多的公司开始对外商业运营
2019年,物流运输、园区接驳等细分场景也将真正开始落地应用 车厂对未来大规模普及无人驾驶的时间预估,最晚也不超过2040年
我们这一代的生活中,无人驾驶技术的普及将成为极大概率的事件
自动驾驶的等级划分:
L2级及以下需要驾驶员对事故负责,L3及以上由车企负责。

L2级别的代表是特斯拉
Tesla: L2 高级辅助驾驶
  •  驾驶员需要对安全负责 
  •  启动条件要求不高(速度和车道线) 
  •  早期采用Mobileye提供感知技术 
  •  无法解决复杂路口问题 
  •  主动变道需要人提供变道指示
L3的代表为奥迪A8
  • L3 自动驾驶自动驾驶期间,车辆负全部责任 
  • 自动驾驶能力进入条件苛刻(多车道线、60km/h以下、天气良好) 
  • 目前智能性最好的量产车 
  • 暂时没有主动变道能力 
  • 遇到紧急情况或者不符合条件的情况需要通知驾驶员接管,有10s时间
各级别车企的名单
L4级别的概念车
Waymo: 
  • L4 全自动驾驶 
  • 曾有一段时间取消了安全员 
  • 商业运营阶段 
  • 世界最领先的自动驾驶能力 
  • 成本昂贵
Nuro:
  • 特殊场景下的Level 4能力 
  • 物流配送车 
  • 成本要求不能太高 
  • 可以不用考虑乘坐体感 
  • 相关物流公司都有布局,比如:京东、美团、阿里菜鸟等等
L4级别自动驾驶的实现思路 
  • 实现思路:V2X:Vehicle to Everything(车路协同): V2V(车辆), V2I(公共设施), V2P(行人) 
  • 边缘计算:RSU(路侧单元)、OBU(车载单元) 
  • 5G通信能力:LTE-V协议,专门针对车间通讯的协议,可兼容4G-5G 
  • 路侧智能:强大的感知能力(百度ACE计划)
  • 主车智能:近些年深度学习填补上了最后一块软件难题 
  • 感知能力:高度复杂冗余的传感器 
  • 决策能力:大数据下的智能决策 
  • 高精地图:丰富的地图信息数据     
  • 定位:精准的位置获取能力 通过学习人类开车的方式,来构建整个主车智能系统
权责问题也是一个重要的问题
RSS模型(Responsibility-Sensitive Safety)责任敏感安全模型 
为自动驾驶汽车与人类的责任概念提供具体可衡量的参数,并通过对所有记录在案的交通事故所涉及的行为和环境进行分析统计,为自动驾驶汽车界定了一个可计量的“安全状态”
“软件能够做出最安全决策”
L4自动驾驶的系统架构
涉及的范围很广。
涉及到的传感器
感知系统传感器:
摄像头:广泛用于物体识别和物体追踪场景,比如车道线检测、交通灯识别等,一般无人车都安装环视多枚摄像头
激光雷达:用于障碍物位置识别、绘制地图、辅助定位等,其准确率非常高,很多方案中将激光雷达作为主传感器使用 
毫米波雷达:阴雨天、雾霾天能够辅助感知获取物体的位置和速度,观测距离远但误检较多 
超声波:近处高敏感度传感器,常用于作为安全冗余设备检测车辆的碰撞安全问题
定位系统传感器:
IMU:实时测量自身的姿态,200Hz或更高。包含了三个单轴的加速度计和三个单轴的陀螺仪,加速度计检测物体在载体坐标系统独立三轴的加速度信号,而陀螺检测载体相对于导航坐标系的角速度信号
GNSS:也是大家常听到的GPS,无人车一般使用RTK(载波相位差分技术)技术来进行定位,频率相对较低,10Hz左右
车载计算单元(IPC):
车载计算单元(IPC)高效连接计算单元内部各计算设备,连接外部传感器的信息输入和存储 
冗余设计,以防止单点故障 
需要考虑整体的车规、电磁干扰和振动方面的设计以及 ISO-26262 标准的要求 
ISO-26262: 一个硬件达到了ASIL D级别的要求,那么它的故障率是10FIT,即10亿个小时里面出一次故障, 汽车行业在安全方面可以做到的极限(迭代速度慢)
自动驾驶线控系统:汽车的控制是由一些简单命令完成的,而不是由物理操作完成的。
这一部分相当于人的手和脚 传统汽车的这些控制由液压系统和真空助力泵协助完成,自动驾驶汽车的线控需要用电控化的零部件来完成,如电子液压制动系统 林肯MKZ拥有完善的电气化设备和接口
自动驾驶软件功能:
感知系统,定位能力, 决策规划, 实时控制
操作系统 OS
RTOS:实时操作系统 
QNX:类Unix系统,具有强实时性,符合车规级的实时操作系统 
RT Linux:Linux内核补丁,通过软实时进行监控,目前从2.x版本到4.x版本均有RT补丁 
Framework: 
ROS(机器人操作系统):B->M 
YARP、Microsoft Robotics、MOOS、Cybertron
ROS是集中式的,Master挂了整个系统无法工作。Cybertron是百度开发的分布式系统, 稳定一些
高精地图 HD Map(High Dimensional)
  • 不同于导航地图,最大的特点就是高维度和高精度 
  • 道路网的精确三维表征,如交叉路口布局和路标位置 
  • 地图语义信息,如道路的速度限制、 左转车道开始的位置 、
  • 导航地图只能达到米级精度,高精地图需要能够达到厘米级的精度 
  • 高精地图坐标系: WGS84、墨卡托坐标系
高精地图的好处:
  • 高精地图提供其它Level 4模块的数据支持提供了很多准确的静态物体的信息 
  • 定位可以用于计算相对位置 
  • 帮助传感器缩小检测范围,缩小感兴趣区域ROI 
  • 计算道路导航信息 
  • 帮助车辆识别车道的确切中心线
定位 Localization
无人车最重要的一步就是知道自己在哪 
INS: Inertial Navigation System 惯性导航系统 IMU 获取自身状态(加速度和角速度)
后通过状态矩阵递推下一时刻位置, 但是如果没有校正信息的话,这种状态递推会随着时间不断累计误差,导致最终位置发散
RTK:载波相位差分系统GNSS(GPS) 
RTK多加了是一个静止基站,它同样也收到定位卫星的信号。无人车与RTK相隔不太远的情况下,对二者之间的干扰信号用差分抹平 
RTK通过较低的更新频率提供相对准确的位置信息,INS则以较高的频率提供准确性较差的姿态信息。通过使用Kalman Filter整合两类数据获取其各自优势,合并提供出高准确性的实时信息
几何定位: 激光雷达 摄像头 高精地图 
利用激光雷达或者图像信息,可以通过物体匹配来对汽车进行定位。将检测的数据与预先存在的高精地图之间匹配,通过这种比较可获知汽车在高精度地图上的全球位置和行驶方向 
感知 Perception四大基础任务
各传感器之间各有特点
一般需要传感器融合,又分为前融合与后融合。前融合是原始数据融合,后融合是检测结果的融合。
预测Prediction
要求实时性 和 准确性
基于状态进行预测:Kalman Filter和Particle Filter 
基于车道序列进行预测:通过机器学习模型化简为分类问题 
行人预测:无人车需要非常重视安全问题,其中人的安全最为重要,而行人的意图变化却是最难预测的,也是约束最少的
决策规划 Planning
包含导航线路规划 和 精细轨迹表述 
  • 数学问题转换:将物理世界的地图转化为数学上的图表达 
  • 最优路径搜索:由于其他软件模块已经将不确定性进行了最大程度的消除,而最终决策规划模块又是对稳定性要求极高的模块,因此可以通过数学上的最优路径求解出确定解,遍历最优解是非常耗时的。 
  • 需要考虑车辆的体感和安全性
控制 Control
输入信息:目标轨迹、车辆状态;
输出:方向盘、油门 实现对无人车的控制,我们需要知道踩刹车和减速的关系、踩油门和加速的关系等,当无人车拿到一些控制学参数后,通过电脑对无人车的控制 
控制是对整个驾驶最后的保障,因此需要在任何情况下对准确性、稳定性和时效性要求都非常高,需要通过对车辆模型精细化描述进行严格的数学表达 
传统的控制算法PID可以满足车辆控制要求,但是考虑到体感和一些极限情况,控制算法优化也是目前无人车的一个持续探讨的问题,如LQR、MPC等
总结:
无人驾驶的四大问题。

相关文章:

无人驾驶实战-第一课(自动驾驶概述)

在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 无人驾驶汽车的定义…...

15.节点操作

15.1 DOM节点 1.DOM节点 DOM树里每一个内容都称之为节点 2.节点类型 ●元素节点 所有的标签 比如body、div html是根节点 ●属性节点 所有的属性 比如href ●文本节点 所有的文本 15.2查找节点 1.父节点查找: parentNode属性 返回最近一级的父节点找不到返回为n…...

C语言自定义类型 — 结构体、位段、枚举、联合

前言 本期主要对通讯录三篇博客文章进行补充 通讯录文章:通讯录系列文章 对结构体进行详细介绍,其次讲解位段、枚举、联合体 文章目录 前言一、结构体1.什么是结构体2.结构声明2.1 声明格式2.2 如何声明(代码演示) 3.特殊声明3.1…...

新手指南:流程图中各种图形的含义及用法解析

我们经常在技术设计、沟通、业务演示等一些领域看到流程图,它也可以称为输入输出图。顾名思义,它是指一种简单的工作流程的具体步骤,比如包括一次会议的流程,以及一次生产制造的顺序和过程等。本文将为大家介绍流程图的含义和具体…...

【知识产权】专利的弊端

接上篇【知识产权】著作权的作用_qilei2010的博客-CSDN博客。 ​ 1 专利的分类 首先,专利分为:发明专利、实用新型专利、外观设计专利。这里要说明的是专利的不同种类在不同的国家都是有不同规定的,并不是所有国家和地区都是分成这三类。 >国家法律法规数据库 >中华…...

用Rust实现23种设计模式之抽象工厂

在 Rust 中,可以使用 trait 和泛型来实现抽象工厂模式。抽象工厂模式是一种创建型设计模式,它提供了一个接口来创建一系列相关或依赖对象的家族,而无需指定具体的类。下面是一个简单的示例,展示了如何使用 Rust 实现抽象工厂模式&…...

31.利用linprog 解决 投资问题(matlab程序)

1.简述 语法:[X,FVAL] linprog(f,a,b,Aeq,Beq,LB,UB,X0); X 为最终解 , FVAL为最终解对应的函数值 *注意:求最大值时,结果FVAL需要取反* f 为决策函数的系数矩阵。 *注意:当所求为最大值…...

整数线性规划求解工具isl使用方法

整数线性规划求解工具 Integer Set Library 代码 参考 isl是一个用于多面体模型调度实现的c/c库。通过isl,我们可以对模型进行自动的调度,循环优化等。 编译 ISL,Integer Set Library 版本0.22.1,http://isl.gforge.inria.fr/ README关于…...

SystemC的调度器

文章目录 前言调度器初始化evaluatewait updatenotify delta notificationtime notification仿真结束 前言 SystemC是基于C的库,主要用来对 IC 进行功能建模和性能建模。有时也被用来当做 RTL (register transfer level) 级的升级版 HLS(High Level synthesis) 直接…...

SpringBoot、SpringCloud 版本查看

1、SpringBoot 官网地址 https://spring.io/projects/spring-boot#learn spring-boot-starter-parent 版本列表可查看: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent 2、SpringCloud 官网地址 https://spring.io/pro…...

AI Chat 设计模式:12. 享元模式

本文是该系列的第十二篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 给我介绍一下享元模式A.1Q.2 也就是说,其实共享的是对象的内部状态&…...

Spring mvc:SpringServletContainerInitializer

SpringServletContainerInitializer实现了Servlet3.0规范中定义的ServletContainerInitializer&#xff1a; public interface ServletContainerInitializer {void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException; }SpringServletCont…...

微信小程序中的全局数据共享(状态管理)使用介绍

开发工具&#xff1a;微信开发者工具Stable 1.06 一、状态管理简介 微信小程序全局状态是指可以在不同页面之间共享的数据或状态。 它可以存储用户的登录状态、个人信息、全局配置信息等。 二、安装MobX 1、安装NPM 在资源管理器的空白地方点右键&#xff0c;选择“在外部…...

LLM - LLama 模型读取报错 TypeError: not a string

一.引言 读取 LLama2 模型时报错 TypeError: not a string 看异常栈是 AutoTokenizer.from_pretrained 时候的异常。 二.问题解决 出现类似加载模型异常的问题&#xff0c;大致分两类&#xff1a; ◆ 模型地址异常 脚本里传的 pretrained_model Path 有问题&#xff0c;加 …...

2023年08月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年08月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多&#xff0c;人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…...

k8s的架构

简介 一个 K8s 系统&#xff0c;通常称为一个 K8s 集群&#xff0c;集群主要包括两个部分 一个 Master 节点&#xff08;主节点&#xff09; 一群 Node 节点&#xff08;计算节点&#xff09; Master节点 Master 节点包括 API Server、Scheduler、Controller manager、etcd A…...

数据分析基础-Excel图表的美化操作(按照教程一步步操作)

一、原始数据 包含月份和对应的销量和产量。 时间销量产量1月60722月38673月28344月58685月67596月72357月61428月24319月556710月243511月122112月2645 二、原始的图表设计-采用Excel自带模板 三、优化思路 1、删除多余元素 2、弱化次要元素 对于可以弱化的元素&#xff0c…...

Mybatis嵌套查询(一对多)

一、返回数据Java类 Data public class PersonnelDetailsVO{/*** 主键*/Column(name "ID", length 36, precision 0)private String id;/*** 人员姓名*/Column(name "OPERATE_NAME", length 36, precision 0)private String operateName;/*** 单位i…...

web前端转正工作总结范文5篇

web前端转正工作总结&#xff08;篇1&#xff09; 来到__有限公司已经三个月了&#xff0c;目前的工作是前端开发&#xff0c;我是一名应届毕业生&#xff0c;之前没有过工作经验&#xff0c;在刚来到__这个大家庭的时候&#xff0c;我就被这里的工作气氛深深地吸引&#xff0…...

P1144 最短路计数

最短路计数 题目描述 给出一个 N N N 个顶点 M M M 条边的无向无权图&#xff0c;顶点编号为 1 ∼ N 1\sim N 1∼N。问从顶点 1 1 1 开始&#xff0c;到其他每个点的最短路有几条。 输入格式 第一行包含 2 2 2 个正整数 N , M N,M N,M&#xff0c;为图的顶点数与边数…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...