专栏算法工具链解决同平台多车型同步交付

解决同平台多车型同步交付

海盗92402024-03-31
81
0

1.背景

曾经在自动驾驶量产交付过程中,OEM 客户在原有定点车型基础上,追加了多个定点车型,从需求角度,新增的车型的功能需求有差异,量产节点与原有车型接近,从车型本身角度,其车辆参数,传感器,执行器,整车CAN网络定义均不完全相同。

最初采取的做法是,针对新增定点车型,从原有车型的分支上拉取分支,分别进行迭代交付,每个车型使用单独的soc 版本,mcu 版本和软件配置文件config

车型1:soc1, mcu1,config1

车型2:soc2,mcu2,config2

车型3:soc3,mcu3,config3

2.问题

这样做的问题是需要维护的开发分支和软件版本都很多,增加开发的人力成本的同事还增加的出错的可能性。

从开发角度,针对每个软件模块,相对应的模块owner需要在不同车型分支上维护相同的模块,如果每个车型上均涉及的公共改动则需要在多个分支上做修改,这样不仅增加了开发同事的工作量,还可能导致某一个分支合入错误或者遗漏的情况。某个车型特有的改动也很有可能合入到错误的车型分支上。

从集成的角度,集成工程师需要维护多个车型分支,每个分支对应一个流水线,版本发布需要针对每个车型发布版本,这不仅增加工作量,soc版本,mcu版本,软件配置版本的对应关系还可能出错。

从测试角度,不同的车型对应不同的产物包,每个车型需要安排台架跑自动化台架测试。针对实车测试,非常容易出现软件产物部署到错误车型上的情况,多个车型上的相同改动需要在不同的车型上冒烟验证。

软件罐装角度,每个车型需要单独部署soc 软件,mcu 软件和运行配置文件,维护成本高,出差错的可能性比较大,曾多次出现mcu版本与车型不匹配,和软件配置部署错误的情况

3.改善

所有的车型的分支合并成同一个发布分支,每个软件模块在车型差异的部分根据车型配置字来区分,车型配置字在软件启动时通过配置服务统一获取,soc软件,mcu 软件,软件配置文件打包进同一个产物包发布。

软件产物包打包方式:

-soc 软件

-mcu 软件

-软件配置

---车型1

---车型2

---车型3

这样所有车型可以共用同一个产物。软件在启动时根据车型配置字来加载软件模块和运行配置。

这样做的好处是:

从开发角度,需要维护的分支数量减少,开发/代码适配所需要的资源大大减小,每个车型上均设计的公有的改动仅仅需要在一处修改,针对特定车型的改动也通过车型配置进行隔离。针对所有车型的改动仅需要在一个车型上调试验证。

从集成角度,集成工程师仅仅需要一个发布分支,一个发布流水线,发布的版本数量也显著减小。

从测试角度,测试过程中不会出现产物部署到错误车型上的情况,各个车型上公共的改动可以仅在一个车型上调试验证,节省了车辆资源。

从产线罐装角度,所有的车型使用同一个罐装包进行罐装,大大简化了产线的复杂度。针对不同的车型,仅需要在罐装完成刷上对应车型配置字,贴上对应车型的标签就可以装车,大大降低了部署的复杂度,和产线罐装出错的可能性。

算法工具链
社区征文征程5杂谈
评论0
0/1000