自动驾驶
文章平均质量分 91
自动驾驶技术分享
一实相印
前百度、前蔚来自动驾驶团队成员,传统车企自动驾驶软件架构师。
展开
-
自动驾驶(八十八)---------通讯之SOMEIP
服务导向架构(SOA,Service-Oriented Architecture)是一种设计软件系统的方法,强调通过可重用的服务来实现系统的松散耦合。每个服务是独立的功能单元,可以被不同的应用程序使用。这些服务通过标准化的接口和协议进行通信和数据交换。松散耦合:服务之间是独立的,减少了组件之间的依赖性,便于系统的扩展和维护。可重用性:服务可以被多个应用程序重复使用,提高了代码的重用性和开发效率。原创 2024-07-25 14:21:58 · 1020 阅读 · 0 评论 -
自动驾驶(八十七)---------虚拟机Hypervisor
在汽车电子电气架构发展中,SOA和中央计算是重要的趋势,boach的下图广为流传。因为仪表、座舱、智驾根据不同的需求选择不同的系统,这就导致虚拟机技术是实现中央计算的重要技术。原创 2024-07-24 17:53:16 · 1099 阅读 · 0 评论 -
自动驾驶(八十六)---------通信中间件Fdbus
Fdbus 全称,提供IPC+RPC功能。适用于多种OS,FDBus 的设计目标是提供高性能、低延迟和低资源开销的消息传递机制。它支持多种传输协议和底层网络架构,使得开发者可以在不同平台和环境中使用同一套接口进行通信,简化了跨平台开发的复杂性。高性能和低延迟:FDBus 的轻量级设计和高效的消息传递机制,确保了低延迟和高吞吐量,适用于对实时性要求高的应用场景。跨平台支持:FDBus 支持多种操作系统和硬件平台,包括 Windows、Linux 和嵌入式系统。原创 2024-07-24 17:14:08 · 1499 阅读 · 0 评论 -
自动驾驶(八十五)---------端到端要来了
特斯拉FSD V12据说马上要推送国内,看油管视频貌似效果很好,这不得不引起警觉,端到端的自动驾驶真的要来了!自动驾驶行业里的芸芸众生将不得不面临新一轮的洗牌。我从不怀疑新技术更新迭代的速度,看看SpaceX发火箭的情况就知道:马斯克和资本家都残忍,端到端一上线,立刻裁员10%,相信这中间不少是V12之前的功勋人员,那也毫不留情一脚踢开!幸运的是,在中国还有一丝喘息之机,让你在有稳定收入的时候,能思考未来;这并不是中国资本家底线更高,而是他们缺少透过迷雾看穿本质的能力和决心。原创 2024-04-26 13:26:58 · 1298 阅读 · 0 评论 -
自动驾驶(八十四)---------中间件对比分析
在自动驾驶架构中,中间件是重要部分,他是处在OS内核的上一层、功能软件的下一层的软件就是中间件,通用架构如下:原创 2024-04-17 11:11:40 · 2812 阅读 · 4 评论 -
自动驾驶(八十三)---------Apollo之规划模块
规划是自动驾驶的重心,所有模块都是围绕规划而存在的,之前的模块以及介绍了很多这方面的内容,首先一起回顾一下: 1. 初探:内容包含:带约束的多项式拟合算法、贝赛尔曲线、三次样条插值公式。 2.再论:内容包含:A*算法、行为规划介绍、有限分层状态机。 3. 三顾:内容包含:主要介绍apollo的ppt 4. 四解:内容包含:基于优化的三次样条 5. 五阶:内容包含:LatticePlan的轨迹规划 以上种...原创 2021-10-24 14:18:46 · 3091 阅读 · 1 评论 -
自动驾驶(八十一)---------Apollo之感知模块
预则立不预则废,本命年要注意,真男人不回头。 apollo的感知分为以下几个方面:lidar、ladar、camera、fusion。1. Camera感知 Apollo视觉检测,地址在:Apollo/modules/perception/camera/lib/obstacle; 主要是用了YOLOv3的检测方法,一方面我们需要对多个类别进行识别:车辆、卡车、骑车人和行人等;另一方面一个网络识别一个类别精度更高,但是也需要考虑性能问题。所以在Apollo中...原创 2021-01-08 10:22:18 · 3462 阅读 · 0 评论 -
自动驾驶(八十)---------Apollo之导航模块
没想到自动驾驶系列文章能写到80篇,因为我之前做事大部分都很浮躁,总是蜻蜓点水、走马观花。仔细想来支持我写到现在的最大原因是:分享的快乐和成长的乐趣。 说到成长,很多以前似懂非懂的技术问题,都在我整理资料中梳理清楚,并且能让我站在系统的、更高的维度来看待每一个技术和自动驾驶的现状。也让我更加自信的面对工作和生活中的不确定性。 再说分享的快乐,写博客不想挣一分钱,所以博客永远是免费分享给大家,我有不错的薪水,在上海也能很好过自己的生活,已经很感恩这一切了,不需要在这来精打细算...原创 2020-12-30 17:07:06 · 2427 阅读 · 1 评论 -
自动驾驶(七十九)---------Apollo之定位模块
在现阶段的自动驾驶中,定位一直是很重要的话题;最近特斯拉的开放道路自动驾驶一定程度上降低了定位的重要性,采用实时图像分析生成概率地图,这项技术还有待市场去打磨的更加成熟。在我看来作为一个自动驾驶工程师,成长的线路很清晰:Apollo系统作为基础,特斯拉的技术才是你追求的方向。每篇博客之前,喜欢加一些现阶段的感悟,一者话题引入;二者抒自己所想,让技术不再冰冷。诚然时光荏苒,纸长情短,以后再看时难免觉得幼稚;哇!你又成长了。 说Apollo的定位之前,对场景我们先进行大概的梳理:首先...原创 2020-12-21 18:02:10 · 3046 阅读 · 1 评论 -
自动驾驶(七十八)---------Apollo之标定模块
apollo中有很多模块,在我的apollo系列文章中,打算把重要的模块单独写一遍文章详细介绍,分为:标定、定位、导航、预测、规划、控制。这里我们先从标定说起。。。。。 在之前的文章中我介绍了很多标定相关的知识,Apollo系列的文章,主要从apollo的代码和思想来介绍标定。...原创 2020-12-14 14:53:43 · 4038 阅读 · 0 评论 -
自动驾驶(七十七)---------Apollo平台介绍
目前Apollo已经更新到6.0,整体架构和功能都已经很成熟了,Apollo开源无疑极大的提高了自动驾驶行业的整体水平,所以对于研究自动驾驶的人来说,apollo可以说是入场券,最近应该是我比较轻松的时间,准备系统的学习一下Apollo的代码和思想,过完年去新公司应该会比较忙了。1. Apollo与ROS Apollo项目基于ROS,但是对其进行了改造,主要包括下面三个方面:通信性能优化:将通过共享内存来减少数据拷贝,以提升通信性能。 去中心化网络拓扑:Apollo...原创 2020-12-14 13:47:53 · 2625 阅读 · 0 评论 -
自动驾驶(七十六)---------Apollo MPC之代码解析
最近一直在调LQR上车的效果,初见成效,所以也很好奇Apollo的MPC控制算法,没有项目驱动,只能靠自己的驱动力了,这里结合代码分析理论,详细梳理一遍apollo的MPC算法。 首先MPC的代码在apollo文件地址为:1. 初始化加载MPC的参数和配置:,主要包含vehicle_param、速度和转角限制等。 车辆运动学模型及其离散化:;包括矩阵A,矩阵B,矩阵C,矩阵K,矩阵R,矩阵Q,加载MPC增益调度序列,初始化滤波器。 其中调度增益gain...原创 2020-12-08 16:31:21 · 8063 阅读 · 1 评论 -
自动驾驶(七十五)---------几种硬件平台对比
上一篇主要介绍了硬件平台的基本情况,并没有详细的分析和对比每种硬件平台的优劣,这里我选取几种常见的硬件平台,从输入、硬件架构、输出等几个方面进行详细对比,以便深入了解各种平台。 这里我主要对比:恩智浦S32V、英伟达DRIVE PX2、TI的TDA4、寒武纪1M、高通SA8155。1 .恩智浦S32V S32V是恩智浦推出的一款汽车视觉微处理器,主要参数如下:硬件方面:4 x A53@1GHz,1 x M4@133MHz内核,2个APEX核,3D GPU,...原创 2020-10-17 13:03:37 · 13302 阅读 · 2 评论 -
自动驾驶(七十四)---------硬件平台介绍
在整个自动驾驶中,我们之前讨论了很多软件算法,很少涉及到硬件领域,今天结合我接触的一些硬件知识做一个总结,整理硬件在整个自动驾驶中的作用和市面上常见的几种硬件。1. 软硬件架构 软硬件架构也是三部分组成:硬件平台,操作系统,软件算法。 硬件平台具体是指计算平台,目前主流的自动驾驶芯片解决方案主要包括GPU、FPGA、DSP和ASIC四种。其作用主要包含三个方面:提供传感器数据的接口,把传感器的数据导入计算平台。 分析传感器传入的数据,结合车辆自...原创 2020-10-16 12:05:22 · 14410 阅读 · 0 评论 -
自动驾驶(七十三)---------离散点计算曲率
在自动驾驶中,很常见的一个问题是通过离散点计算曲率,奇怪的是网上居然找不到我需要的资料,也许是我描述的不对,总之找了很久都不是很满意,所以干脆自己来总结一下吧。 网上也不是找不到资料,但是大部分都是这样: (1)通过曲率公式,首先你要知道曲线的表达式,然后代入公式计算。 (2)离散点也需要先polyfit拟合成多项式,再利用上面的公式计算曲率。 (3)在matlab中,用csape()对离散点进行Spline插值,然...原创 2020-08-17 18:36:55 · 22606 阅读 · 12 评论 -
自动驾驶(七十二)---------LQR控制算法
之前有写过MPC的控制算法,主要介绍的也是理论部分,在实际使用过程中发现C++没有高效的优化方法,类似python中的cvxpy的库,所以想绕过去,研究一下LQR控制算法。1. PID控制系统 这里并不是要介绍PID系统,而是为了方便理解LQR,首先我们看PID系统中的P调节方法: 假设我们现在状态是x0,我们有状态方程 : (u为控制矩阵)...原创 2020-07-27 17:15:09 · 43191 阅读 · 19 评论 -
自动驾驶(六十八)---------ROS学习笔记(4)
前面我们实现了一个简单的ROS发送节点和接受信息的节点,在自动驾驶中最常遇到的场景是:两个或者几个节点相互通讯,不是单方面的发送信息,这里我们以实现两个整数求和为例,client端节点向server端节点发送a、b的请求,server端节点返回响应sum=a+b给client端节点.1.功能包的创建 在catkin_ws/src/目录下新建功能包service_...原创 2020-02-28 17:30:22 · 14060 阅读 · 0 评论 -
自动驾驶(六十七)---------ROS学习笔记(3)
前面介绍了ROS的原理,简单的编译,如何创建一个节点,和其他节点手法信息呢?本篇主要介绍这部分内容.1. 编写发布器节点 在catkin_ws中新建的功能包取名为topic_example, 在这个功能包中分别编写两个节点程序publish_node.cpp和subscribe_node.cpp,发布节点(publish_node)向话题(chatter)发布st...原创 2020-02-28 10:53:00 · 14818 阅读 · 0 评论 -
自动驾驶(六十六)---------ROS学习笔记(2)
前面介绍了ROS的基本概念, 还没介绍如何操作, 下面从操作层面结束ROS.1. 创建ROS工作空间 $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws $ catkin_make 其中catkin_ws是自定义的工作空间名,也就是文件夹名。2.配置环境变量 $source...原创 2020-02-26 18:05:50 · 14750 阅读 · 0 评论 -
自动驾驶(六十五)---------ROS学习笔记(1)
ROS是面向机器人的开源的元操作系统,它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、常用功能实现、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。在自动驾驶中ROS被广泛的应用,所以研究自动驾驶ROS是绕不过去的弯.下面整理了我学习的资料.1. 安装 ROS不能再详细的安装...原创 2020-02-26 16:25:51 · 15978 阅读 · 0 评论 -
自动驾驶(六十九)---------降维PCA、LDA
自动驾驶是一个系统工程, 不可能有一种方法包打天下, 它是由很多子功能配合而成, 这就要求我们对其他机器学习算法都能了解, 之前在视觉中有一些很好的方法, 这里也想整理出来, 供大家参考. 在深度学习之前, 特征提取是很重要的技术, 在这中间 主成分分析(PCA)经常出现, 主题模型算法(LDA)也类似, 这里系统的总结一下:原创 2020-03-28 21:17:18 · 12104 阅读 · 0 评论 -
自动驾驶(七十)---------五阶轨迹规划之LatticePlan
规划是门很深的学问,也是自动驾驶的核心功能,所以很难通过一两篇文字讲清楚,所以我也会持续更新,今天要讲的是Apollo的规划方式,网上有一篇ppt的介绍和我自己对源码的分析,总结出这样一篇文章,原计划是去年年底把我的博客冲到5000以内,但是去年公司发生一些事受到影响,还好年后又趋于稳定,但是不免又懈怠了下来,不过始终不忘初心,对于提高自己自动驾驶的能力念念不忘,相信博客还会持续更新。原创 2020-03-28 22:42:14 · 17836 阅读 · 3 评论 -
自动驾驶(六十四)---------匈牙利匹配
最近发现要写的东西很多,在轨迹规划中还有一大堆的新概念,但是要花大力气才能理解皮毛,所以调节一下,学点相对比较简单的概念,匈牙利匹配!1.匈牙利匹配 匈牙利匹配最早是在图论中出现的,至于如何在自动驾驶中得到应用,我们一点点展开: 我们的时代经过几代人不懈努力,房价终于赶英超美,也带来了剩男剩女大潮,假设你是媒人,手上有N个剩男、M个剩女,中间有很多相互有不同...原创 2020-01-05 17:58:30 · 13191 阅读 · 0 评论 -
自动驾驶(七十一)---------Pure Pursuit轨迹追踪
前面介绍过很多轨迹规划,也有很多控制相关的知识,例如pid调节、kalman 滤波、MPC等等。今天再学习一种轨迹追踪的方法,轨迹追踪是在有轨迹规划的基础上,如何实现车辆按照规划的轨迹行驶的问题,属于控制的范畴。原创 2020-03-29 14:14:10 · 14635 阅读 · 0 评论 -
自动驾驶(六十三)---------蒙特卡罗-马尔科夫链
前面介绍过蒙特卡罗搜索树和隐马尔可夫模型,今天要把这两种结果,恰好在自动驾驶中可以很好的应用,那么我们一点点展开。蒙特卡罗-马尔科夫链(MCMC),也有把马尔科夫链放在前面:马尔科夫链蒙特卡罗,这里我们采用周志华机器学习的叫法:蒙特卡罗-马尔科夫链。1.蒙特卡罗 对于求积分这件事而言,我是没有什么好印象的,笔者当年本科是数学,上大学过的很恍惚,当年第一次数学分析就挂科...原创 2020-01-05 16:30:33 · 11308 阅读 · 2 评论 -
自动驾驶(六十二)---------导航路径规划
实际上关于路径规划,我在轨迹规划中有介绍,主要是A*算法,但是目前有强需求,所以只能在系统总结一下了,可以算是水一篇文章,抓紧时间吧,有效的时间不多了! 导航路径规划需要掌握的方法我总结有四个:RRT、PRM、A*、hybrid A*。A*我之前有介绍:再论轨迹规划,这里就不做赘述。1. RRT RRT(快速探索随机树),首先在环境中,我们有一个起始点,定...原创 2020-01-04 10:25:25 · 14725 阅读 · 1 评论 -
自动驾驶(六十一)---------蒙特卡洛搜索树
首先祝我自己元旦快乐,也祝在这个日子里看我blog的粉丝元旦快乐,今天申请了加班所以有时间写blog,程序员的生活就是这么单纯.........在这个特殊的日子里,为了充实节日气氛,学习一个名字很长的知识--蒙特卡洛搜索树,如果要问和自动驾驶有什么关系,我想在决策的时候可以用到吧,只是博弈论暂时并没有引入进自动驾驶中。另外它和A*算法类似,在导航上也有应用的可能。 特别的...原创 2020-01-01 11:07:04 · 11655 阅读 · 0 评论 -
自动驾驶(六十)---------隐马尔可夫模型
之前有介绍过贝叶斯网络,隐马尔可夫模型是一种动态贝叶斯网络,是一种时序的概率模型,描述由一个隐的马尔科夫链随机生成的不可观察的隐状态序列,在每一个隐状态下随机产生观察值构成一个可观测的随机序列,在语音识别、自然语言处理等领域有广泛应用。 之所以要介绍隐马尔可夫模型,是因为自动驾驶中,时序是很重要但又没有得到足够重视的部分,无论是在预测、决策、控制中,上下文的连贯...原创 2019-12-27 21:26:02 · 12592 阅读 · 0 评论 -
自动驾驶(五十九)---------模糊逻辑
自动驾驶中在感知、决策、控制架构中,充满了各种参数的不确定性,例如mobileye识别的车道线confidence,决策中行人轨迹预测,控制中推算本车位置...总之在自动驾驶中,唯一确定的就是不确定本身了。既然如此,有没有一种满足这种特性的方法呢,如果能在数学上解决这个问题,说不定能更好的满足车辆控制的舒适性。1.布尔逻辑 要想了解模糊逻辑,首先我们要知道对应的另外...原创 2019-12-25 16:23:07 · 11543 阅读 · 1 评论 -
自动驾驶(五十八)---------自动驾驶2019年终盘点
年终将至,各种盘点总结,中国当下自动驾驶现状到底如何,站在这个时间点本文盘点一下,由于笔者个人无法深入调查,也只能从网络上的信息进行整理、分析归纳如下:1.百度阿波罗 2019年阿波罗进展很快,可能一般人并不知道,开放了全球首个“点到点城市自动驾驶”功能,Apollo拥有自动驾驶路测牌照数150张、智能驾驶专利数1237件、测试里程超300万公里、23个城市展开路测...原创 2019-12-23 20:29:51 · 11845 阅读 · 0 评论 -
自动驾驶(五十七)---------车身航迹推算
自动驾驶中kalman滤波随处可见,这中间不可避免的要知道预测模型,而预测模型很大程度上依赖于本车姿态变化的推算,俗称航迹推算,尤其在控制中,pid调节也是以此为基础。 之前的文章有零散的讨论过这方面的内容总结:惯性导航原理 激光点云配准 基于视觉的自定位车辆运动学模型 但是并没有系统的总结如何融合车身现有传感器,进行本车航迹推算。本文以常见传感...原创 2019-12-08 14:21:16 · 19821 阅读 · 8 评论 -
自动驾驶(五十六)---------Yawrate和Imu标定
前面介绍过GPS和IMU的惯导,也介绍过车辆轨迹预测,这中间很重要是为了车身航迹推算,但是在这之前,需要对传感器进行标定,本文主要介绍IMU的原理,从传感器限制角度介绍IMU的标定。1.传感器介绍 IMU是测量物体三轴姿态角及加速度的装置。一般IMU包括三轴陀螺仪及三轴加速度计,某些9轴IMU还包括三轴磁力计。首先介绍这三种传感器的原理。 1. ...原创 2019-12-06 17:57:30 · 24099 阅读 · 1 评论 -
自动驾驶(五十五)---------四解轨迹规划
前面已经三次讲过轨迹规划,还是如隔靴搔痒,诗不着题。所以想少一些理论,多一些实践的角度写轨迹规划,就从常见的场景展开:1.问题引入: 已知条件 车身传感器:车速、Yawrate、方向盘转角;车身周围车辆信息;车道线信息;一个模糊的目标点。求一条轨迹能到达目标点的位置和角度,轨迹要满足车辆运动学,舒适性,避障等要求。 怎么理解模糊的目标点?目标位置...原创 2019-12-03 18:48:55 · 15684 阅读 · 2 评论 -
自动驾驶(五十四)---------三顾轨迹规划
轨迹规划是自动驾驶技术中最重要的部分,之前的文章有一些这方面的介绍,但是并不全面和系统: 初探轨迹规划:主要从带约束的多项式拟合;贝赛尔曲线;三次样条差值;等角度介绍轨迹规划。 动态避障规划:主要从周围车辆预测;轨迹初始化;避障优化轨迹等角度介绍轨迹规划。 然而这些文章不够全面和系统,不免产生盲人摸象的感觉,这里结合百度Apollo和...原创 2019-12-02 14:50:35 · 11857 阅读 · 2 评论 -
自动驾驶(五十三)---------浅析深度学习与自动驾驶
之前有分析过深度学习和自动驾驶的关系,但是主要是在视觉的基础上来分析的:连接 这里想从各个角度来分析深度学习在自动驾驶中的应用,如果你正好有这方面的需要,不妨选择一个着力点,笔者从事自动驾驶3年来,也处于瓶颈期,需要在一个特定的领域深挖,这里也建议大家,在了解自动驾驶各模块之间的关系之后,需要在一个特定的领域深挖,才能称之为自动驾驶领域内的专家。又因为传统技术很难有所突破,深...原创 2019-11-29 16:35:05 · 13356 阅读 · 0 评论 -
自动驾驶(五十二)---------惯性导航原理
惯性导航一般集成在GPS设备中,都是由供应商集成,那在这里有什么讨论的必要呢,要知道在车辆行驶中,我们可以拿到GPS的yawrate和speed信号,而且车辆本身还有一套传感器获取yawrate和speed,又因为航迹推算是自动驾驶很重要的一部分,所以理解惯性导航的工作原理,能很好地帮助我们做基于车身的航迹推算。1.惯性导航 目前GNSS+IMU构成的组合导航系统...原创 2019-11-27 09:57:55 · 24002 阅读 · 0 评论 -
自动驾驶(五十一)---------ICCV 2019之无人驾驶
ICCV和CVPR是两大顶尖国际计算机视觉会议,ICCV2019有哪些研究成果呢?ICCV每两年举行一次,今年是在韩国首尔举行,共提交了1076篇论文。下面是关于感知、规划、建图&定位、自动驾驶数据管理四大方面的论文情况总结。1.感知 1.Fast PointR-CNN 论文 简介:腾讯和香港大学联合发表的论文基于KITTY提出了一...原创 2019-11-26 14:24:55 · 11576 阅读 · 0 评论 -
自动驾驶(五十)---------Gtest测试
本文将介绍单元测试工具Google Test(GTest)在Linux操作系统中测试环境的搭建方法。本文属于Google Test使用的基础教程。在Linux中使用Google Test之前,需要对如下知识有一些了解:C/C++编程方法 makefile的编写 Linux命令行操作 GTEST背景知识:它是用来干什么的?它用什么语言编写的?它的一些基本语法?等等...原创 2019-11-06 10:02:26 · 13975 阅读 · 0 评论 -
自动驾驶(四十九)---------Kavser二次开发
我们知道CAN总线是连接车身各个模块之间的桥梁,通过协议通讯,在车辆标定和测试中很多情况是用上位机和车身相连,收发满足CAN总线的信号。这中间如何通讯呢?这就需要用到Kavser。 Kvaser公司是CAN 测试设备的优秀供应商,提供的 API 函数,通过Kvaser公司的设备,结合Kvaser CANlib的 API 函数,可以方便的编写自己的 CAN 测试工具...原创 2019-10-30 13:14:35 · 16623 阅读 · 0 评论 -
自动驾驶(四十八)---------激光雷达简介
激光雷达、毫米波雷达、视觉传感器是用于周围环境感测的主流手段。 而在探测精度、探测距离、稳定性和对周围环境适应性等关键性能上,激光雷达都有着明显优势。1.激光雷达原理 其工作原理是向目标发射探测信号(激光束),然后将接收到的从目标反射回来的信号(目标回波)与发射信号进行比较,作适当处理后,即可获得目标的有关信息,如目标距离、方位、高度、速度、姿态、甚至形状等参数...原创 2019-10-21 13:08:08 · 15788 阅读 · 0 评论