
自动驾驶
文章平均质量分 93
frank909
爱阅读的程序员,专注于技术思考和分享。关注架构设计、Android 开发、AI、数学、自动驾驶领域,个人公号:Frankcall
展开
-
汽车软件通信中间件iceoryx和它的零拷贝技术
这是一头漂亮的"冰羚",它是一种用于汽车软件中的 ICP 通信中间件,由 Eclipse 基金会发布和维护。原创 2022-04-17 18:05:46 · 6376 阅读 · 1 评论 -
自动驾驶Apollo源码分析系统,CyberRT篇(一):简述CyberRT框架基础概念
1. CyberRT 是什么?Apollo Cyber RT 是专为自动驾驶场景设计的开源、高性能运行时框架。 基于中心化计算模型,主要价值是提升自动驾驶系统的高并发、低延迟、高吞吐。Apollo 并不是一开始就使用 CyberRT,在 v3.0 之前用的都是基于 ROS 框架进行开发。但在之前的版本中发现了很多问题,随着 Apollo 的发展,对最高水平的稳健性和性能的需求, Apollo Cyber RT 应运而生,它满足了一个面向商业化的自动驾驶解决方案的基础需求。CyberRT 最明显的 3原创 2022-03-11 20:17:13 · 14447 阅读 · 9 评论 -
自动驾驶 Apollo 源码分析系列,系统监控篇(四):Monitor模块如何监控进程 Process 的存活状态?
本篇文章分析 Apollo 中监控模块中监控进程状态的相关代码。1. ProcessMonitorProcessMonitor 是一个普通的定时器组件,内部函数也只是常规的 RunOnce 和 UpdateStatus,所以,可以推断出它的逻辑非常简单。但要注意的是它引入的头文件有 hmi_mode 和 system_status 两个,这说明它要从中获取一些数据结构定义。上面的代码说明,ProcessMonitor 中的 RunOnce 每隔 1.5s 被触发一次。工作流程分为 4 个步骤原创 2022-02-26 16:47:41 · 1892 阅读 · 0 评论 -
自动驾驶 Apollo 源码分析系列,系统监控篇(三):Monitor模块如何监控通信中 channel 的时延?
上一篇文章分析了 Apollo 框架中 Monitor 模块如何监控硬件,这篇文章继续分析 Monitor 是如何监控软件的,数据通信中 channel 是本文主要分析对象。1. 受监控的内容上图是之前的文章总结的,可以看到软件监控有 8 类对象:Channel Monitor 数据通信频道监控Functional Safety Monitor 功能安全监控Latency Monitor 时延监控Localization Monitor 定位监控Module Monitor 模块监控Pr原创 2022-02-20 18:25:58 · 1705 阅读 · 2 评论 -
自动驾驶 Apollo 源码分析系列,系统监控篇(二):Monitor模块如何监控硬件
前面的文章有分析,Monitor 模块监控的内容分为 Hardware 和 Software 两位。本篇分析硬件监控部分。首先,可以观察一下 Apollo 官方文档给出的硬件连接图。跟自动驾驶本身相关的无非是传感器和底盘。当前 Monitor 系统支持的硬件类监控有 4 个:ESD CANGPSResourceSOCKET CAN监控 ESD CANESD CAN 是一种 CanCard,在 Apollo 中通过 PCIe 接口连接到 6108 工控机上面,在 Apollo 1.原创 2022-01-17 20:01:03 · 1593 阅读 · 0 评论 -
自动驾驶 Apollo 源码分析系列,系统监控篇(一):简析Monitor模块工作机制
前面的文章分析了 Apollo 6.0 中的 Guardian 模块,引发了我对 Monitor 模块的好奇心。我们可以看到 Guardian 除了接收 Control 模块的信息外,还要接收来自 Monitor 发过来的信息,事实上 Guardian 根据 Monitor 传输的 system status 信息判断是否需要紧急停车。本篇文章的目的就是为了搞清楚 Monitor 的主要工作流程。Monitor 的职责根据 Apollo 官方开发者文档提示,Monitor 模块主要作用原创 2022-01-13 20:24:26 · 1425 阅读 · 0 评论 -
自动驾驶 Apollo 源码分析系列,安全守护篇(一):为何紧急刹车?
这篇文章主要分析 Apollo 6.0 中一个简单的模块:Guardian。原创 2022-01-10 22:36:51 · 1157 阅读 · 0 评论 -
ROS2 中的 launch 文件入门的 6 个疑问
本文记录了 ROS2 中 launch 文件学习过程中我个人觉得重要的 6 个基本问题,和大家分享,希望可以帮到初学者。疑问1:launch 文件有什么用?通过 launch 文件,ROS2 可以同时启动许多节点,这样简化了用命令行去多次启动不同的 Node。疑问2:launch 文件怎么用?完整的命令:ros2 launch <package_name> <launch_file_name>也可以直接启动 launch 文件,像这样:ros2 lau原创 2021-09-16 23:18:10 · 1985 阅读 · 1 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(九):感知融合中的数据关联细节
前一篇文章讲了,Apollo 6.0 中融合的代码逻辑流程,但那是基于软件的角度进行梳理和分析的,这一篇文章基于上篇的成果进一步对算法进行较深入的分析,主要涉及到多目标跟踪中的数据关联和滤波算法。目标跟踪的基础知识概念为保持文章内容由浅入深,先做一些基础的概念介绍。卡尔曼滤波如何工作?数据融合最常见的算法是卡尔曼滤波及其变种。卡尔曼滤波是一个多次迭代的算法,一个周期内的工作如图所示:一个目标初始状态,经过 T 时间后,调用 Predict() 方法,初始状态会移植到预测状态,一般 Predic原创 2021-07-14 18:33:55 · 4685 阅读 · 8 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(八):感知融合代码的基本流程
说起自动驾驶感知系统,大家都会谈论到感知融合,这涉及到不同传感器数据在时间、空间的对齐和融合,最终的结果将提升自动驾驶系统的感知能力,因为我们都知道单一的传感器都是有缺陷的。本篇文章梳理 Apollo 6.0 中的感知数据融合基本流程。感知架构文章开始前,还是需要先看一看 Apollo 中感知的整体架构。它有这么多传感器。那感知融合,最终要融合什么呢?Apollo 的感知系统的结果要以分为 2 个大类:障碍物检测(车、行人或者其它交通要素)红绿灯检测借助于激光雷达和深度学习,Apol原创 2021-06-22 18:21:35 · 6291 阅读 · 9 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(七):Lidar 障碍物检测基本流程
Apollo 系统传感器是以 Lidar 为主的,本文整理在 Apollo 6.0 中 Lidar 的基本代码流程。1. 从 Component 出发因为有了之前红绿灯检测代码分析的经验,我们自然能够知道感知任务先从它的 component 开始。lidar 检测的 component 是modules/perception/onboard/component/detection_component.cc梳理代码可以得到基础的流程框架:1.1 initConfiginitConfig 从本地原创 2021-06-14 16:51:56 · 3760 阅读 · 2 评论 -
关于中国自动驾驶国标中 L3 等级的 5 个思考点
2021 年随着众多自动驾驶车型发布,越来越多的普通消费者开始了解高级别自动驾驶。之前大家讨论说 L3 车型不能落地是因为法律法规不允许,可实际上中国已经有了自动驾驶标准《汽车驾驶自动化分级》,由工信部发布,于 2021 年 1 月 1 日正式执行。近期,我认真阅读了该标准并结合我对行业的认识产生了一些疑问,归纳成 5 个问题。问题1:中国自动驾驶标准依据什么制定?很大程度应该是参考 SAE J3016 标准,然后在此基础上做了针对国情的修整。并且, J3016 是行业标准,但《汽车驾驶自动化分级》原创 2021-05-08 19:40:57 · 2114 阅读 · 7 评论 -
自动驾驶激光点云 3D 目标检测 PointPillar 论文简述
之前有针对 VoxelNet 这篇论文做过简述,今天的主题是 PointPillar。PointPillar 是 2019 年提出来的模型,相比于之前的点云处理模型,它有 3 个要点:提出 Pillar 这个概念,将类 PointNets 模型能够以 Pillar 为基础单位学习点云特征运用标准化的 2D 卷积进行后续处理快,满足实时要求,最快的版本到达 105 HzPointPillar 和前辈处理点云最先需要大量的手工作业,后来 VoxelNet 第一次引入了真正的端到端的特征学习。但原创 2021-04-11 15:16:56 · 5466 阅读 · 2 评论 -
自动驾驶激光点云 3D 目标检测 VoxelNet 论文简述
自动驾驶感知视觉有 2 个流派,分别是摄像头视觉和激光雷达视觉,本文分析激光雷达视觉当中经典的算法模型 VoxelNet。论文:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection这是 2017 年的论文出自苹果公司算法团队,这篇论文对于刚学习激光雷达目标检测的同学来讲非常有参考价值。图像和点云摄像头对环境进行测量,产生的一般是 RGB 格式图片,图片上的一个像素通常有 rgb 3 个颜色通道的数据。一般说图原创 2021-03-31 23:47:51 · 2142 阅读 · 1 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(六):车道线 Dark SCNN 算法简述及车道线后处理代码细节简述
本文大纲自动驾驶中的车道线检测思路SCNN 算法思想Apollo 中对应的 dark scnn 代码逻辑LRUD 对应模型结构heatmap 对应代码逻辑车道线存在性预测分支代码mask 曲线拟合车道线表示2D 车道线检测3D 车道线检测总结优点不足自动驾驶中的车道线检测思路车道线检测是 ADAS 领域和高级别自动驾驶都非常重要的一环,属于环境感知和定位中的核心项。人可以轻易分辨道路上的车道线,但是对于机器而言,却非常的难,人脑有先验知识,有极速的上下文理解能力,但机器而言只有一张 2 维的图片,然后原创 2021-02-27 14:45:43 · 7094 阅读 · 7 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(五):车道线检测基本流程
前面的文章分析了 Apollo 6.0 代码中如何进行红绿灯检测,这篇文章介绍另外一个感知任务:车道线检测。相关的文件路径整理如下:1. 从 Component 出发因为有了之前红绿灯检测代码分析的经验,我们自然能够知道感知任务先从它的 component 开始。车道线检测的 component 是 lane_detection_component.cc路径:modules/perception/onboard/component梳理代码可以得到基础的流程框架:1.1 initConfi原创 2021-02-16 17:49:35 · 4468 阅读 · 1 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(四):将红绿灯检测和识别代码细致走读一遍
前一篇文章讲到了 Apollo 中红绿灯算法逻辑和各部分代码位置及粗略流程,本篇文章更进一步去分析具体代码实现。1. 相关代码流程及核心类2. 引擎类3. 设计模式原创 2021-02-10 17:00:41 · 3777 阅读 · 3 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(三):红绿灯检测和识别
人在驾驶过程中会注意红绿灯的信息,而自动驾驶更离不开红绿灯信息,有了红绿灯信息,自动驾驶车辆才能更好地与车路进行交互。本篇分析 Apollo 6.0 中红绿灯检测和识别中的相关算法逻辑及部分代码实现。先看感知架构图。Apollo 中的红绿灯Apollo 默认有 2 个前视摄像头:25mm 焦距看远处,视距长,但 FOV 小。6mm 焦距看近处,视距短,但 FOV 大。两个摄像头都可以检测到红绿灯,它们相互冗余,但是同一时刻只能以一个为主。上面的图片是来自于长焦相机,能看得很远,但视野原创 2021-01-24 14:32:29 · 5470 阅读 · 4 评论 -
ADASISv3简述,自动驾驶怎么进行地图数据传输?
1. 什么是 ADASIS v3?ADASIS(Advanced Driver Assistance Systems Interface Specification)直译过来就是 ADAS 接口规格,它要负责的东西其实很简单,就是为自动驾驶车辆提供前方道路交通相关的数据,这些数据被抽象成一个标准化的概念:ADAS Horizon。数据从地图应用来,要传输到车内的 ADAS 软件应用中。我们常见的互联网传输协议是 Http,内容封装协一般是 json、protocol buffer、xml 等等。但汽车中原创 2021-01-14 23:27:18 · 8559 阅读 · 5 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(二):Perception 如何启动?
从 Apollo 的官方文档,我们很容易得知 Perception 是核心的组件之一,但像所有的 C++ 程序一样,每个应用都有一个 Main 函数入口,那么引出本文要探索的 2 个问题:Perception 的入口在哪里?Perception 如何启动?CyberRT在讲 Perception 组件具体内容前,非常有必要讲 CyberRT。Apollo Cyber RT framework is built based on the concept of component. As a b原创 2020-12-23 20:45:13 · 5944 阅读 · 3 评论 -
自动驾驶 Apollo 源码分析系列,感知篇(一)
我是自动驾驶从业者,百度的 Apollo 是行业优秀的开源框架,近几年发展的比较快,基于对技术的热爱,我计划用 3 个月的样子来学习 Apollo 的源码,以提升自己的自动驾驶认知和技术。在 Apollo 官网它有显示自己开放平台的架构,我关注于算法及代码实现。自动驾驶公认的分层架构是:感知决策控制执行所以,系列文章我先从感知模块开始。当前 Apollo 版本是 6.0,所以这一系列文章都是 Apollo 6.0。百度 Apollo 是基于 Lidar 的,这个需要明白这一点。即使原创 2020-12-17 22:52:53 · 7720 阅读 · 3 评论