百度智驾事业群产品战略可以被分为车、路、行三大领域:“车”是面向B端车企提供智能汽车解决方案;“路”是为城市交通提供的智能解决方案;“行”是为C端消费者提供的出行服务。
2023年3月14日-16日,在2023第四届软件定义汽车论坛暨AUTOSAR中国日上,百度Apollo智能技术有限公司高级工程师吴长隆表示,百度在L4领域的技术积累和L2+产品的规模化优势相互促进,现已实现出租车-乘用车-城市交通的全面布局。技术层面,通过MCU模块化和强主线的软件架构,可以满足同平台适配不同车型、多项目并行开发的需求;借助敏捷开发方法和CICD的支撑得以在满足快速变化的内外部需求的同时,保证产出质量。
百度Apollo智能技术有限公司 高级工程师
以下是演讲内容整理:
百度Apollo智驾域控制器的发展与挑战
过去十多年中,百度在人工智能领域积累了丰富的技术和经验,现在把这些领先的AI技术应用到汽车领域。百度智驾事业群产品战略从三个领域布局,分为车、路、行。
“车”是指汽车的智能化,百度的智能汽车事业部ASD是作为tier1的角色面向B端车企客户提供全栈的智能汽车解决方案,包括智驾、智舱。目前已经为31家车企、134个车型、700多万辆车提供了智能汽车的解决方案。百度旗下的汽车是百度Apollo的合作伙伴之一,将搭载百度智能汽车的全栈智能解决方案,于今年上市。
“路”是指智能城市交通。目前,百度的智能城市交通已经为全国63个城市提供了解决方案,为城市的交通出行提供了效率。
“行”是指为C端消费者提供出行服务,就是大家所熟知的萝卜快跑。去年百度发布了第六代RT6,具备在复杂城市道路的自动驾驶能力,并且其成本做到了25万元。RT6的量产落地将极大的加速无人车规模化和商业化。
上述业务相辅相成。百度在L4领域积累了丰富的技术和经验,可以为L2+的产品提供热启动;L2+产品借助规模化的优势反哺L4产品,解决L4产品最终商业落地的长尾问题。
百度智能汽车的产品包含智驾、智舱,包括小度车载系统和软硬一体的解决方案ARC。智驾域控制器分为MCU和SOC两大异构的控制芯片。MCU部署了AUTOSAR协议站,在此基础上开发CDD和应用算法;SOC端底层是一个系统,往上是硬件的戳向层以及百度自研的中间件ApolloOS;再往上是算法的各种原子能力服务;再往上是算法的各种应用逻辑。
接下来分享我们在智驾域控制器MCU软件基于AUTOSAR开发当中面临的挑战。
首先,近几年百度智驾域控制器的项目较多,已经面临同一个硬件平台同时支持多个项目、多个车型并行开发的局面。一个项目需要维护独立的软件分支,而在一个项目分支里做出的软件改动、软件优化或修复总是手动的迁移到其他项目分支里,才能保证产品体验的一致性。且软件模块间的耦合性很强,一个软件模块改动往往会导致其他几个模块软件也需要改动,牵一发而动全身;此外,需要同时往多个软件分支迁移,维护的工作量随着软件复杂度以及项目的增加呈指数级增长。
在智驾赛道需求频繁变更的阶段,时间周期要求非常短;但对产出的质量要求不会有任何降低。这对我们的软件架构提出了挑战。我们迫切的需要一套可以支撑多项目并行开发、快速迭代的软件架构。
怎么样解决这个问题?我们在AUTOSAR上找到了灵感。AUTOSAR的核心思想就是软硬件解耦,最底层实现了硬件强相关的软件功能,并且把它们抽象成了标准的接口提供给上层。上层的ECU以及应用层对于下层硬件的差异几乎是无感的,使得AUTOSAR架构软件可以在多个硬件平台迁移。
其次AUTOSAR的核心思想是软件的模块化和接口的标准化,AUTOSAR分成上百个软件的模块,软件模块功能定义非常清晰,而且软件之间的数据以定义好的标准化接口做交换。当改变其中一个模块软件时,对其他软件模块乃至整个控制器软件的影响都是可控的。
智驾域控制器MCU软件的平台化
我们的MCU平台化软件架构参照了AUTOSAR的思想。首先需要一套松耦合的软件架构,所谓松耦合即软件模块化,每个软件模块的功能定义必须要清晰;模块间交换接口标准化,并按照AUTOSAR的架构方法在统一的文件中管理。
第二是强主线的软件架构。参照AUTOSAR上下分层的软件架构思想,把我们的MCU软件按照实际的业务需求分成不同软件。一个硬件平台只有一个软件,一个项目有一个单独的软件。之间的接口预先定义好,不能轻易改动。以保证一套软件可以与多个项目的不同软件结合。
这套软件架构实际操作方法是:
首先AUTOSAR的BSW工程与具体的项目和车型强相关,比如通信总线的数量、通信矩阵的配置、诊断协议站的配置、网络管理的配置等等,这些配置每个车型都不同。所以整个AUTOSAR的BSW工程代码划分为BASE软件、CDD软件,这些模块只与硬件平台有关,和项目没有直接关系。应用层软件通过信号抽象模块来隔离开各个车型信号接口的不同,让大多数的应用层软件做到与项目无关。
此外,还有一些比较特殊的软件模块,像时间同步模块。我们域内的时间同步方案各个项目是一致的;而跨域的、整车域的方案各个项目不同。对于这种模块我们把一个模块的软件拆成两部分维护,前提是必须定义好软件间的接口,才能做到多个项目共用一个软件,使用不同的BASE软件结合到一起可以正常的工作。
在这套软件架构下软件管理的方法有所不同,一个硬件平台只有一个软件仓库,每个项目有单独的BASE软件仓库,软件合并才会得到最终的MCU软件产出,其优势在于主线优化对每个项目直接生效;而挑战是怎么保证主线上的改动对每一个项目都不出错,这就需要敏捷开发以及CICD来保证。
智驾域控制器MCU软件的敏捷开发
整个智驾域控制器的软件版本交付基本遵循传统汽车的微模型开发,从开始的需求输入到软件设计、软件开发、软件测试以及整体验收,一个版本大概持续2-3个月。在大的周期里我们把MCU软件版本迭代拆分成以周为单位的敏捷开发周期。
以周为单位敏捷迭代的循环还可以细化到以天为单位的开发迭代。百度内部有自己的一套代码管理工具,当我们推送代码进入后触发持续集成编译流水线得到编译的结果和产出;同时每晚系统会自动触发拉取库上最新的代码,推送到CICD测试服务器。测试服务器会模拟上位机把软件部署到测试台架的域控制器上,该台架除了域控制器实物,还有全套的传感器环境以及模拟的整车环境。部署完后按照预先设定好的测试流程,将MCU软件配合SOC端进行一套系统性的测试。
测试后,最终服务器收集测试的结果,并生成邮件报告推送给对应的人,第二天上班时就知道前一天的合作代码是否有问题。除了台架测试,每天我们都有大量的车进行路测,测试中产生的数据以及发生的问题都会上传到数据中心,并有专门的管理人员将问题和数据分发到对应的模块负责人。研发人员分析完数据,定位好问题后按照优先级把问题的修复计划排到敏捷迭代流程中,进行软件的迭代开发,获取新的产出后快速部署到研发车上,再进行闭环的验证。
现在整车厂越来越重视软件自研,尤其在自动驾驶领域。有的整车厂选择百度作为智驾系统软硬件的供应商;同时希望参与到部分智驾功能的开发中。
我们在项目中也有一些成功经验,首先OEM会生成我们智驾域控制器的文档,搭建算法模型后生成AR文件格式的SWC文章。并且会生成最终实现的C代码,ECU文档给到百度,我们导入AUTOSAR开发配置工具后可以生成MCUAUTOSAR的技术工程,进行MCU的软件开发。再把它编译成黑盒的工程给到OEM端,OEM端将黑盒的工程加入他们生成的代码进行集成编译,编译通过后会做自己的模块测试,测试通过后将他们的模型代码编译程黑盒的形式给到百度,我们再去做最终的MCU软件的集成、编译以及MCU软件产出,完成整个MCU域控制器的集成测试,测试通过交付整车厂,再去做整车级的测试。