一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

车端软件版本远程批量升级管理方法、系统及介质与流程

2022-12-06 20:02:56 来源:中国专利 TAG:


1.本技术涉及自动驾驶技术领域,尤其涉及一种车端软件版本远程批量升级管理方法、系统及介质。


背景技术:

2.在对车端软件进行升级的现有技术中,以与物联网ota(over-the-air technology的缩写,译为“空中下载技术”,指借助移动网络或wifi网络进行下载的技术)升级一致的方式为主。附图1示出了现有技术中对车端软件进行升级的典型方式。如图1所示,车端应用程序的新版本开发成功之后,将新版本编译成全量版本包或ota差分包,并上传到版本仓库,同时同步到ota服务器上。车辆上运行的ota代理程序接收到新版本升级消息后,显示相应的应用程序有新版本,这时可以通过人工在具体的车辆上进行操作来完成相应应用软件的升级。整个升级过程类似于目前手机上应用程序的升级。
3.然而,随着自动驾驶技术的演进,特别是在自动驾驶技术研发过程中,需要很多车辆批量参与。对不同车进行频繁的版本升级,若采用上述现有技术,则人工操作的工作量极大,且需要多人同时对多台车辆进行相同软件的升级时,人员的协调成为很大的问题,极大的降低了工作效率。


技术实现要素:

4.针对现有技术无法高效应用于批量车远程升级的技术问题,本技术提出一种车端软件版本远程批量升级管理方法、系统及介质。
5.在本技术的一个技术方案中,提供一种车端软件版本远程批量升级管理方法,包括:软件代码上传存储过程,由代码存储库,存储编程人员分布式上传的软件代码;软件代码持续编译集成过程,由持续集成构建服务,对持续上传的软件代码当中满足预先配置的编译规则的代码进行编译和集成,生成车端可运行的不同版本的二进制文件,以及对二进制文件进行描述的声明式版本部署文件包;二进制文件存储过程,由二进制文件存储库,存储二进制文件;声明式版本部署文件包存储过程,由声明式版本部署文件存储库,存储声明式版本部署文件包;软件新版本统一分组发布过程,由统一发布平台,当实时自动监听到或在统一发布平台上人工选择需升级的车端软件版本后检查到,在声明式版本部署文件存储库中存储有,与上一监听结果相比或人工选择需升级的车端软件版本所对应的新的声明式版本部署文件包时,从声明式版本部署文件存储库拉取新的声明式版本部署文件包,并将其发布给多个车辆分组当中相应分组的所有车辆;以及软件新版本分组自动批量升级过程,由多个车端容器管理单元,其分别预先安装在各个车辆中,在相应分组的车辆处于启动状态时,根据新的声明式版本部署文件包,自动从二进制文件存储库下载并以容器的形式运行相应的二进制文件,以完成相应软件版本在相应分组的所有车辆上的批量升级。
6.在本技术的另一个技术方案中,提供一种车端软件版本远程批量升级管理系统,包括:代码存储库,存储编程人员分布式上传的软件代码;持续集成构建服务,对持续上传
的软件代码当中满足预先配置的编译规则的代码进行编译和集成,生成车端可运行的不同版本的二进制文件,以及对二进制文件进行描述的声明式版本部署文件包;二进制文件存储库,存储二进制文件;声明式版本部署文件存储库,存储声明式版本部署文件包;统一发布平台,当实时自动监听到或在统一发布平台上人工选择需升级的车端软件版本后检查到,在声明式版本部署文件存储库中存储有,与上一监听结果相比或人工选择需升级的车端软件版本所对应的新的声明式版本部署文件包时,从声明式版本部署文件存储库拉取新的声明式版本部署文件包,并将其发布给多个车辆分组当中相应分组的所有车辆;以及多个车端容器管理单元,其分别预先安装在各个车辆中,在相应分组的车辆处于启动状态时,根据新的声明式版本部署文件包,自动从二进制文件存储库下载并以容器的形式运行相应的二进制文件,以完成相应软件版本在相应分组的所有车辆上的批量升级。
7.在本技术的另一个技术方案中,提供一种计算机可读存储介质,其存储有计算机指令,计算机指令被操作以执行上述技术方案中的车端软件版本远程批量升级管理方法。
8.通过采用上述技术方案,本技术能够达到如下技术效果:不需要在车端进行人工介入就可以完成相应分组车辆的软件版本远程自动升级,提高了软件版本发布效率;通过基于对容器进行管理的技术思想,降低了软件版本发布和升级的复杂度。
附图说明
9.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对本技术具体实施方式或现有技术描述中所需要使用的附图进行简要说明。显然,下面说明的附图针对的是本技术的一些具体实施方式,对于本领域技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图,直接毫无疑义地确定与具体实施方式的等价替换或变形所对应的其他附图。
10.图1示出了现有技术中对车端软件进行升级的典型方式的示意图;
11.图2示出了本技术的车端软件版本远程批量升级管理方法的一个具体实施方式的流程示意图;
12.图3示出了本技术的车端软件版本远程批量升级管理系统的一个具体实施方式的示意图。
13.通过上述附图,已经清楚明确地示出了本技术的一些具体实施方式,针对这些具体实施方式,后文将有更加详细的文字说明。这些附图和文字说明的目的,并不是要以任何方式限制本技术发明构思所涵盖的保护范围,而是要通过一些特定的具体实施方式,使本领域技术人员能够更方便地理解本技术的发明思想。
具体实施方式
14.为使本领域技术人员更加方便地理解本技术的技术方案,将结合附图,对本技术技术方案的一些具体实施方式进行清楚、完整地说明。显然,所描述的具体实施方式只是本技术技术方案的一部分具体实施方式,而不是全部的具体实施方式。基于本技术中已经描述的具体实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本技术保护的范围。
15.应该说明的是,本技术中提及的术语“第一”、“第二”、“第三”“第四”等(如果有),
若干处理过程的数字和/或字母标号,是用于区别类似的对象,而不必然理解成用于描述特定的顺序或先后次序。应该理解,这些数字在适当情况下可以互换,以便这里描述的本技术的技术方案,比如能够以除了图示或描述的那样以外的顺序进行实施。另外,术语“包括”和“具有”以及他们的任何变形,并非意指仅覆盖排他性的包含,例如,包含了一系列步骤的方法,或包含了若干单元、模块的产品或设备,并不必然理解成仅限于列明的那些步骤、单元、模块,而是还可以包括没有列明的或对于这些方法、产品或设备本身理应固有的其它步骤、单元、模块。
16.另外,下面对本发明技术方案的不同部分进行详细说明的多个具体实施方式、多个实施例、多个实例等,在不相互排斥的情况下,可以相互结合成为本发明的一个完整的技术方案。对于在某一具体实施方式、实施例、实例等中已经描述过的相同或相似的概念、过程等,可能在其他具体实施方式、实施例、实例等中不再赘述。
17.下面,结合附图,对本技术的一些具体实施方式、实施例、实例等进行详细说明。
18.图2示出了本技术的车端软件版本远程批量升级管理方法的一个具体实施方式的流程示意图。
19.在图2所示的实施方式中,本技术的车端软件版本远程批量升级管理方法包括:s201,软件代码上传存储过程,由代码存储库,存储编程人员分布式上传的软件代码。
20.在s201表示的软件代码上传存储过程中,由代码存储库,存储编程人员分布式上传的软件代码。
21.在本实施方式中,通过将分布在不同位置的编程人员所编写的软件代码统一上传并存储在统一的代码存储库中,进行相应的统一管理,能够有效、高速地进行从很小到很大的软件开发项目,提高不同位置编程人员的协同工作能力。
22.在本实施方式的一个实施例中,代码存储库可以是集中式的代码存储库,并且,每一编程人员的本地终端上均预先安装有分布式版本控制系统。作为一个实例,代码存储库可以是具有存储功能的一台或多台计算机设备。
23.在该实施例中,通过采用集中式的代码存储库,能够便于后续对全部编程人员的编程结果,即软件代码,进行统一管控。
24.作为一个实例,分布在不同位置的编程人员,在自己的本地终端将自己负责编写的相应软件的软件代码编写完成之后,通过自己的本地终端上预先安装的分布式版本控制系统,将编写完成的软件代码上传到集中式的代码存储库,由该代码存储库进行存储。
25.作为一个实例,分布式版本控制系统可以是开源的分布式版本控制系统,具体可以是git。相应的,代码存储库可以是git存储库。
26.作为本实施方式的一个实施例,编程人员可以被分成多个组,一组编程人员针对实现一种功能的车辆分组中车辆的软件的编程和升级任务进行工作。从而,该组编程人员所编写的代码可以作为相应功能分组的车辆所用软件的一部分。
27.作为一个实例,按功能进行分组后的各组车辆,可以分别进行数据采集、自动驾驶算法验证、自动驾驶试运行等。
28.在图2所示的实施方式中,本技术的车端软件版本远程批量升级管理方法包括:s202,软件代码持续编译集成过程。
29.在s202表示的软件代码持续编译集成过程中,由持续集成构建服务,对持续上传
的软件代码当中满足预先配置的编译规则的代码进行编译和集成,生成车端可运行的不同版本的二进制文件,以及对二进制文件进行描述的声明式版本部署文件包。
30.这样,针对不同的软件代码,能够按相应的自动化执行流程进行编译和集成,从而能够自动生成车端可运行的不同版本的二进制文件,以及对二进制文件进行描述的声明式版本部署文件包。
31.作为本实施方式的一个实施例,持续集成构建服务,针对多个车辆分组当中的各个分组分别对应的编程人员上传的软件代码,被各自预先配置相应的编译规则。
32.作为本实施方式的一个实施例,预先配置的编译规则,可以实现对软件代码的编写规范性的检查。作为一个实例,编写规范性可以包括:编写的格式是否满足要求,以及代码的大小与其要实现的功能相比是否经济,等。这样,当软件代码的编写不规范,比如,格式不符合要求,或代码的大小不够经济时,持续集成构建服务可以将该软件代码退回相应的编程人员,要求其重新编写。
33.作为本实施方式的一个实施例,对持续上传的软件代码当中满足预先配置的编译规则的代码进行编译和集成,具体可以将针对同一软件的代码编译成该软件对应的车辆可运行的数据格式,并将编译后的结果集成在该软件的新版本的二进制文件中。
34.作为本实施方式的一个实施例,声明式版本部署文件包可以描述相应车端软件的启动命令、计算资源占用下限值和上限值、基于健康检查结果所需执行的操作、副本数量、和/或与其他车端软件的启动先后顺序。
35.作为一个实例,计算资源占用下限值,是为了确保相应的车端软件的新版本能够正常运行,必须被分配的内存和/或cpu占用量。计算资源占用上限值,应能确保相应的车端软件的新版本在运行时所占用的内存和/或cpu,不得影响相应车辆正常驾驶所必须运行的软件和功能组件的正常运行。
36.作为一个实例,健康检查结果所需执行的操作可以包括:在相应车端软件的相应版本的安装过程中,若检查到相应的容器在持续预定时间段后仍不能正常响应,则将相应的容器强制停止运行后再次重启;以及在相应车端软件的相应版本的运行过程中,若检查到相应的容器不能正常响应,则将相应的容器强制停止运行后再次重启。
37.这样,通过在声明式版本部署文件包中设置基于健康检查结果所需执行的操作,能够实现对相应车端软件的全生命周期管理。
38.作为本实施方式的一个实施例,为相应车端软件建立的副本数量为1个。这样,能够确保相应的车端软件不论因何原因崩溃时,一定还有一个健康的副本还在运行,从而确保相应车端软件运行的稳健性。
39.作为本实施方式的一个实施例,相应软件的启动需要以其他车端软件的启动或停止为前提,这时,声明式版本部署文件包中配置与其他车端软件的启动先后顺序,能够确保相应软件在启动时已经具备了启动的条件。比如,图像分析的软件,启动之前,需要确保控制车辆上安装的摄像头进行拍摄的软件已经启动。
40.作为一个实例,声明式版本部署文件包可以是采用轻量级kubernetes的包管理工具helm生成和管理的声明式部署包helm chart。
41.在图2所示的实施方式中,本技术的车端软件版本远程批量升级管理方法还包括:s203,二进制文件存储过程。
42.在s203表示的二进制文件存储过程中,由二进制文件存储库,存储二进制文件。
43.在图2所示的实施方式中,本技术的车端软件版本远程批量升级管理方法还包括:s204,声明式版本部署文件包存储过程。
44.在s204表示的声明式版本部署文件包存储过程中,由声明式版本部署文件存储库,存储声明式版本部署文件包。
45.在本实施方式的一个实施例中,声明式版本部署文件存储库可以是多个,多个声明式版本部署文件存储库当中的每一个,可以分别专用于存储一种功能的车辆分组中车辆的软件对应的软件代码所生成的声明式版本部署文件包。从而,各个声明式版本部署文件存储库中存储的相应的声明式版本部署文件包,可以分别一一对应地专用于多个车辆分组当中的各个分组。
46.这样,在后续操作时,仅根据声明式版本部署文件包的存储位置是在哪一个声明式版本部署文件存储库,就能够判断相应的声明式版本部署文件包需要发布给哪一组车辆。
47.在本实施方式的一个实施例中,多个声明式版本部署文件存储库可以是多个独立的物理存储介质,或者是一个物理存储介质内的多个分支。
48.作为一个实例,声明式版本部署文件存储库可以是git存储库。
49.在图2所示的实施方式中,本技术的车端软件版本远程批量升级管理方法还包括:s205,软件新版本统一分组发布过程。
50.在s205表示的软件新版本统一分组发布过程中,由统一发布平台,当实时自动监听到或在统一发布平台上人工选择需升级的车端软件版本后检查到,在声明式版本部署文件存储库中存储有,与上一监听结果相比或人工选择需升级的车端软件版本所对应的新的声明式版本部署文件包时,从声明式版本部署文件存储库拉取新的声明式版本部署文件包,并将其发布给多个车辆分组当中相应分组的所有车辆。
51.在本实施方式中,若由统一发布平台实时自动监听是否有新的声明式版本部署文件包,进而进行发布的,属于监听式自动发布;若由人工在统一发布平台上选择需升级的车端软件版本后进行发布的,属于主动发布。
52.在本实施方式的一个实施例中,在进行主动发布的情况下,统一发布平台管理人员可以在统一发布平台上点选需要升级的软件版本,从而统一发布平台可以将从相应的声明式版本部署文件存储库检查到并拉取的声明式版本部署文件包,发布给该软件版本所服务的相应分组的所有车辆。
53.在本实施方式的一个实施例中,若需要发布软件新版本的相应分组车辆中的一台或多台车辆处于未启动状态,则将统一发布平台拉取的相应声明式版本部署文件包缓存在统一发布平台上。这样,在相应车辆启动后即能够开始相应软件的自动升级。
54.作为一个实例,在声明式版本部署文件存储库为git存储库的情况下,统一发布平台对声明式版本部署文件存储库的自动监听和通信,可以以gitops的形式完成。
55.在图2所示的实施方式中,本技术的车端软件版本远程批量升级管理方法还包括:s206,软件新版本分组自动批量升级过程。
56.在s206表示的软件新版本分组自动批量升级过程中,由多个车端容器管理单元,其分别预先安装在各个车辆中,在相应分组的车辆处于启动状态时,根据新的声明式版本
部署文件包,自动从二进制文件存储库下载并以容器的形式运行相应的二进制文件,以完成相应软件版本在相应分组的所有车辆上的批量升级。
57.在本实施方式的一个实施例中,车端容器管理单元可以是控制软件。车端容器管理单元可以将下载的用于软件版本升级的二进制文件,以容器的形式进行运行,从而完成该软件版本在相应车辆上的升级。
58.因为车端容器管理单元能够将相应的二进制文件以容器的形式运行,并且考虑到容器所具有的能够整体迁移、便于建立副本等特性,所以能够降低车端软件版本发布和升级的复杂度。
59.在本实施方式的一个实施例中,在车端容器管理单元的管理下,每辆车可以表现为一个车端容器管理单元管理下的独立集群。作为一个实例,该独立集群可以利用相应车辆上的一个或多个服务器来实现。
60.在本实施方式的一个实施例中,统一发布平台可以对所有车端容器管理单元管理下的独立集群进行分组管理,进而使相同功能的车辆被分在所述车辆分组的同一分组中。
61.在本实施方式的一个实施例中,统一发布平台与车端容器管理单元管理下的独立集群之间的通信,可以采用双向证书认证。这样,能够确保双方之间通信的安全性,防止车辆自动驾驶过程中被第三方恶意劫持。
62.作为一个实例,车端容器管理单元可以是集群管理工具kubernetes的轻量级版本k3s。相应的,车端容器管理单元管理下的独立集群可以是独立的k3s集群。
63.图3示出了本技术的车端软件版本远程批量升级管理系统的一个具体实施方式的示意图。
64.在该具体实施方式中,包括:代码存储库301,存储编程人员分布式上传的软件代码;持续集成构建服务302,对持续上传的软件代码当中满足预先配置的编译规则的代码进行编译和集成,生成车端可运行的不同版本的二进制文件,以及对二进制文件进行描述的声明式版本部署文件包;二进制文件存储库303,存储二进制文件;声明式版本部署文件存储库304,存储声明式版本部署文件包;统一发布平台305,当实时自动监听到或在统一发布平台上人工选择需升级的车端软件版本后检查到,在声明式版本部署文件存储库中存储有,与上一监听结果相比或人工选择需升级的车端软件版本所对应的新的声明式版本部署文件包时,从声明式版本部署文件存储库拉取新的声明式版本部署文件包,并将其发布给多个车辆分组当中相应分组的所有车辆;以及多个车端容器管理单元306,其分别预先安装在各个车辆中,在相应分组的车辆处于启动状态时,根据新的声明式版本部署文件包,自动从二进制文件存储库下载并以容器的形式运行相应的二进制文件,以完成相应软件版本在相应分组的所有车辆上的批量升级。
65.在该具体实施方式中,代码存储库301、持续集成构建服务器302、二进制文件存储库303、声明式版本部署文件存储库304、统一发布平台305、多个车端容器管理单元306,可以具体执行图2所示的车端软件版本远程批量升级管理方法的软件代码上传存储过程201、软件代码持续编译集成过程202;二进制文件存储过程203、声明式版本部署文件包存储过程204、软件新版本统一分组发布过程205、软件新版本分组自动批量升级过程206的上述具体实施方式、实施例、实例等描述的相应过程,能够达到图2所示的车端软件版本远程批量升级管理方法的上述具体实施方式、实施例、实例等描述的相应过程所达到的相应技术效
果。
66.在本技术的一个具体实施方式中,提供了一种计算机可读存储介质,其存储有计算机指令,其中计算机指令被操作以执行任一上述实施方式、实施例、实例等描述的车端软件版本远程批量升级管理方法。其中,该存储介质存储的计算机指令,可以直接存储在硬件中、存储在由处理器执行的软件模块中、或者存储在两者的组合中。
67.软件模块可驻留在ram存储器、快闪存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可装卸盘、cd-rom或可用于存储计算机指令的任何其它形式的存储介质中。通常,存储介质可以在处理器的控制下,使处理器可从存储介质读取信息和向存储介质写入信息。
68.处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)、现场可编程门阵列(英文:field programmable gate array,简称:fpga)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合等。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如dsp与微处理器的组合、多个微处理器、结合dsp核心的一个或一个以上微处理器或任何其它此类配置。在替代方案中,存储介质与处理器可以是一体的。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。在替代方案中,处理器和存储介质可作为离散组件驻留在用户终端中。
69.在本技术所提供的实施方式中,应该理解到,所公开的装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
70.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本技术的技术方案的目的。
71.以上仅为本技术的实施例,并非因此限制本技术的专利保护范围,凡是利用本技术说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献