自动驾驶软件开发方法、服务器端及客户端
技术领域
本发明涉及自动驾驶技术领域,尤其涉及一种自动驾驶软件开发方法、服务器端及客户端。
背景技术
在自动驾驶领域,目前出现了很多基于数据驱动的仿真模型、系统或方法,很少有基于数据驱动的自动驾驶软件开发方法。现有的无人驾驶车辆模拟仿真方法可以从交通管理部门的事故视频数据库中获取事故视频,根据事故视频获取相应的事故场景信息,根据事故场景信息构建模拟事故场景,并对模拟事故场景中的模拟无人驾驶车辆的车辆行为进行测试,以提高无人驾驶车辆模拟试验的准确性和有效性。现有的一些模拟仿真方法还可以用足够的细节来建模,如可以包括传感器噪声或可以包括人为添加的噪声来模拟真实世界的情况。现有的一些模拟仿真方法还可通过现场可编程逻辑门阵列将传感器数据集中的各传感器数据通过对应的数据接口输入至无人驾驶汽车的控制装置,并通过现场可编程逻辑门阵列精确控制数据输出频率,模拟真实的传感器扫描周期,使得仿真环境更真实,仿真结果更符合真实情况。
而其他基于数据驱动的软件开发方法又并非自动驾驶领域,可以通过获取元数据模型的配置项,并依据元数据模型和配置项生成数据加工脚本,且将元数据模型对应的元数据和数据加工脚本同步到调度系统中,使调度系统产生与元数据模型对应的调度任务,并控制执行所述调度任务。
然而,目前业界对自动驾驶软件开发方法的相关研究仍然较少,开发方法的有效利用,可以加速自动驾驶领域的开发进程。因此,一种高效的自动驾驶软件开发方法为自动驾驶领域实有必要解决的问题。
发明内容
有鉴于此,是有必要提供一种高效的自动驾驶软件开发方法、服务器端及客户端。
第一方面,本发明实施例提供一种基于数据驱动的自动驾驶软件开发方法,所述自动驾驶软件开发方法包括:
获取源数据,所述源数据具有标签;
根据所述标签构建不同等级场景库,等级越高的场景库包含的数据量越大;
选择各等级场景库中关键帧数据;
响应用户根据所述关键帧数据做出的修改操作,对原自动驾驶算法中的子算法进行修改生成多个当前自动驾驶算法,每一当前自动驾驶算法包括一个或者多个被修改的子算法;
利用各当前自动驾驶算法逐级对应地对各等级场景库中的数据进行仿真得到仿真结果;
判断各当前仿真结果是否达到预设标准;
判断各当前仿真的场景库是否为最高等级的场景库;
若一当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库不是最高等级场景库,利用所述一当前自动驾驶算法对当前仿真的场景库的下一等级场景库的数据进行仿真;或者
若一当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库是最高等级场景库,将所述一当前自动驾驶算法中被修改的子算法确定为最优子算法。
在一些可行的实施例中,所述的自动驾驶软件开发方法还包括:
若一当前自动驾驶算法所对应的仿真结果未达到预设标准,响应用户操作,修改所述当前自动驾驶算法中所述被修改的子算法以重构所述一当前自动驾驶算法,并重新执行利用所述一当前自动驾驶算法逐级对各等级场景库的数据进行仿真。
在一些可行的实施例中,所述自动驾驶软件开发方法还包括:
当确认完各最优子算法后,利用所有最优子算法更新所述原自动驾驶算法形成新版自动驾驶算法。
在一些可行的实施例中,所述自动驾驶软件开发方法还包括:
利用新版自动驾驶算法对整体场景库进行仿真生成综合仿真结果;
判断综合仿真结果是否满足所述预设标准;以及
若不满足所述预设标准,重新执行响应用户操作,修改所述各当前自动驾驶算法中被修改的子算法。
第二方面,本发明实施例还提供一种自动驾驶软件开发方法,所述自动驾驶软件开发方法包括:
服务器端获取源数据,所述源数据具有标签;
所述服务器端根据所述标签构建不同等级场景库,其中,等级越高的场景库包含的数据量越大;
所述服务器端选择各等级场景库中关键帧数据;
所述服务器端根据预设划分规则分发所述关键帧数据给不同的客户端;
所述服务器端接收不同客户端最优子算法,并利用所有最优子算法更新所述原自动驾驶算法形成新版自动驾驶算法,其中,所述客户端响应用户根据所述关键帧数据作出的修改操作,对所述原自动驾驶算法中的子算法进行一次或者多次修改得到所述最优子算法。
在一些可行的实施例中,所述服务器端根据预设划分规则分发所述关键帧数据给不同的客户端,具体包括:
所述服务器端根据预设的划分规则给所述关键帧数据配置对应的编号,所述编号与所述客户端一一对应;以及
所述服务器端根据所述编号分发所述关键帧数据给对应的所述客户端。
第三方面,本发明实施例还提供一种基于数据驱动的自动驾驶软件开发方法,所述自动驾驶软件开发方法包括:
客户端接收来自服务器端分发的关键帧数据;
所述客户端响应用户根据所述关键帧数据作出的修改操作,对原自动驾驶算法中的子算法进行修改生成当前自动驾驶算法;
所述客户端利用各所述当前自动驾驶算法逐级对应地对各等级场景库中的数据进行仿真得到仿真结果,所述等级越高的场景库包含的数据量越大;
所述客户端判断当前仿真结果是否达到预设标准;
所述客户端判断当前仿真的场景库是否为最高等级的场景库;
若所述当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库不是最高等级场景库,所述客户端利用所述当前自动驾驶算法对当前仿真的场景库的下一等级场景库的数据进行仿真;或者
若所述当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库是最高等级场景库,所述客户端将所述当前自动驾驶算法中被修改的子算法确定为最优子算法;
所述客户端发送所述最优子算法给服务器端。
在一些可行的实施例中,所述自动驾驶软件开发方法还包括:
若仿真结果未达到所述预设标准,响应用户操作,修改所述当前自动驾驶算法中被修改的子算法以重构所述当前自动驾驶算法,并重新执行利用所述当前自动驾驶算法逐级对各等级场景库中的数据进行仿真。
第四方面,本发明还提供一种自动驾驶软件开发的服务器端,所述服务器端包括:
存储器,用于存储程序指令;以及
处理器,用于执行所述程序指令以使所述服务器端实现自动驾驶软件开发方法,所述自动驾驶软件开发方法包括:
服务器端获取源数据,所述源数据具有标签;
所述服务器端根据所述标签构建不同等级场景库,其中,所述每一等级场景库,等级越高的场景库包含的数据量越大;
所述服务器端选择各等级场景库中关键帧数据;
所述服务器端根据预设划分规则分发所述关键帧数据给不同的客户端;
所述服务器端接收不同客户端最优子算法,并利用所有最优子算法更新所述原自动驾驶算法形成新版自动驾驶算法,其中,所述客户端响应用户根据所述关键帧数据作出的修改操作,对所述原自动驾驶算法中的子算法进行一次或者多次修改得到所述最优子算法。
第五方面,一种自动驾驶软件开发的客户端,所述客户端包括:
存储器,用于存储程序指令;以及
处理器,用于执行所述程序指令以使所述客户端实现自动驾驶软件开发方法,所述自动驾驶软件开发方法包括:
客户端接收来自服务器端分发的关键帧数据;
所述客户端响应用户根据所述关键帧数据作出的修改操作,对原自动驾驶算法中的子算法进行修改生成当前自动驾驶算法;
所述客户端利用各所述当前自动驾驶算法逐级对应地对各等级场景库中的数据进行仿真得到仿真结果,所述等级越高的场景库包含的数据量越大;
所述客户端判断当前仿真结果是否达到预设标准;
所述客户端判断当前仿真的场景库是否为最高等级的场景库;
若所述当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库不是最高等级场景库,所述客户端利用所述当前自动驾驶算法对当前仿真的场景库的下一等级场景库的数据进行仿真;或者
若所述当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库是最高等级场景库,所述客户端将所述当前自动驾驶算法中被修改的子算法确定为最优子算法;
所述客户端发送所述最优子算法给服务器端。
上述自动驾驶开发方法,可以对各个场景库各自进行模拟仿真,因此,可以将每个子算法交由不同的开发人员负责,可以加快开发进度,大大提高效率。
附图说明
图1为本发明第一实施例提供的一种自动驾驶软件开发系统的示意图。
图2为本发明第一实施例提供的一种计算机设备内部结构示意图。
图3为本发明第一实施例提供的一种自动驾驶软件开发方法的流程示意图。
图4为本发明第二实施例提供的一种自动驾驶软件开发方法的流程示意图。
图5为本发明第三实施例提供的一种自动驾驶软件开发方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
请参看图1,其为本发明第一实施例提供的一种自动驾驶软件开发系统100的示意图。自动驾驶软件开发系统100包括多个服务器端10和客户端20。服务器端10和客户端20之间进行通讯。在一些可行的实施例中,自动驾驶软件开发系统100还可以仅包含服务器端10或者是客户端20。服务器端10和/或客户端20包括执行自动驾驶软件开发程序指令以辅助用户通过服务器端10或者客户端20完成自动驾驶软件开发,其中,服务器端10和客户端20互相配合以完成自动驾驶软件开发。在一些可行的实施例中,服务器端10和/或客户端20分别运行于两台独立的计算机设备800中(如图2所示)。在一些可行的实施例中,服务器端10和/或客户端20还可以执行于一台计算机设备800中。
请结合参看图2,其为第一实施例提供的计算机设备800的内部结构示意图。计算机设备800包括存储介质801、处理器802和总线803。
其中,存储介质801至少包括一种类型的可读存储介质,该可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储介质801在一些实施例中可以是计算机设备800的内部存储单元,例如计算机设备800的硬盘。存储介质801在另一些实施例中也可以是的外部计算机设备800存储设备,例如计算机设备800上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(SecureDigital, SD)卡,闪存卡(Flash Card)等。进一步地,存储介质801还可以既包括计算机设备800的内部存储单元也包括外部存储设备。存储介质801不仅可以用于存储安装于计算机设备800的应用软件及各类数据,例如实现自动驾驶软件开发程序指令等,还可以用于暂时地存储已经输出或者将要输出的数据。
总线803可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,计算机设备800还可以包括显示组件804。显示组件804可以是LED(LightEmitting Diode,发光二极管)显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight-Emitting Diode,有机发光二极管)触摸器等。其中,显示组件804也可以适当的称为显示装置或显示单元,用于显示在计算机设备800中处理的信息以及用于显示可视化的用户界面。
进一步地,计算机设备800还可以包括通信组件805,通信组件805可选的可以包括有线通信组件和/或无线通信组件(如WI-FI通信组件、蓝牙通信组件等),通常用于在计算机设备800与其他计算机设备之间建立通信连接。
处理器802在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储介质801中存储的程序代码或处理数据。具体地,处理器802执行自动驾驶软件开发程序代码以控制计算机设备800实现自动驾驶软件开发方法。
图2仅示出了具有组件801-805以及实现自动驾驶软件开发程序指令的计算机设备800,本领域技术人员可以理解的是,图2示出的结构并不构成对计算机设备800的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。下面将详细描述计算机设备800,处理器802执行自动驾驶软件开发程序代码以控制计算机设备800实现自动驾驶软件开发方法的详细过程。
请结合参看图3,其为本发明第一实施例提供的自动驾驶软件开发方法。在本实施例中,服务器端10和客户端20运行在同一台设备中,即,自动驾驶软件开发程序指令都执行于一台计算机设备800中。其中,自动驾驶软件开发程序指令存储于存储介质801中。处理器802执行该自动驾驶软件开发程序指令以实现自动驾驶软件开发方法。自动驾驶软件开发方法包括以下步骤。
步骤S301,获取源数据,源数据具有标签。源数据包括真实的路况数据和虚拟的仿真场景数据。例如,真实的路况数据是通过自动驾驶车辆200在公路上行驶采集到的。真实的路况数据包括全部传感器信息、车辆状态、时间信息、每个模块输入与输出,可完美再现全部场景。另外,对真实路况数据进行分析、建立标签,加上注释,可以了解各数据表示的信息。同样的,虚拟的仿真场景数据是通过仿真车辆在仿真场景中仿真来获得,同样地,对仿真场景数据也建立标签,加上注释。
步骤S303,根据该标签构建不同等级场景库。不同等级的场景库存储于场景库服务器中(图未示)。在一些可行的实施例中,不同等级场景库可通人工手动构建,或自动与手动结合构建。其中,等级越高的场景库包含的数据量越大。在本实施例中,最高等级场景库的场景库中的数据包含源数据80%以上的数据。场景库的数据可以为行驶于十字路口或者丁字路口的场景库的路况数据;场景库的数据可以为夜间行驶的场景库的路况数据;场景库的数据可以为行驶于转弯处的场景库的路况数据等。可以理解地,以上场景库只是为了方便理解而进行的列举,并不理解为对场景库的限定。可以理解地,每一等级场景库中包括了多种不同场景库,每个场景库由对应的源数据构成。各场景库中的源数据全部或者部分不同。
步骤S305,选择各等级场景库中关键帧数据。具体地,关键帧的分析可以由人来完成或者由设备自动识别。例如,在某些场景下,部分源数据出现了异常,则也可以作为关键帧数据。关键帧数据包括但不限于图像标记、道路对象边界框、可驾驶区域、车道标记线。
步骤S307,响应用户根据所述关键帧数据作出的修改操作,对原自动驾驶算法中的子算法进行修改生成多个当前自动驾驶算法,每一当前自动驾驶算法包括一个或者多个被修改的子算法。即一当前自动驾驶算法中包含一个或者多个与另一当前自动驾驶算法不同的当前子算法,从而多个当前自动算法各不相同。在本实施例中,原自动驾驶算法包括若干仿真程序块,每个程序块处理不同的功能。仿真程序块包括决策规划程序模块、跟踪程序模块、感知程序模块、车辆控制模块等。各程序模块可以看成子算法。具体的,系统中对各场景设置原自动驾驶算法/默认自动驾驶算法。当各场景下的关键帧数据被选择,则需要根据关键帧数据来修改原自动驾驶算法。修改过程中,可以使用虚拟仿真(WorldSim)辅助开发。预设划分规则根据该关键帧所对应的场景进行划分,比如,每个场景可以配置一个工程师团队,该工程师团队可以是一个或几个工程师,每个工程师可以分优先级也可以平行。每个工程师团队负责不同的子算法,即不同的程序模块。当分优先级时,服务器端会按优先级划分给相应的工程师,比如先划分给A,A收到任务提醒,会及时处理,但也可能A由于各种其他原因无法及时处理,A可以按优先级顺序指派给B,依次类推;当平行时,服务器端会划分给团队里的任意工程师,如C工程师,C工程师及时处理,或由于某原因无法及时处理,可划分给团队里的任意工程师;还可以是优先级和平行结合,如服务器端会优先划分给A(A可以是该模块的负责人),A自行处理或划分给团队里的任意成员。
步骤S309,利用各当前自动驾驶算法逐级对应地对各等级场景库的数据进行仿真得到仿真结果。在本实施例中,在仿真时,从最低等级的场景库至最高等级的场景库进行仿真。
步骤S311,判断各当前仿真结果是否达到预设标准以及判断各当前仿真的场景库是否为最高等级的场景库。在本实施例中,通过数据仿真(LogSim)进行调试,在提供的可视化仿真界面中,可以同时看到当前自动驾驶算法和原自动驾驶算法各自在同一场景下对应的仿真结果,从而进行直观比较。如当前仿真的结果比利用原自动驾驶算法进行仿真得到结果优,则为达到预设标准。如当前仿真的结果比利用原自动驾驶算法进行仿真得到的结果差,则为未达到预设标准。预设标准包括但不限于是否碰撞、是否准确识别信号灯、安全距离、驾驶舒适度。若一当前自动驾驶算法所对应的仿真结果达到预设标准,执行步骤S313。若一当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库是最高等级场景库中的场景库,执行步骤315。若一当前自动驾驶算法所对应的仿真结果未达到预设标准,执行步骤317。
步骤S313,利用一当前自动驾驶算法对当前仿真的场景库的下一等级场景库中的场景库中的数据进行仿真。
步骤S315,将一当前自动驾驶算法中的被修改的前子算法确定为最优子算法。
步骤S317,修改一当前自动驾驶算法的被修改的子算法以重构一当前自动驾驶算法,并重新执行利用一当前自动驾驶算法逐级对各等级场景库的场景库中的数据进行仿真。
上述实施例中,可以对各个场景库各自进行模拟仿真,因此,可以将每个自动驾驶算法交由不同的开发人员负责,可以加快开发进度,大大提高效率。其次,利用不同的自动驾驶算法对各场景库进行仿真,使仿真更加精准。再次,通过利用不同的自动驾驶算法逐级进行仿真,且通过将当前自动驾驶算法仿真的结果和前一次自动驾驶算法仿真的结果进行比对,得到最优的自动驾驶算法,从而进一步确保了自动驾驶算法的精准性。此外,本实施例通过将自动驾驶算法从低等级至高等级的场景库逐级仿真,数据通过仿真和不断积累,更符合安全标准。
请结合参看图4,其为第二实施例提供的一种自动驾驶软件开发方法的部分流程图。与第一实施例提供的一种自动驾驶软件开发方法差异在于,第二实施例提供的一种自动驾驶软件开发方法还包括下面步骤。
步骤S319,利用所有最优子算法更新原自动驾驶算法形成新版自动驾驶算法。具体地,当各个子算法通过以上步骤完成确认最优子算法后,则将各个最优子算法进行合并。在一些可行的实施例中,还可以通过人工将各最优子算法进行合并。
步骤S321,利用新版自动驾驶算法对整体场景库进行仿真生成综合仿真结果。整体场景库为数据最全的场景库,例如包含大量数据的云场景库。
步骤S323,判断综合仿真结果是否满足预设标准;若满足要求,将自动驾驶算法应用于一台或多台自动驾驶车辆200,以从一台或多台自动驾驶车辆200获取源数据,并重新执行步骤S303。反之,执行步骤S315。
请参看图5,其为第三实施例提供的一种自动驾驶开发方法的流程示意图。在本实施例中,服务器端10和客户端20运行在不同的计算机设备中,即,自动驾驶软件开发程序指令执行于多台计算机设备800中,本实例以三台客户端计算机和一台服务器端计算机设备为例说明,如图1所示。服务器端10和客户端20共同执行自动驾驶软件开发程序指令,实现自动驾驶软件开发方法。自动驾驶软件开发方法包括以下步骤:
步骤S501,服务器端10获取源数据,源数据具有标签。源数据包括真实的路况数据和虚拟的仿真场景数据。例如,真实的路况数据是通过自动驾驶车辆200在公路上行驶采集到的。真实的路况数据包括全部传感器信息、车辆状态、时间信息、每个模块输入与输出,可完美再现全部场景。另外,对真实路况数据建立标签,可以了解各数据表示的信息。同样的,虚拟的仿真场景数据是通过仿真车辆在仿真场景中仿真来获得,同样地,对仿真场景数据也建立标签。
步骤S503,服务器端10根据该标签构建不同等级场景库,其中,等级越高的场景库包含的数据量越大。在本实施例中,最高等级的场景库的场景库中的数据包含源数据80%以上的数据。场景库的数据可以为行驶于十字路口或者丁字路口的场景库的路况数据;场景库的数据可以为夜间行驶的场景库的路况数据;场景库的数据可以为行驶于转弯处的场景库的路况数据等。可以理解地,以上场景库只是为了方便理解而进行的列举,并不理解为对场景库的限定。可以理解地,每一等级场景库中包括了多种场景库,每个场景库由对应的源数据构成。各场景库中的源数据全部或者部分不同。最高等级的场景库可以为存放大量数据的云端数据库,最低等级的场景库可以为含有40%以下数据量的数据库,中间等级的场景库可以为专门挑选的黄金标准库,也可为工程师通过标签或其他方式在整个公司场景库里搜索出来的某个场景库。
步骤S505,服务器端10选择各等级场景库中关键帧数据。具体地,关键帧的分析可以由人来完成或者由设备自动识别。例如,在某些场景下,部分源数据出现了异常,则也可以作为关键帧数据。
步骤S507,服务器端10根据预设划分规则分发关键帧数据给不同的客户端20。具体地,每个客户端20负责一种或者多种子算法开发,可以将关键帧数据发送给对应的客户端20。
步骤S601,各客户端20接收来自服务器端10分发的关键帧数据。每个客户端20接收到的关键帧数据全部或者部分不相同。
步骤S603,各客户端20响应用户根据所述关键帧数据做出的操作,对原自动驾驶算法中的子算法进行对应修改生成多个当前自动驾驶算法。其中,各当前自动驾驶算法不同。
步骤S605,各客户端20分别利用各当前自动驾驶算法逐级对应地对各等级场景库的场景库中的数据进行仿真得到仿真结果,其中,等级越高的场景库包含的数据量越大。
步骤S607,各客户端20判断当前仿真结果是否达到预设标准。
步骤S609,各客户端20判断当前仿真的场景库是否为最高等级的场景库。
步骤S611,若当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库不是最高等级场景库中的场景库,各客户端20分别利用当前自动驾驶算法对当前仿真的场景库的下一等级场景库中的场景库中的数据进行仿真。
步骤S613,若一当前自动驾驶算法所对应的仿真结果达到预设标准且所对应的当前仿真的场景库是最高等级场景库中的场景库,对应的客户端20将当前自动驾驶算法中被修改的子算法确定为最优子算法并发送给服务器端10。
步骤S615,若一当前自动驾驶算法所对应的仿真结果未达到预设标准,对应的客户端20修改一当前自动驾驶算法中被修改的子算法以重构一当前自动驾驶算法,并重新执行利用一当前自动驾驶算法逐级对各等级场景库的场景库中的数据进行仿真。
步骤S509,服务器端10接收不同客户端20最优子算法,并利用所有最优子算法更新原自动驾驶算法形成新版自动驾驶算法,其中,客户端20响应用户根据关键帧数据作出的修改操作,对原自动驾驶算法中的子算法进行一次或者多次修改得到最优子算法。
步骤S511,客户端20利用新版自动驾驶算法对整体场景库进行仿真生成综合仿真结果。
步骤S513,客户端20判断综合仿真结果是否满足预设标准;若满足要求,将新版自动驾驶算法应用于一台或多台自动驾驶车辆200,以从一台或多台自动驾驶车辆200获取源数据,并重新执行S503。反之,执行步骤S615。
上述实施例中,可以通过多方协作,确保大量开发人员在共同建设一个庞大系统的过程中,一起协作,提高开发效率;且通过逐级仿真,可确保每一次修改后的自动驾驶算法都是实事求是,优于修改前的自动驾驶算法,且整体系统性能越来越好;同时,每个新版自动驾驶算法都是通过大量数据支撑,验证达标后再上路实测,符合安全标准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。该计算机设备可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机 设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、流动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。