apollo

技术文档丨 Can总线与定位模块

陌路散爱 提交于 2020-04-09 07:25:32
本文作者:Apollo开发者社区 CAN(Controller Area Network )总线 在整个无人驾驶系统中有着十分重要的作用。除了在VCU信号需要通过CAN总线进行传输外,无人车上的某些传感器(如雷达、Mobileye)的信号传递也是通过CAN实现的。 定位 是让无人车知道自身确切位置的方法,这是一个美妙但是十分艰难的任务,同时也对无人驾驶车十分重要。定位不仅仅是找出自身的大概方位,而是要以 10cm 级别,将车感信息与高精地图信息进行比较来精确的位置寻找。 以下,ENJOY Can总线 简介 Can总线接收和执行来自 控制模块 的命令,收集汽车底盘的状态信息并反馈给控制模块。 输入 控制命令 输出 底盘状态 底盘各部件消息状态 实现 Canbus模块 主要包括以下几个部分: 车辆:车辆本身,包括车辆控制器和消息管理器 CAN 客户端— CAN 客户端已被移动到/modules/drivers/canbus 目录下,因为它已经被使用canbus 协议的不同传感器共享。 通过继承CanClient类的方式,您可以在文件夹can_client中实现自己的CAN 客户端。 注意: 不要忘了在‘CanClientFactory’(Can客户端工厂)类中注册您自己的CAN 客户端。 在文件夹vehicle下,您也可以通过继承VehicleController

开发者说丨手把手教你写扩展卡尔曼滤波器

笑着哭i 提交于 2020-04-09 06:35:00
本文作者:Apollo开发者社区 卡尔曼滤波器 是一种由卡尔曼(Kalman)提出的用于时变线性系统的递归滤波器。这个系统可用包含 正交状态变量的微分方程模型 来描述,这种滤波器是将过去的测量估计误差合并到新的测量误差中来估计将来的误差。 当系统状态方程 不符合线性假设时 ,采用卡尔曼滤波无法获得理想的最优估计;在描述机器人状态时常常不满足卡尔曼滤波的假设,为了仍然能够使用卡尔曼滤波,我们采用 对 非线性系统进行线性化 等方法来扩大卡尔曼滤波的使用范围。扩展卡尔曼滤波与卡尔曼滤波主要 区别 在于:对状态方程和观测方程 泰勒展开 。 本文由 百度Apollo智能汽车事业部 自动驾驶工程师——陈光 撰写,对 扩展卡尔曼滤波器 进行了详细讲解,希望感兴趣的同学能通过阅读这篇文章有所收获。 以下,ENJOY 前言 在之前分享的 《开发者说 | 手把手教你写卡尔曼滤波器 》 中 , 以一个匀速运动小车的模型为例,让读者从感性上认识了卡尔曼滤波器的基本原理,它包含 预测(Prediction) 和 测量值更新(Measurement update) 两大过程。预测和测量值更新的交替执行,实现了卡尔曼滤波在状态估计中的闭环。 随后,我从 理性分析 的角度,以无人驾驶中 激光雷达 测量障碍物位置的数据为例,结合卡尔曼滤波所用到的公式,使用C+

开发者说丨手把手教你实现多传感器融合技术

纵然是瞬间 提交于 2020-04-09 06:22:06
本文作者:Apollo开发者社区 多传感器融合 又称多传感器信息融合(multi-sensor information fusion),有时也称多传感器数据融合(multi-sensor date fusion)。就是利用计算机技术将来自 多传感器 或 多源的信息 和 数据 ,在一定的准则下加以自动分析和综合,以完成所需要的决策和估计而进行的信息处理过程。 多传感器信息融合技术的基本原理 就像人的大脑综合处理信息的过程一样,将各种传感器进行 多层次 、 多空间 的信息互补和优化组合处理,最终产生对观测环境的一致性解释。在这个过程中要充分地利用多源数据进行合理支配与使用,而信息融合的最终目标则是 基于各传感器 获得的分离观测信息,通过对信息多级别、多方面组合导出更多有用信息。这不仅是利用了多个传感器相互协同操作的优势,而且也综合处理了其它信息源的数据来提高整个传感器系统的智能化。 虽然自动驾驶在全球范围内已掀起浪潮,但是从技术方面而言依然存在挑战。目前自动驾驶的痛点在于稳定可靠的感知及认知,包括 清晰的视觉 、 优质的算法 、 多传感器融合 以及高效强大的运算能力。据分析,由自动驾驶引发的安全事故原因中,相关传感器的可能误判也成为了主要原因之一。多个传感器信息融合、综合判断无疑成为提升自动驾驶安全性及赋能车辆环境感知的新趋势。 本文由 百度Apollo智能汽车事业部 自动驾驶工程师—

开发者说丨手把手教你实现多传感器融合技术

随声附和 提交于 2020-04-09 02:00:12
本文作者:Apollo开发者社区 多传感器融合 又称多传感器信息融合(multi-sensor information fusion),有时也称多传感器数据融合(multi-sensor date fusion)。就是利用计算机技术将来自 多传感器 或 多源的信息 和 数据 ,在一定的准则下加以自动分析和综合,以完成所需要的决策和估计而进行的信息处理过程。 多传感器信息融合技术的基本原理 就像人的大脑综合处理信息的过程一样,将各种传感器进行 多层次 、 多空间 的信息互补和优化组合处理,最终产生对观测环境的一致性解释。在这个过程中要充分地利用多源数据进行合理支配与使用,而信息融合的最终目标则是 基于各传感器 获得的分离观测信息,通过对信息多级别、多方面组合导出更多有用信息。这不仅是利用了多个传感器相互协同操作的优势,而且也综合处理了其它信息源的数据来提高整个传感器系统的智能化。 虽然自动驾驶在全球范围内已掀起浪潮,但是从技术方面而言依然存在挑战。目前自动驾驶的痛点在于稳定可靠的感知及认知,包括 清晰的视觉 、 优质的算法 、 多传感器融合 以及高效强大的运算能力。据分析,由自动驾驶引发的安全事故原因中,相关传感器的可能误判也成为了主要原因之一。多个传感器信息融合、综合判断无疑成为提升自动驾驶安全性及赋能车辆环境感知的新趋势。 本文由 百度Apollo智能汽车事业部 自动驾驶工程师—

如何在预测模块中添加新评估器?

落花浮王杯 提交于 2020-04-07 05:26:58
本文作者:Apollo开发者社区 简介 评估器通过应用预训练的深度学习模型生成特征(来自障碍物和当前车辆的原始信息)以获得模型输出。 添加评估器的步骤 请按照下面的步骤添加名称为 NewEvaluator 的评估器: 在proto中添加一个字段 声明一个从 Evaluator 类继承的类 NewEvaluator 实现类 NewEvaluator 更新预测配置 更新评估器管理 下面让我们用上面的方法来添加新的评估器。 一、 声明一个从 Evaluator 类继承的类 NewEvaluator modules/prediction/evaluator/vehicle 目录下新建文件 new_evaluator.h 。声明如下: #include "modules/prediction/evaluator/evaluator.h" namespace apollo { namespace prediction { class NewEvaluator : public Evaluator { public: NewEvaluator(); virtual ~NewEvaluator(); void Evaluate(Obstacle* obstacle_ptr) override; // Other useful functions and fields. }; } //

技术文档丨Apollo控制、路由等模块

感情迁移 提交于 2020-04-07 04:14:30
本文作者:Apollo开发者社区 控制模块 :通过生成控制命令(如加速、刹车和转向)来执行规划模块提供的时空轨迹。控制模块将规划轨迹作为输入,并产生控制指令给Can总线。 路由模块 :告诉自动驾驶车辆如何经过一系列车道或道路到达目的地。要计算出自动驾驶车辆经过的车道和道路,路由模块需要知道起点和终点。 数据 :是计算机与外部物理世界连接的桥梁。数据采集模块由传感器、控制器等其它单元组成。 通用模块 :该模块包含的代码并非专门面向任何模块,但有助于提升Apollo的功能。 以下,ENJOY 控制 简介 根据规划轨迹和汽车的当前状态, Control模块使用不同的控制算法来生成舒适的驾驶体验,Control模块可以在正常模式和导航模式下工作。 输入 规划轨迹。 汽车状态。 定位。 Dreamview AUTO模式更改请求。 输出 发送到底盘的控制命令 (转向、 油门、刹车)。 路由 简介 路由模块根据需求产生更加高级的导航信息。 路由模块依赖一个路由拓扑文件,在Apollo中通常以routing_map.* 方式命名。 可以使用以下命令生成路由地图: bash scripts/generate_routing_topo_graph.sh 输入 地图数据 路由需求(起始和终止位置) 输出 路由导航信息 数据 本模块包含Apollo的数据解决方案, 包括进行数据收集、存储

技术文档丨如何在预测模块中添加新的评估器

别等时光非礼了梦想. 提交于 2020-04-07 04:14:14
本文作者:Apollo开发者社区 预测模块 是不可或缺的一个板块,其作用很大程度上决定了试验能否成功。预测模块综合各个模块的数据信息和评价结果,具备 信息融合功能 ,可以评估各个子系统及系统整体 未来的状态 ,开发者可根据预测模块的评估结果进行调整。而加入 新的Evaluator ,更是能自定义评估方向,增加评估结果准确度。 以下,ENJOY 简介 评估器 使用预训练的 深度学习模型 生成特征(来自障碍物和自车的原始信息)以获得 模型输出 。 新增评估器的步骤 请参照以下步骤新增一个名为 NewEvaluator 的评估器: 在proto中新增一个文件 以继承Evaluator类的方式定义一个新类NewEvaluator 实现NewEvaluator类 更新预测配置文件 更新评估管理器 定义一个继承Evaluator的新类 在modules/prediction/evaluator/vehicle文件夹下创建文件new_evaluator.h 文件内容如下: #include "modules/prediction/evaluator/evaluator.h" namespace apollo { namespace prediction { class NewEvaluator : public Evaluator { public: NewEvaluator();

技术文档丨Apollo规划模块技术指导

孤人 提交于 2020-04-07 03:54:17
本文作者:Apollo开发者社区 规划 是无人车为了某一目标而作出一些有目的性的决策过程,对于无人驾驶车辆而言,这个目标通常是指从出发地到达目的地,同时避免障碍物,并且不断优化 驾驶轨迹和行为 以保证乘客的安全舒适。规划层通常又被细分为 任务规划(Mission Planning)、行为规划(Behavioral Planning)和动作规划(Motion Planning) 三层。 Apollo系统中的 Planning模块 实际上是整合了 决策和规划 两个功能,该模块是自动驾驶系统中最核心的模块之一。 以下,ENJOY 简介 在包括Apollo 3.0在内的前序版本中,都使用 相同的配置和参数 对不同的驾驶场景进行规划。这种方法虽然是线性的且易于实现, 但并不灵活或者没有面向特定的场景优化。随着Apollo系统的成熟,在不同的路况和驾驶用例中使用,开发更加模块化、场景指定和全局的方法更有必要。在该方法中,每个驾驶用例都被视为不同驾驶场景。这种设计方法是很有用的,因为在当前这种方式下,修复一个特定场景下的问题不会像以前版本中出现的影响那样,来影响其他场景的情况。在以前版本中,所有的驾驶用例都被认为是一个驾驶场景,导致一个问题的修复会影响其他的驾驶用例。 驾驶场景 在Apollo 3.5中,我们将聚焦以下三种主要驾驶场景: 如下图所示,车道跟随场景是默认驾驶场景

技术文档丨Apollo预测模块技术指导

旧街凉风 提交于 2020-04-07 03:52:53
本文作者:Apollo开发者社区 预测模块 是将对感知到的障碍物在未来一段时间内的运动轨迹进行估计,输出的预测消息将会打包感知信息,预测模块将 订阅定位、规划 和 感知障碍 等消息。 Apollo预测模块 按照物体 不同的特征 ,采用 不同的模型 ,分别 预测各自轨迹 ,并对不同类型的输入特征,选择合适的模型分别提取。在算法上,由于实时算例存在限制,预测模块会划分优先级对机动车周围进行处理。 以下,ENJOY 一、简介 预测模块是研究并预测感知模块检测到的所有障碍物的行为。预测模块接收障碍物数据以及基本的感知信息,包括 位置、方向、速度、加速度, 然后为这些感知到的障碍物生成概率预测轨迹。 注意:预测模块只预测障碍物的行为, 而不预测汽车本身。规划模块规划汽车本身的轨迹。 二、输入 从感知模块得到的障碍物信息。 从定位模块得到的位置信息。 从规模模块得到的之前计算周期的规划轨迹。 三、输出 带有预测轨迹及其优先级的障碍物,因为各个独立场景的优先级不同,现阶段的方案也要计算障碍物优先级。优先级包括: 忽略、谨慎和正常 (默认) 。 四、功能 如下图所示,预测模块由四个主要功能模块组成: 容器、场景分析器、评估器和预测器。 Apollo 3.0中已经有容器、评估器和预测器。在Apollo 3.5中,因为我们已经采用一个基于多场景的方法来提升Apollo的自动驾驶能力

技术文档丨Apollo快速入门指南

六月ゝ 毕业季﹏ 提交于 2020-04-07 03:51:53
本文作者:Apollo开发者社区 本指南是在汽车上运行,升级后的Apollo平台的软、硬件用户手册。刚接触Apollo的开发者可以收藏学习。 Apollo升级版本的快速入门指南主要关注新增加的特性。对于Apollo通用概念,请参阅 《Apollo 1.0快速入门》 。 以下,ENJOY 一、内容 标定指南 硬件和软件安装 Dreamview 功能对照表 车载测试 标定指南 在进行车载测试时, 请务必确保所有的传感器都已经标定好。有关传感器标定,请您先参阅 《Apollo 2.0传感器标定指南》 。 硬件和软件安装 关于硬件组件和软件系统的安装说明,请参考 《 Apollo 3.5硬件和系统安装指南》 以及 《 Apollo软件概述》 。 Dreamview功能对照表 关于Dreamview图标的相关问题,请参考 《 Dreamview Usage Table》 。 二、车载测试 1. 将外接硬盘插入主机的USB端口。 2. 启动汽车,然后启动主机电脑。 3. 启动对应的Docker容器。 4. 启动DreamView。 注意:使用您最喜爱的浏览器访问Dreamview Web服务地址:http://localhost:8888。如果一切顺利,会弹出如下界面。 5. 在弹出的Dreamview界面中选择模式、汽车和地图。 注意:在进行任何操作之前,您需要设置配置文件,点击下拉菜单