无人驾驶汽车系统入门
文章平均质量分 83
本专栏将围绕当前使用的最先进的无人驾驶汽车相关技术,一步一步地带领大家学习并且掌握无人驾驶系统的每一个模块的理论基础和实现细节。
AdamShan
奔驰自动驾驶算法专家,谷歌认证机器学习专家,兰州大学无人驾驶团队创始人,主攻深度学习,无人驾驶汽车方向,著有《无人驾驶原理与实践》一书。
展开
-
无人驾驶汽车系统入门(三十二)——ROS2概述和实践入门(一)
无人驾驶汽车系统入门(三十二)——ROS2概述和实践入门(一)ROS可以说是目前机器人相关开源社区最流行的项目之一,它是一个易用且完备的机器人开发框架、生态乃至社区,海量的机器人开源项目(涵盖感知、规划、控制、定位、SLAM和建图、可视化等几乎所有机器人领域)均使用ROS作为基础。以自动驾驶汽车为代表的新的机器人应用场景对于中间层和开发框架在实时性、可靠性、伸缩性、跨平台可移植等方面提出了大量新的需求,ROS显然不能满足这些需求,ROS2因此产生,在经历了若干年的迭代后,ROS2项目目前已经相对完备和稳原创 2021-06-29 17:39:42 · 13513 阅读 · 13 评论 -
无人驾驶汽车系统入门(三十一)——点云分割和聚类算法详解
无人驾驶汽车系统入门(三十一)——点云分割和聚类算法详解本篇详细讲解点云处理中的基本分割和聚类的算法原理。Lidar基本常识lidar的分辨率要高于radar,但是radar可以直接测量目标的速度。通过融合两者,可以获得对目标较好的位置和速度估计。激光雷达坐标系:右手法则,大拇指朝上为z,食指朝前为x,中指朝左为y, lidar的解析度很大程度上取决于线数,其解析度指标分为横向解析度和纵向解析度,横向解析度即一条激光束扫描一圈(360度)的反射点的数量,作为参考,Velodyne的16线激光雷达原创 2021-03-22 17:31:14 · 16756 阅读 · 5 评论 -
无人驾驶汽车系统入门(三十)——基于深度神经网络LaneNet的车道线检测及ROS实现
无人驾驶汽车系统入门(三十)——基于深度神经网络LaneNet的车道线检测及ROS实现前面的博文介绍了基于传统视觉的车道线检测方法,传统视觉车道线检测方法主要分为提取特征、车道像素聚类和车道线多项式拟合三个步骤。然而,无论是颜色特征还是梯度特征,人为设计的特征阈值存在鲁棒性差的问题,深度学习方法为车道线的检测带来了高鲁棒性的解决思路,在近年来逐步替代了传统视觉方法,本文介绍一种用于车道线检测的...原创 2019-05-26 17:43:27 · 27029 阅读 · 41 评论 -
无人驾驶汽车系统入门(二十九)——使用TensorFlow Object Detection API分别在GPU和Google Cloud TPU上训练交通信号灯检测神经网络
本文将解决如何使用TensorFlow Object Detection API训练交通信号灯检测网络,使用Lisa数据集,通过简单脚本将数据集整理为tf record格式,我们将分别在本地的GPU和Google Cloud提供的TPU上进行训练,最后导出网络的protocbuf权重,在jupyter notebook中进行模型验证。首先感谢谷歌TensorFlow Research Clo...原创 2019-03-17 21:41:33 · 7693 阅读 · 10 评论 -
无人驾驶汽车系统入门(二十八)——基于VoxelNet的激光雷达点云车辆检测及ROS实现
无人驾驶汽车系统入门(二十八)——基于VoxelNet的激光雷达点云车辆检测及ROS实现前文我们提到使用SqueezeSeg进行了三维点云的分割,由于采用的是SqueezeNet作为特征提取网络,该方法的处理速度相当迅速(在单GPU加速的情况下可达到100FPS以上的效率),然而,该方法存在如下的问题:第一,虽然采用了CRF改进边界模糊的问题,但是从实践结果来看,其分割的精度仍然偏低;第二,该...原创 2018-12-05 15:33:40 · 27138 阅读 · 53 评论 -
无人驾驶汽车系统入门(二十七)——基于地面平面拟合的激光雷达地面分割方法和ROS实现
无人驾驶汽车系统入门(二十七)——基于地面平面拟合的激光雷达地面分割方法和ROS实现在博客的第二十四篇中,我们介绍了一种基于射线的地面过滤方法,此方法能够很好的完成地面分割,但是存在几点不足:第一,存在少量噪点,不能彻底过滤出地面;第二,非地面的点容易被错误分类,造成非地面点缺失;第三,对于目标接近激光雷达盲区的情况,会出现误分割,即将非地面点云分割为地面。通过本文我们一起学习一种新的地面分割...原创 2018-11-27 17:02:04 · 28444 阅读 · 42 评论 -
无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现
无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的对象进行特征提取,紧接着我们训练一个分类器实现对这些对象的分类,这是一种基于激光雷达的目标检测方法。近年来,随着深度学习在图像视觉领域的发展,一类基于单纯的深度学习模型的点云目标检测方法被提出和应用...原创 2018-10-30 16:26:26 · 47181 阅读 · 73 评论 -
无人驾驶汽车系统入门(一)——卡尔曼滤波与目标追踪
前言:随着深度学习近几年来的突破性进展,无人驾驶汽车也在这些年开始不断向商用化推进。很显然,无人驾驶汽车已经不是遥不可及的“未来技术”了,未来10年必将成为一个巨大的市场。本系列博客将围绕当前使用的最先进的无人驾驶汽车相关技术,一步一步地带领大家学习并且掌握无人驾驶系统的每一个模块的理论基础和实现细节。由于无人驾驶汽车系统构成及其复杂,本系列博客仅讨论软件部分的内容,关于汽车,传感器和底层的硬件,不原创 2017-10-16 12:30:48 · 92352 阅读 · 61 评论 -
无人驾驶汽车系统入门(二)——高级运动模型和扩展卡尔曼滤波
前言:上一篇文章的最后我们提到卡尔曼滤波存在着一个非常大的局限性——它仅能对线性的处理模型和测量模型进行精确的估计,在非线性的场景中并不能达到最优的估计效果。所以之前为了保证我们的处理模型是线性的,我们上一节中使用了恒定速度模型,然后将估计目标的加减速用处理噪声来表示,这一模型用来估算行人的状态其实已经足够了,但是在现实的驾驶环境中,我们不仅要估计行人,我们除了估计行人状态以外,我们还需要估计其他原创 2017-10-17 20:22:22 · 67063 阅读 · 92 评论 -
无人驾驶汽车系统入门(三)——无损卡尔曼滤波,目标追踪,C++
前面两篇文章我们了解了卡尔曼滤波以及扩展卡尔曼滤波在目标追踪的应用,我们在上一篇文章中还具体用Python实现了EKF,但是细心的同学会发现,EKF的效率确实很低,计算雅可比矩阵确实是一个很费时的操作,当问题(非线性的)一旦变得复杂,其计算量就变得十分不可控制。在此再向大家接受一种滤波——无损卡尔曼滤波(Unscented Kalman Filter, UKF)创作不易,转载请注明来源:ht原创 2017-10-26 21:37:15 · 35729 阅读 · 32 评论 -
无人驾驶汽车系统入门(四)——反馈控制入门,PID控制
前面几篇博客介绍了卡尔曼滤波的一些基本算法,其实目标追踪,定位,传感器融合还有很多问题要处理,这些我们在以后的系列博客中在进一步细讲,现在我想给大家介绍一下无人驾驶汽车系统开发中需要的控制相关的理论和技术,还是和第一篇说的那样,我想到哪就写到哪,追踪和定位等更高级的算法我在后面会继续写。所以感兴趣的同学可以关注我的博客,无人驾驶汽车系统入门系列博客会一直更新下去。这一篇主要讲控制的入门,为什么需要原创 2017-11-06 15:41:42 · 31049 阅读 · 19 评论 -
无人驾驶汽车系统入门(五)——运动学自行车模型和动力学自行车模型
无人驾驶汽车系统入门(五)——运动学自行车模型和动力学自行车模型 在简要了解了PID控制以后,我们就要接触一些现代的控制算法。在了解高级的车辆控制算法之前,掌握车辆运动模型是非常有必要的。车辆运动模型就是一类能够描述我们的车辆的运动规律的模型。显然,越复杂的模型就越接近现实中的车辆运动规律,本节我们一起了解一下两个广泛使用的车辆模型——运动学自行车模型(Kinematic Bicycle原创 2017-12-02 16:59:21 · 75853 阅读 · 29 评论 -
无人驾驶汽车系统入门(六)——基于传统计算机视觉的车道线检测(1)
无人驾驶汽车系统入门(六)——基于传统计算机视觉的车道线检测(1) 感知,作为无人驾驶汽车系统中的“眼睛”,是目前无人驾驶汽车量产和商用化的最大障碍之一(技术角度), 目前,高等级的无人驾驶汽车系统仍然非常依赖于激光雷达的测量,通过激光雷达构造周围环境的3D地图,从而为无人驾驶系统的决策和规划提供准确的环境信息和自身相对的位置信息。然而,激光雷达雷达在成本,解析度的方面都不理想,所以基于视原创 2017-12-04 18:52:02 · 27872 阅读 · 15 评论 -
无人驾驶汽车系统入门(七)——基于传统计算机视觉的车道线检测(2)
无人驾驶汽车系统入门(七)——基于传统计算机视觉的车道线检测(2)原创不易,转载请注明来源:http://blog.csdn.net/adamshan/article/details/78733302接上文,在获得ROI(透视变换)以后,我们对得到的“鸟瞰图”应用色彩阈值化和梯度阈值化,以得到鸟瞰图中“可能为”车道线的像素然后再使用滑动窗口来确定车道线的多项式系数,下面我们来具体讨论这两个步骤。边缘原创 2017-12-06 18:09:41 · 29777 阅读 · 23 评论 -
无人驾驶汽车系统入门(八)——机器学习入门
无人驾驶汽车系统入门(八)——机器学习入门 在上一章中,我们介绍了基于传统的计算机视觉的技术实现的车道线检测,在这个过程中我们不难发现,使用传统的计算机视觉,往往需要人为地设计特征,这些特征对于不同的任务来说是不同的,车道线检测和行人检测要分别设计特征,另一方面,人为地设计特征往往会存在疏漏,对于无人驾驶汽车来说,忽视了某种情况的程序设计缺陷可能会造成严重的后果。 在本节我们开始了解机器学原创 2017-12-29 12:31:38 · 17221 阅读 · 2 评论 -
无人驾驶汽车系统入门(九)——神经网络基础
无人驾驶汽车系统入门(九)——神经网络基础 在上一节中,我们介绍了机器学习的相关基础,尤其是知道了监督学习的基本构成因素:数据,模型,策略和算法。在本节,我们具体学习一种监督学习算法——神经网络。现代深度学习模型其本质均为人工神经网络,所以在进一步探索深度学习在无人驾驶中的应用之前,我们先了解一下神经网络的理论基础和代码实现。创作不易,转载请注明出处:http://blog.csdn原创 2018-01-08 16:52:47 · 13434 阅读 · 5 评论 -
无人驾驶汽车系统入门(十)——基于运动学模型的模型预测控制
无人驾驶汽车系统入门(十)——基于运动学模型的模型预测控制 在前面的第五篇博客中,我们介绍了两种常见的车辆模型——运动学自行车模型和动力学自行车模型,本节我们基于运动学车辆模型引入一种新的控制理论—— 模型预测性控制 (Model Predictive Control) ,传统的PID控制器简单易于实现,被广泛应用,但是它并不一定能够以最“节约”的方式进行控制,即所谓的 优化控制, 而MP原创 2018-01-17 12:03:57 · 44401 阅读 · 21 评论 -
无人驾驶汽车系统入门(十一)——深度前馈网络,深度学习的正则化,交通信号识别
无人驾驶汽车系统入门(十一)——深度前馈网络,深度学习的正则化,交通信号识别 在第九篇博客中我们介绍了神经网络,它是一种机器学习方法,基于经验风险最小化策略,凭借这神经网络的拟合任意函数的能力,我们可以使用神经网络来表示任意的模式。然而,在前几十年,神经网络并没有受到人们的重视,直到深度学习的出现,人们利用深度学习解决了不少实际问题(即一些落地性质的商业应用),神经网络才成为学界和工业界关原创 2018-01-22 12:29:06 · 11172 阅读 · 5 评论 -
无人驾驶汽车系统入门(十二)——卷积神经网络入门,基于深度学习的车辆实时检测
无人驾驶汽车系统入门(十二)——卷积神经网络入门,基于深度学习的车辆实时检测 上篇文章我们讲到能否尽可能利用上图像的二维特征来设计神经网络,以此来进一步提高识别的精度。在这篇博客中,我们学习一类专门用来处理具有网格结构的数据的神经网络——卷积网络(Convolutional Network)。此外,我们使用keras来实现一种深层卷积网络——YOLO,使用YOLO对车辆进行实时检测。原创 2018-01-29 12:17:25 · 48759 阅读 · 43 评论 -
无人驾驶汽车系统入门(十三)——正态分布变换(NDT)配准与无人车定位
无人驾驶汽车系统入门(十三)——正态分布变换(NDT)配准与无人车定位 定位即确定无人车在这个世界中的哪个位置,是无人驾驶技术栈中必不可少的一部分。对于无人车而言,对定位的要求极高,一般情况下,我们希望我们的无人车能够达到 厘米级 的定位精度,单纯使用GPS能够达到米级别的定位,显然,无人车的定位模块需要其他的技术支持以进一步提高定位的精度。本文介绍一种依赖于高精度地图和激光雷达的定位技术原创 2018-02-01 17:02:58 · 30163 阅读 · 23 评论 -
无人驾驶汽车系统入门(十四)——ROS入门与实践(1)
无人驾驶汽车系统入门(十四)——ROS入门与实践(1) 前言:作为目前最广泛使用的开源机器人软件平台,ROS(Robot Operating System)极大的提升了机器人开发的效率。目前无人驾驶系统的实际实现仍然依赖于ROS,作为一个相对成熟的机器人软件平台,ROS虽然存在一些缺点,在无人驾驶系统的系统实现上,ROS仍然是开源框架中最好的选择,这也是为什么诸如Apollo,Autowa...原创 2018-03-22 14:17:07 · 32642 阅读 · 4 评论 -
无人驾驶汽车系统入门(十五)——ROS入门与实践(2)
无人驾驶汽车系统入门(十五)——ROS入门与实践(2) 上一节我们讲了ros的核心概念以及命令行的基本操作,在本节我们一起了解一下ros的基本编程,我们讲通过Husky模拟器完成一个简易的ROS包,通过实例了解ROS下的CMake文件的语法,然后使用Rviz可视化激光扫描的结果创作不易,转载请注明出处:https://blog.csdn.net/AdamShan/article/...原创 2018-04-10 16:06:11 · 12045 阅读 · 1 评论 -
无人驾驶汽车系统入门(十六)——最短路径搜索之A*算法
无人驾驶汽车系统入门(十六)——最短路径搜索之A*算法 路线规划中一个很核心的问题即最短路径的搜索,说到最短路径的搜索我们就不得不提A*算法,虽然原始的A*算法属于离散路径搜索算法(我们的世界是连续的),但是其使用启发式搜索函数的理念却影响着我们后面会介绍的连续路径搜索算法,所以在介绍连续路径搜索算法之前,理解基本的A*算法是很有必要的,本节我们从广度优先算法出发,一步步改良算法直到引出A...原创 2018-04-14 22:35:03 · 19115 阅读 · 6 评论 -
无人驾驶汽车系统入门(十七)——无人驾驶系统基本框架
无人驾驶汽车系统入门(十七)——无人驾驶系统基本框架 前面的文章基本上是想写什么写什么,缺乏条理,本节我们完整的梳理一遍无人驾驶系统的基本框架,帮助读者建立对整个系统的完整认识无人驾驶系统的核心可以概述为三个部分:感知(Perception),规划(Planning)和控制(Control),这些部分的交互以及其与车辆硬件,其他车辆的交互可以用下图表示: 由上图可知,无人驾驶...原创 2018-05-29 10:50:37 · 43740 阅读 · 15 评论 -
无人驾驶汽车系统入门(十八)——使用pure pursuit实现无人车轨迹追踪
无人驾驶汽车系统入门(十八)——使用pure pursuit实现无人车轨迹追踪 对于无人车辆来说,在规划好路径以后(这个路径我们通常称为全局路径),全局路径由一系列路径点构成,这些路径点只要包含空间位置信息即可,也可以包含姿态信息,但是不需要与时间相关,这些路径点被称为全局路径点(Global Waypoint),路径(Path)和轨迹(Trajectory)的区别就在于,轨迹还包含了时间...原创 2018-06-03 11:22:40 · 68389 阅读 · 47 评论 -
无人驾驶汽车系统入门(十九)——分层有限状态机和无人车行为规划
分层有限状态机和无人车行为规划 行为规划又称为行为决策,是无人车规划模块三层(任务,行为,动作)的中间层,本文将介绍行为规划的基本概念,设计核心,同时介绍一种具体的无人车行为规划方法——分层有限状态机,行为规划(Behavior Planning)是无人车规划模块的一层,位于全局任务规划和底层的动作规划层之间,驾驶行为规划也被称为驾驶行为决策,这一层的作用主要是依据来自上层(任务规划...原创 2018-06-09 15:08:13 · 20257 阅读 · 4 评论 -
无人驾驶汽车系统入门(二十)——基于自由边界三次样条插值的无人车路径生成
无人驾驶汽车系统入门(二十)——基于自由边界三次样条插值的无人车路径生成 前面我们提到,轨迹即包含时间这一维度的路径,而无人车的动作规划问题实际上就是要根据初始配置和目标配置生成一序列的动作,一种简单的思路即生成从当前位置x到目标位置y的轨迹,然后通过pure pursuit方法来完成循迹,其中,轨迹生成是非常重要的一步,在本节我们介绍一种基于三次样条插值的路径生成方法,后面我们将结合Mo...原创 2018-06-14 18:45:02 · 19824 阅读 · 10 评论 -
无人驾驶汽车系统入门(二十一)——基于Frenet优化轨迹的无人车动作规划方法
动作规划动作在无人车规划模块的最底层,它负责根据当前配置和目标配置生成一序列的动作,我们前面讨论的三次样条插值实际上只是一个简单的路径,而非我们最终能够执行的轨迹,本文介绍一种基于Frenet坐标系的优化轨迹动作规划方法,该方法在高速情况下的ACC辅助驾驶和无人驾驶都具有很强的实用性,是目前普遍采用的一种动作规划算法。基于Frenet坐标系的动作规划方法由于是由BMW的Moritz W...原创 2018-06-22 23:20:35 · 48758 阅读 · 43 评论 -
无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定
无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定 单目相机分辨率高,我们可以使用各种深度学习算法完成对目标检测,但是缺乏深度,坐标等信息。激光雷达能够获得目标相当精确的三维坐标信息,但是分辨率低,目前主流的为64线和32线,稀疏的电云数据为模式识别带来了困难。一种简单的思路是融合相机和激光雷达对目标障碍物完成检测,在图像层面使用深度学习方法将目标检测识别,...原创 2018-08-14 17:21:16 · 61989 阅读 · 116 评论 -
无人驾驶汽车系统入门(二十三)——迁移学习和端到端无人驾驶
迁移学习和端到端无人驾驶 前面我们介绍了神经网络和深度学习的基础知识,在本文中我们将介绍迁移学习的概念,并将迁移学习应用于端到端无人驾驶模型。一般来说,大型深层神经网络的训练对计算资源要求较高。然而,很多普通开发者只拥有简单的深度学习计算环境,这成为阻碍深度学习广泛应用的瓶颈之一。例如,为了训练一个深度为50层的残差神经网络,利用NVIDIA M40 GPU需要大约14天才能完成模型训练。...原创 2018-09-05 09:50:29 · 13455 阅读 · 5 评论 -
无人驾驶汽车系统入门(二十四)——激光雷达的地面-非地面分割和pcl_ros实践
无人驾驶汽车系统入门(二十四)——激光雷达的地面-非地面分割和pcl_ros实践在无人驾驶的雷达感知中,将雷达点云地面分割出来是一步基本的操作,这一步操作主要能够改善地面点对于地面以上的目标的点云聚类的影响。本文首先带大家入门pcl_ros,首先我们使用pcl_ros编写一个简单的ros节点,对输入点云进行Voxel Grid Filter。接着我们在此实践的基础上实现点云地面和非地面的分割节...原创 2018-09-29 18:19:10 · 46171 阅读 · 88 评论 -
无人驾驶汽车系统入门(二十五)——基于欧几里德聚类的激光雷达点云分割及ROS实现
无人驾驶汽车系统入门(二十五)——基于欧几里德聚类的激光雷达点云分割及ROS实现上一篇文章中我们介绍了一种基于射线坡度阈值的地面分割方法,并且我们使用pcl_ros实现了一个简单的节点,在完成了点云的地面分割以后,为了使用激光雷达完成环境感知,我们通常会对非地面点云进行进一步的分割,换句话说,我们希望对地面以上的障碍物的点云进行聚类,通过聚类,我们可以检测出障碍物的边缘,并且使用3维的Boun...原创 2018-10-11 17:14:28 · 45684 阅读 · 86 评论