哈喽大家好,我是大圣,最近我的老东家百度的自动驾驶平台Apollo开发平台8.0发布了,我也研究了一下新平台的功能,写文章记录一下
程序员一直都在寻找适合自己的蓝海领域,网页,App,小程序,每当出现一个新的程序载体的时候,也意味着更多的创业机会和发展,智能汽车这个大号智能终端现在来看算是一个新的蓝海, 百度Apollo给了一个开发者快速接触和进入这个领域的平台
百度自动驾驶开放平台自2017年正式发布以来,实现了11个版本的迭代,这次发布的Apollo开放平台8.0,已经是第12个版本,这回的升级主要作用就是让平台变得更简单易用,让我们可以更快速地上手。具体的实现在下面详细再说。
采用全新四层框架,软件核心开放性加大
首先是带来了全新的架构,架构图如下,结合技术和分层的新架构,最下面的是硬件层,可以给开发者提供丰富的自动驾驶设备的选择,然后是上层的软件核心层,提供了搭建Apollo自动驾驶系统的软件工具包,并且提供了三种重要的开发者能力,软件核心层之上的是软件应用层,给开发者提供了自动驾驶的扩展能力,这一部分开发者就可以积极的贡献各类生态的场景。最上面还有一个云端服务层,带来了升级版的仿真能力,更有利于技术实践。
全新的架构带来了更好的易用性和扩展性,对于普通开发者来说,相当于我们有了一个更好的操作系统,我们可以借助于这个操作系统提供的工具包和扩展服务,专注于代码逻辑的开发。
其实在新的四层架构当中,我最想说的还是两个软件层的变化,尤其是软件核心这一层。可以看出来,现在的软件核心层整体开放性大大提升了,除了为开发者提供最为基础的地图引擎、定位这些核心之外,更重要的是从模型测试的感知、预测、规划到控制等各个流程,都是开发者可以触及到的,这也是整个Apollo开放平台8.0易用性提高比较关键的一点所在。
下面也要说一下,伴随着新的架构,Apollo开放平台8.0也带来了针对开发者的三个重要的新能力,分别是——包管理,感知流程和PnC全流程升级
引入更多新能力:安装部署降至30分钟内
对于开发者来说,每个编程语言的使用和开发,都离不开第三方包的支持,比如Node.js生态中的npm,Java生态中的Maven,通过统一的包管理机制把众多的开发者聚集在一起,极大的提高了代码的复用性和开发效率,Apollo也不例外,8.0在工程框架上引入了软件包的管理,解决了之前项目发布耦合禁的问题,通过软件包的安装方式,节省了大量的编译时间,把环境部署的时间从一天缩短到半小时以内,极大地提高了开发者上手体验Apollo开放平台的效率
开发者还可以在包管理平台上更快速的实现自定义组件,还可以把这些组件共享给其他开发者,开发者可以选择Apollo主代码库的源码模块编译的软件包,再加上生态贡献的软件包以及开发者自定义的软件包来构建自己的场景工程
除了包管理,新框架也带来了新的感知流程。
一方面,Apollo开放平台8.0在原有基础上引入了3个新的感知模型,下面的图片上可以很清楚地看到,分别是CenterPoint激光点云障碍物识别模型、CaDDN视觉障碍物识别模型和视觉BEV感知模型PETR。自动驾驶区别于传统的纯软件开发,需要通过硬件的感知能力识别障碍物,Apollo开放平台8.0不再需要认为的设定Anchor的尺寸,而是基于关键点检测的方式回归物体的尺寸、方向和速度,在物体尺寸多样的复杂场景提供更高精度。并且在速度和精度上取得了很好的平衡
既然包管理可以允许开发者扩展自定义组件,8.0也同样开放了感知的全流程开发环节,让开发者除了能使用平台自带的模型,还能基于自己的需求扩展更多模型。并且可以通过模型管理工具可以一键部署
首先是模型训练环节:通过支持Paddle3D,用户开箱即用,不需要苦于自己复现模型,同时Paddle3D还提供了模型的性能指标,提供选型参考,用户可以在自动驾驶感知算法上随时跟踪最新的算法,保持感知算法的先进性。针对用户需要自己训练模型二次开发的场景,平台引入了模型meta信息,规范了模型的输入、输出、预处理等信息,用户只需要按照模型meta要求设计模型,可以保证模型的兼容性,减少接入成本;
在模型部署环节, 模型信息的引入更加规范,通过模型管理工具可以一键部署模型。同时结合了感知框架,通过配置文件来设置感知任务流程,提高模块复用度。
最后8.0开发平台针对开发效率,采用全新的PnC工具链,在本地Dreamview集成了PnC仿真调试工具,让开发效率极大提升。
我们在写代码的过程中会不停地调试,软件调试相对简单,我们只需要获取内存中对应的变量进行调试即可,但是在自动驾驶领域,调试环境需要车辆的仿真,由于实车测试成本高、效率低、而且安全风险较高,所以更多企业和开发者都更看重仿真测试。仿真测试更加高效灵活、测试场景覆盖率高,而且对于一些corner case的测试更加安全。
首先Apollo开放平台8.0提供了PnC仿真测试的本地调试功能,在本地通过dreamview的仿真器模拟车辆行驶以及再现各种场景。并且Apollo studio还提供了云端仿真场景管理的功能,开发者可以自由创建符合自己测试仿真需求的场景及障碍物,可以针对场景进行分类和管理;平台在dreamview中引入了studio插件,通过插件可以方便将studio上的场景和动力学模型下载本地,通过这种方式,PnC调试效率提升1倍以上。
上线新社区Apollo Studio:一站式学习实践
除了前面提到的升级,Apollo针对开发者的学习和上手也做出了新的尝试和努力
自动驾驶本身的技术门槛交大,学习难度也比较大,并且大学里也没有设置专门的学科,个人开发者学习难度极高,Apollo针对开发者的学习成本问题,推出了一站式的学习平台Apollo Studio,打造一站式的学习社区,为开发者提供学习资料,工具资料和技术服务
首先社区提供了入门到实战的体系化课程,可以在云实验平台直接体验Apollo8.0工程,降低新手上手难度
学习完课程之后,还可以参加Apollo社区的竞赛,可以和全球的开发者同台竞技,并且还综合了大咖专栏,交流问答于一体,可以帮助开发者持续体系化成长
链接贴在这里,有需要的可以注册起来,先体验一把:apollo.baidu.com/
总结
相信你现在已经跟我一样,对Apollo开放平台8.0有一定了解了。现在互联网发展全栈工程师越来越吃香,可以兼顾前端和后端的研发任务,现在硬件平台的发展,软硬件结合的工程师可能是下一个企业追捧的热门岗位,自动驾驶领域潜力也很大,快来一起体验Apollo开放平台8.0吧,一起成为新时代的全栈工程师