无人驾驶入门(基本流程)

无人驾驶的操作流程,没有大家想的那么复杂。大家完全可以根据自己开车的实践,推断出自动驾驶应该包括那些内容。传统意义上,很多论文或者教材都喜欢把自动驾驶分成感知、预测、规划和控制四个部分,但是我个人喜欢再添加两个部分,即导航和停车,这样会构成一个更完整的整体。

1、导航

当车辆开始启动的时候,我们会输入起始地址和目的地址。有了这两个地址,软件就可以帮助我们规划合理的行驶路线。目前导航这一块已经很成熟了,百度导航和高德导航也做的很好。

2、感知

所谓感知,就是车辆需要定位自身的位置,同时它还需要了解周围的环境。为了做到这些,一般自动驾驶车辆需要安装1-n个激光雷达、1-2个长距离毫米波雷达,4个左右短距离毫米波雷达,8-12个摄像头雷达,8-12个超声波雷达,gps+imu定位系统,同时还要安装高清地图。有了这些传感器和软件,车辆才能进行数据分析、信息融合,获取周围的环境信息。

3、预测

有了环境数据之后,车辆还要进一步分析和判断周围车辆、行人、物体在未来一段时间内的行驶轨迹。这种判断是十分复杂的,但它决定了我们车辆在未来一段时间内要采用什么样的方式行驶。

4、路径规划

如果说导航规划的是大路径,那么这里的规划就是局部小路径,通常也就几十米,且实时更新。有了感知和预测的信息,车辆可以灵活规划自己未来的行驶轨迹。是超车,还是刹车,是并线,还是继续向前行走,是准备转弯,还是掉头,如何不和其他车辆发生冲突,不碰撞行人,这个时候路径规划要考虑的东西就很多了。当然,除了技术之外,行人的舒适度也是路径规划必须考虑的一个重要指标。

5、控制

有了规划给出的局部路径,这个时候就需要利用特定的控制算法对车辆进行控制,使得车辆行驶轨迹和我们设计的轨迹拟合在一起。这中间或许存在误差,但是误差必须尽量小。一方面,车辆要对速度进行纵向控制,目前PID用的较多,但是体验较差;另一方面,车辆要对方向进行横向控制,目前LQR用的较多。车辆控制的时候必须平顺舒缓,否则会给乘客带来很不好的用户体验。为什么一般来说,自动驾驶和电动汽车搭配较好,答案就是电动汽车可以在开机一刹那全功率输出,而燃油车有复杂的发动机模型、变速器模型,完全非线性的动力控制对于新能源汽车制造公司来说,控制难度较大。

6、自动泊车

车辆行驶到目的地之后,如何自动泊车也是很重要的一个问题。只不过,目前大多数泊车还是半自动泊车,真正做到全场景自动泊车的还不多,这或许也是未来发展的一个方向吧。

7、学习资料

目前关于自动驾驶资料这块,我觉得apollo出品的视频资料还是非常不错的,建议大家可以好好学习一下,http://apollo.auto/devcenter/devcenter_cn.html 。自动驾驶本身的流程其实是很清晰的,关键是如何把自动驾驶做的稳定、高效、安全、覆盖所有的corner case、成本可控,并且使得人们相信自动驾驶的安全性远超过人类驾驶,这就非常困难了。目前,很多公司在系统设计、测试、验证方面都做了一些探索,后续可以好好聊一聊,平凡的程序员。

原文地址:https://www.cnblogs.com/wanghuaijun/p/9648557.html

时间: 2024-11-09 00:10:56

无人驾驶入门(基本流程)的相关文章

无人驾驶入门2:高精度地图

自从上次发布了<无人驾驶入门1:无人驾驶概览>,就收到了不少的鼓励和鞭策,包括前领导的肯定.那我们赶紧来学习第二课关于高精度地图的课程吧. 第二课: 高精度地图 课程简介:了解高精度地图的实现逻辑,这是 Apollo 定位.感知.规划模块的基础. 1.地图简介 略 2.Sebastian介绍高精度地图 略 3.高精度地图vs传统地图 传统地图能够拥有导航路径规划.拥堵信息提示.多条路径规划的时间等信息,甚至可以获得路口是否有信号灯.道路上是否有测速照相等信息. 高精度地图更包含了大量驾驶辅助信

django入门 -- 简单流程

django入门 -- 简单流程 这里简单的演示完成一个 django 大概流程,后面会有详细解释 搭建开发环境 以下使用的是 ubuntu 系统 在生产环境中,有的时候,我们开发的项目可能用的是几个不同的 环境,所以通常我们会创建虚拟环境,在虚拟环境中安装我们需要的 配置,这里从配置虚拟环境开始 创建虚拟环境 创建:mkvirtualenv [虚拟环境名称] 删除:rmvirtualenv [虚拟环境名称] 进入:workon [虚拟环境名称] 退出:deactivate 所有的虚拟环境,都位

Dart入门—控制流程与其他

Dart入门-控制流程与其他 控制流程 if~else if语句和可选的else语句,简单的if语句可以用条件运算符( ? : )来处理 if (isRaining()) { you.bringRainCoat(); } else if (isSnowing()) { you.wearJacket(); } else { car.putTopDown(); } for 使用for循环进行迭代 var message = new StringBuffer("Dart is fun");

UDK——入门开发流程

1.入门级参考UnrealScript代码 UnrealScript模仿JAVA,但是又有巨大的不同,主要是它本身具有完善的结构,貌似UDK把一切都安排好了,就像在盖楼一样,面对一幢已经完工的设计精巧的大楼,你压根不知道怎么把你的设计在原有的大楼上付诸实施,在刚接触UnrealScript开发时,看教程也是云里雾里,在此推荐几个入门级的指南,能帮你对UnrealScript有个大概的认识.尤其是推荐的角色技术指南和相机技术指南. 游戏性编程:http://udn.epicgames.com/Th

python入门之流程控制

python入门之流程控制 一.什么叫流程控制 所谓流程控制就是控制流程,具体指控制程序的执行流程,而执行流程分为三种结构:顺序结构(之前写的代码都是顺序结构),分支结构(用到if判断).循环结构(用where与for) 二.分支结构 2.1什么是分支结构 分支结构就是根据条件判断的真假去执行不同分支对应的子代码 2.2为什么要使用分支结构 程序中需要有相应的机制用来控制计算机具备人的判断能力 2.3如何使用分支结构 if 主要用来判断事物的对错,真假是否可行 如: 1.前面有一个小姐姐年龄在2

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

[1] 微信公众号开发 - 入门基本流程

1.公众号的类别和注册 1.1 公众号类别 微信公众号目前有三种,订阅号.服务号.企业号,另外还有一种后来推出的和公众号带点关系的小程序. 订阅号.服务号和企业号的功能区别如下(更多详细区别戳参考链接): 而在我们微信的日常使用中可以看到,订阅号会集中放置在"订阅号"中,不会直接出现在聊天栏,而是放在二级目录下(如虎嗅网.36氦).服务号的话,则是直接放在聊天面板的一级目录中的(如中国移动10086),主要是用以部分大公司企业提供服务,而订阅号主打是咨询和媒体.而企业号主要是用于公司内

汇编语言入门:流程控制

流程控制:顺序,分支,循环 程序计数器PC中存储当前执行的程序在EM中的位置 汇编里面,用比较.跳转实现流程控制. 1.顺序:PC+1(不一定加一,看指令长度) 2.分支循环,直接赋给PC值,执行指定地址的程序 有时候需要程序有一定的流程控制能力,它不是老老实实按照顺序来执行的,中间可能会跳过一些代码 修改PC值,不可用MOV指令,PC是特殊的寄存器,特殊对待,跳转指令修改其值. 跳转指令: 1 ja 大于时跳转 2 jae 大于等于 3 jb 小于 4 jbe 小于等于 5 je 相等 6 j

Cordys BOP 4平台开发入门实战演练——流程建模开发(BPM)

1.流程建模开始 在Workspace的项目中,本文项目名称为:Training_WSApp.在项目中根目录下建立BPM文件夹,然后鼠标右键,在弹出菜单中选择New ->Business Process Model组件,进行流程建模开发. 图1 图2 2.图形化建模 在Business Process Model工作台上,图形化.拖拽绘制流程图. 图3 (1)为BPM流程配置表单(新建) 图4 注意:发布表单 图5 在Business Process Model界面中,在其左下角选择Worksp