王中阳Go

V1

2022/12/30阅读:25主题:橙心

PHP转Go之后,我又开始研究机器学习和自动驾驶了。

关注我的朋友都知道我是个爱折腾的程序员,除了Java、Python、PHP、GO这种跨语言的学习,我最近又迷上了机器学习和自动驾驶,正所谓“艺多不压身”。

今天这篇文章主要和大家分享一下自动驾驶领域的一个技术平台,百度的Apollo开放平台,12月28日刚发布了最新版——Apollo开放平台8.0,相比之前的版本更加简单易用,对开发者越来越友好。

一直对易用性和易学性比较看重的我,觉得这个平台“不会劝退人”,学习门槛越来越低了。好好学习之后,没准能像“稚晖君”一样搞出一些好玩的东西出来。

一、“新”架构:升级软件核心、新增软件应用

一图胜千言,先带大家看一下Apollo开放平台8.0的架构升级图:

架构升级图
架构升级图

我从底向上带着大家来详解一下这张架构升级图,相信大家会有一个全新的认识:

Apollo开放平台8.0架构全新升级,我认为最大的变化就是:之前是面向技术分层的架构,升级后的新架构是「结合技术与生态分层」。

“生态化”是走向强大的必走之路,在这里也替越来越强大的Apollo感到高兴,也替生态合作的开发者们感到高兴。

硬件设备

通过上面的架构设计图,我们发现:Apollo开放平台8.0的新架构中,最底下是硬件设备,由之前的硬件开发层与车辆认证层组合而成,包括:参考硬件、硬件标准、参考车辆、车辆线控标准。

另外,Apollo开放平台8.0还开放了标准协议与认证,为生态合作伙伴为开发者敞开了大门,提供了丰富的自动驾驶设备新选择。

软件

硬件往上一层是软件核心,从图中我们可以清晰的看出是由之前的开源软件层演变而来。

不仅包括了:定位、感知、预测、规划、控制等功能,还包括RTOS(实时操作系统)、Apollo Cyber RT(世界上第一个专为自动驾驶定制的一个开源、高性能的运行框架)、HMI(人机接口)等。

更重要的是,通过V2X适配器可以让Apollo开放平台8.0的核心软件层更加容易扩展。

升级后的核心软件层,提供了搭建基于Apollo自动驾驶系统的最小软件子集。让我们能更方便的,能更细粒度的进行相关的开发工作。

而且本次升级重构并开放了感知开发全流程,同时提供了基于本地HMI Dreamview的PnC仿真调试能力,极大提升了感知和PnC的研发效率。

软件应用

从架构设计图不难看出,在Apollo开放平台8.0中把之前的“软件”做了拆分,拆成了更细的“软件核心”和“软件应用”。

“软件核心”上文已经介绍完毕,它提供了搭建基于Apollo自动驾驶系统的最小软件子集,作为核心的基础建设存在。

而“软件应用”更看重的当然就是“应用”了:

软件核心层之上的软件应用层,为开发者提供了全新自动驾驶模块扩展能力与扩展方式,并以场景的形式对开发者开放。

这就好像我们都熟悉的微信开放平台和微信小程序,Apollo开放平台8.0鼓励我们像在微信中开发小程序一样的,在Apollo平台中基于“软件核心”,去开发、训练、测试自己的场景。

不管是感知、预测、规划、控制、定位,这些场景都对我们开发者开放了,我们基于自己的需求去对接开发就可以了。

云端服务

为了进一步降低开发者的门槛,最上层的云端服务,不仅包括了之前的仿真和高精地图,还新增了实训、模型训练等服务能力,并升级了仿真能力。

架构总结

相信通过上面的介绍,你一定有了比较系统和全面的概念。

通过面向生态的新架构,Apollo为开发者提供了更加易用的软件核心和云服务工具。

更重要的,Apollo开放平台8.0更加关注生态,为生态开发者提供易扩展的硬件设备与软件场景应用。

二、“新”能力:直击开发者最“痛”的地方

一图胜千言,还是先带大家看图:

“新”能力:选择更多,效率更高
“新”能力:选择更多,效率更高

整体来说,Apollo开放平台8.0引入了3种“新”能力,可以说每个都是杀手锏,都是黑魔法。

通过软件包管理机制、感知和PnC开发全流程的覆盖极大提升了Apollo工程易用性与开发效率。

1.软件包管理机制

安装环境耗时费力这件事情不知道劝退了不少人,尤其是学习自动驾驶技术,环境部署实在是太耗时了...

升级之后的Apollo开放平台8.0通过软件包的安装方式,可以按需下载减少下载数据量,且能够节省大量编译时间,环境部署以前可能需要天级别,现在缩短至30分钟内,可谓一键体验Apollo。这是我最爱的黑魔法了,也是对开发者friendly的重大改变之一。

包管理让模块在编译、发布层面实现物理隔离,结构清晰、依赖更规范,降低学习门槛;

不仅自己方便,而且包管理的方式也方便我们开发者之前贡献共建了:包管理提供了全新的二次扩展方案,更快实现自定义组件,还可以共享给其他开发者。

所以基于包管理,我们开发者可以进行二次扩展方案,开发者可以选择apollo主代码库的源码模块编译的软件包,再加上生态贡献的软件包以及开发者自定义的软件包来构建自己的场景工程。

玩法灵活很多,大家的想象力可以尽情释放了。

2.感知全流程

感知框架与开发流程升级,新引入3个基于深度学习的模型,都是重量级的:

丰富感知模型
丰富感知模型

为了让大家更好的理解,我也再解释下各个模型的特点:

CenterPoint激光点云障碍物识别模型

CenterPoint激光点云障碍物识别模型,相比7.0发布的MaskPillars模型,CenterPoint不需要人为设定Anchor的尺寸了。

实现原理是基于关键点检测的方式回归物体的尺寸、方向和速度,在物体尺寸多样的复杂场景提供更高精度。

CaDDN视觉障碍物识别模型

CaDDN视觉障碍物识别模型通过预测图像中每个像素深度分布,结合鸟瞰投影相比7.0发布的SMOKE模型精度更高。

不仅如此,在Camera感知上,Apollo开放平台8.0同时新增了视觉BEV感知模型PETR,模型创新性地将3D坐标信息与图像特征相融合,实现了基于视觉的360°障碍物感知,在速度和精度之间取得了很好的平衡

BEV PETR视觉障碍物模型

Apollo开放平台8.0 感知模型上的升级在原有的基础上有效的提升了精度,同时还引入了360°视觉BEV感知,增强了视觉感知能力。

首次开放感知全流程

不过我个人觉得更值得一提的是,这次Apollo开放平台8.0不止引入了更多新模型,更重要的是开放了感知的全流程开发环节,让开发者除了能使用平台自带的模型,还能基于自己的需求扩展更多模型。

感知全流程开放与提效

我们再来详解一下这三个环节:

  1. 模型训练环节:通过支持Paddle3D,我们不仅可以开箱即用,而且还提供了模型的性能指标,提供选型参考。这样我们开发者可以在自动驾驶感知算法上随时跟踪最新的算法了。

  2. 模型部署环节:我们可以通过模型管理工具一键部署模型,非常方便。另外我们也可以通过配置文件设置感知任务流程,能够极大提高模块的复用度。

  3. 验证环节:验证环节就更简单了,我们开发者可以在本地通过数据包来验证算法的效果。

以上就是模型训练+部署+验证的整个流程,小伙伴们可以体验一下。

3.PnC全流程

全新PnC工具链
全新PnC工具链

Apollo开发平台8.0采用了全新PnC工具链,我们可以在本地Dreamview集成PnC仿真调试工具,让开发效率大幅提升。

其中仿真测试值得重点分享一下:在自动驾驶领域,仿真是一个非常重要的环节。因为实车测试成本高、效率低、风险性又比较高,所以很多企业和开发者都非常看重仿真测试。

Apollo开发平台8.0就非常友好的提供了PnC仿真测试的本地调试功能,我们在本地就可以通过Dreamview的仿真器,模拟车辆行驶以及再现各种场景了。

“新能力”总结

通过我上面的介绍,相信大家对软件包管理机制、感知全流程和PnC开发全流程都有了新的认识,通过这3套“黑魔法”极大的提升了Apollo工程易用性与开发效率。

总结

万事起于忽微,量变引起质变。

今天给大家介绍的Apollo开放平台8.0不是短时间做到的,Apollo平台自发布以后,一直持续在进行多维度的创新。

现在推出的Apollo开放平台8.0版本,从各个层面上都带来了更好的易用性,让开发者可以更简单快速地接触和学习自动驾驶技术。

勤学似春起之苗,不见其增,日有所长。对这个领域技术比较感兴趣的朋友可以去尝试一下,上手不亏,起码不会被劝退,坚持学下去。

最后也放一下Apollo开放平台8.0上线的新社区地址,感兴趣的真的可以上去看看,提供的课程和资源感觉还是比较有用的。

分类:

后端

标签:

后端

作者介绍

王中阳Go
V1

专注Go语言开发