用于自动驾驶的方法、装置、设备和存储介质
文献发布时间:2023-06-19 09:35:27
技术领域
本公开的实施例主要涉及自动驾驶领域,并且更具体地,涉及用于自动驾驶的仿真和信息收集方法、装置、设备和计算机可读存储介质。
背景技术
自动驾驶是通过使用计算机代替人类驾驶员或辅助人类驾驶员来感知车辆的周围环境、规划车辆的运动轨迹并控制车辆到达指定目标的技术。广义上的自动驾驶系统通常包括两部分,即,软件系统和硬件系统。硬件系统包括用于感知环境的各种传感器和用于致使车辆执行行驶动作的致动器。软件系统包括用于进行信息融合、路径规划、行为决策、运动控制的各种模块。在软件系统的开发过程中,为了验证和测试一个或多个模块的功能和性能,通常需要在非车载环境中对软件系统进行仿真(又称为“离线仿真”)。因此,设计合理的标准和流程来测试软件系统,有助于避免由于软件系统的功能漏洞而导致的安全问题。
发明内容
根据本公开的示例实施例,提供了一种用于自动驾驶的方案。
在本公开的第一方面中,提供了一种用于自动驾驶的仿真方法。该方法包括获取与真实环境中自动驾驶车辆的行驶动作有关的行驶信息和与真实环境有关的环境信息。该方法还包括基于行驶信息,设置仿真环境中的仿真车辆的初始状态。该方法进一步包括基于环境信息,为具有初始状态的仿真车辆生成行驶规划。
在本公开的第二方面中,提供了一种用于自动驾驶的信息收集方法。该方法包括在自动驾驶车辆在真实环境中行驶的同时,利用由自动驾驶车辆的感测设备收集的数据,生成与真实环境有关的、对应于多个规划周期中的至少一个规划周期的环境信息。该方法还包括基于环境信息,为自动驾驶车辆生成至少一个规划周期的行驶规划,行驶规划指示由自动驾驶车辆执行的行驶动作。该方法进一步包括存储环境信息和与行驶动作有关的、至少对应于至少一个行驶周期的行驶信息。
在本公开的第三方面中,提供了一种用于自动驾驶的仿真装置。该装置包括信息获取模块,被配置为获取与真实环境中自动驾驶车辆的行驶动作有关的行驶信息和与真实环境有关的环境信息。该装置还包括状态设置模块,被配置为基于行驶信息,设置仿真环境中的仿真车辆的初始状态。该装置进一步包括规划生成模块,被配置为基于环境信息,为具有初始状态的仿真车辆生成行驶规划。
在本公开的第四方面中,提供了一种用于自动驾驶的信息收集装置。该装置包括环境信息生成模块,被配置为在自动驾驶车辆在真实环境中行驶的同时,利用由自动驾驶车辆的感测设备收集的数据,生成与真实环境有关的、对应于多个规划周期中的至少一个规划周期的环境信息。该装置还包括行驶规划生成模块,被配置为基于环境信息,为自动驾驶车辆生成至少一个规划周期的行驶规划,行驶规划指示由自动驾驶车辆执行的行驶动作。该装置进一步包括信息存储模块,被配置为存储环境信息和与行驶动作有关的、至少对应于至少一个行驶周期的行驶信息。
在本公开的第五方面中,提供了一种电子设备,包括一个或多个处理器;以及存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现根据本公开的第一方面的方法。
在本公开的第六方面中,提供了一种电子设备,包括一个或多个处理器;以及存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现根据本公开的第二方面的方法。
在本公开的第七方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
在本公开的第八方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第二方面的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的一些实施例的用于自动驾驶的仿真过程的流程图;
图3示出了根据本公开的一些实施例的规划周期的示意图;
图4示出了根据本公开的一些实施例的基于初始规划周期的仿真过程的流程图;
图5示出了根据本公开的一些实施例的逐规划周期的仿真过程的流程图;
图6示出了根据本公开的一些实施例的用于自动驾驶的仿真装置的示意性框图;
图7示出了根据本公开的一些实施例的用于自动驾驶的信息收集过程的流程图;
图8示出了根据本公开的一些实施例的用于自动驾驶的信息收集装置的示意性框图;以及
图9示出了能够实施本公开的多个实施例的计算设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上文所简述的,为了验证和测试自动驾驶的软件系统(以下简称“软件系统”)的一个或多个模块的功能和性能,通常需要对软件系统进行离线仿真。离线仿真的一种常用方案是实采数据回放仿真,也即,利用真实环境中采集的数据对软件系统进行仿真。
另一方面,在软件系统的开发过程中,通常需要测试软件系统在特定场景下的功能。在实采回放仿真方案中,为了减少不必要的仿真开销,并不是对从软件系统启动到所考虑的特定场景的所有数据进行仿真。一般而言,仅使用真实环境中所采集到的数据中覆盖该特定场景的数据片段。
然而,在进行这种离线仿真时,仿真是从特定时刻直接开始。这导致在仿真中难以完全再现在真实环境中采集数据时的真实场景。通常只能确定车辆在仿真开始时正在执行的行驶动作,而不考虑与该行驶动作有关的其他行驶信息。例如,如果在仿真开始时,在真实环境中的车辆正在通过设置有让行标识(Yield Sign)路口。在传统方案中,仅确定车辆当前正在执行让步动作,而不考虑车辆已经让行的时间。这导致在离线仿真中车辆的初始状态与真实环境中车辆的对应状态存在差别。随着仿真时间的增加,这种差别会逐渐增大,从而无法确保对软件系统的仿真测试的可靠性。
根据本公开的实施例,提出了一种用于自动驾驶的仿真方案。在该方案中,首先获取与真实环境中自动驾驶车辆的行驶动作有关的行驶信息和与真实环境有关的环境信息。利用行驶信息可以在仿真环境中再现自动驾驶车辆在真实环境中的行驶状态。行驶信息可以包括自动驾驶车辆在行驶过程中随时间而做出的一个或多个行驶动作、一个或多个行驶动作的开始时间和/或结束时间、一个或多个行驶动作所遵循的轨迹、一个或多个行驶动作的触发因素等。然后,基于行驶信息,设置仿真环境中的仿真车辆的初始状态。例如,可以在仿真环境中基于行驶信息,使仿真车辆再现自动驾驶车辆在对应时刻的状态。接下来,基于环境信息,为具有该初始状态的仿真车辆生成行驶规划。该行驶规划可以涉及多个规划周期。相应地,初始状态可以是仿真车辆在多个规划周期的开始时刻的状态,或者可以是仿真车辆在每个规划周期的开始时刻的状态。
根据在此提出的用于自动驾驶的仿真方案,仿真环境中的仿真车辆可以再现真实环境中的自动驾驶车辆的状态。以此方式,可以提高自动驾驶系统的仿真测试的可靠性。仿真测试的可靠性的提高又进一步有利于找出自动驾驶系统存在的缺陷,从而有利于提高安全性。以下将参照附图来具体描述本公开的实施例。
图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。总体而言,该示例环境100包括真实环境101和由计算设备102构建的仿真环境(未示出)。真实环境101包括等待过马路的行人112、路侧的树木113、交通标识牌114以及部署有车载系统110的车辆111(其又称为“自动驾驶车辆”)。车辆111在真实环境101中行驶。行人112、树木113、标识牌114、道路等构成了车辆111行驶的外部环境。应当理解,图1中所示的真实环境101仅是示意性的,而无意限制本公开的范围。
部署在车辆111(例如,车辆111的车载终端或其他车载设备)上的车载系统110可以包括用于自动驾驶的软件系统的至少一部分。例如,车载系统110可以包括用于信息融合、路径规划、行为决策、运动控制的各种模块(未示出)。
在车辆111在真实环境101中行驶(例如,进行行驶测试)时,车载系统110可以生成和记录与真实环境101有关的环境信息132。例如,安装在车辆111上的感测设备(例如,激光雷达、相机等)可以感测和收集环境数据,车载系统110可以基于环境数据生成环境信息。这样的环境信息可以包括与车辆111在行驶时的外部环境有关的各种信息,例如指示行人112的信息、指示标识牌114的信息等。
在根据本公开的实施例中,除了环境信息132之外,车载系统110还可以生成和记录与车辆111的行驶动作有关的行驶信息131。在此描述的行驶信息131可以是指为了再现车辆111在真实环境101中的行驶状态所需要的各种信息。行驶信息131可以包括车辆111在行驶过程中随时间而做出的一个或多个行驶动作、一个或多个行驶动作的开始时间和/或结束时间、一个或多个行驶动作所遵循的轨迹、一个或多个行驶动作的触发因素等。作为示例,行驶信息131可以指示在某个时刻(例如,规划周期的开始时刻)车辆111正在执行让行动作,该动作已经持续30秒,并且该动作的触发因素是标识牌114。
车载系统110可以采用各种合适的方式来生成和记录行驶信息131。在一些实施例中,可以针对车辆111的每个行驶动作,记录与该行驶动作有关的行驶信息,例如该行驶动作的开始时间、该行驶动作所遵循的轨迹等。在这种实施例中,根据行驶动作来记录行驶信息131。
在自动驾驶中,车辆111的行驶动作受车载系统110的一个或多个模块控制。应当理解,在此描述的“控制”涉及广义上的概念,其可以包括对车辆111的路径规划、行为决策、运动控制。因此,软件系统中用于路径规划、行为决策、运动控制的一个或多个模块在本文中可以统称或单独称为“控制模块”。有鉴于此,在一些实施例中,行驶信息131可以包括确定车载系统110的一个或多个控制模块的内部状态所需要的信息。这种信息可以包括一个或多个控制模块在某个时刻(例如,规划周期的开始时刻)的状态参数。在这种实施例中,根据模块的内部状态来记录行驶信息131。
计算设备102可以获取由车载系统110生成和记录的行驶信息131和环境信息132。在计算设备102处部署有被测系统120。通过仿真来测试被测系统120的性能。在一些实施例中,被测系统120可以是与车载系统110相同版本的用于自动驾驶的软件系统。在一些实施例中,被测系统120可以是车载系统110的更新版本。例如,相比于车载系统110,被测系统120的一部分被改进。可以理解的是,被测系统120可以包括与车载系统110的控制模块相对应的控制模块。
尽管未示出,计算设备102还可以部署有用于对被测系统120进行测试的测试系统或测试模块。测试系统或测试模块可以被配置为使被测系统120在仿真环境中为仿真车辆生成行驶规划,从而测试被测系统120。
应当理解,图1中示出的环境100仅是示例性的,还可以使用多个计算设备来测试被测系统120。计算设备102可以是任何具有计算能力的设备。作为非限制性示例,计算设备102可以是任意类型的固定计算设备、移动计算设备或便携式计算设备,包括但不限于台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、多媒体计算机、移动电话等;计算设备102的全部组件或一部分组件可以分布在云端。
为了更清楚地理解本公开的实施例所提供的用于自动驾驶的仿真方案,将参照图2来进一步描述本公开的实施例。图2示出了根据本公开的实施例的用于自动驾驶的仿真过程200的流程图。过程200可以由图1的计算设备102实现。为便于讨论,将结合图1来描述过程200。
在框210,计算设备102获取与真实环境101中车辆111的行驶动作有关的行驶信息131和与真实环境101有关的环境信息132。例如,计算设备102可以与车辆111通信,以接收在车辆111处存储的行驶信息131和环境信息132。又如,行驶信息131和环境信息132可以被存储在机器可读介质中,计算设备102可以从该机器可读介质中读取行驶信息131和环境信息132。又如,由车载系统110生成的行驶信息131和环境信息132可以被存储在云平台。计算设备102可以向云平台请求行驶信息131和环境信息132。本公开的实施例在此方面不受限制。
在框220,计算设备102基于行驶信息131,设置仿真环境中的仿真车辆的初始状态。例如,为了对被测系统120进行测试,计算设备102构建用于模拟真实环境101的仿真环境,并且该仿真环境包括用于模拟车辆111的仿真车辆。取决于上文参考图1所描述的行驶信息131的实现形式,计算设备102可以采用不同的方式来设置仿真车辆的初始状态。
在一些实施例中,例如在根据行驶动作来记录行驶信息131的实施例中,计算设备102可以基于行驶信息131,确定车辆111在仿真开始时刻的状态,并将仿真车辆的初始状态设置为该状态。在此描述的车辆111或仿真车辆的“状态”、“初始状态”等类似术语是指车辆的行驶状态,包括正在执行的行驶动作(例如,停车、直行、右拐等)、该行驶动作已经持续的时间、已规划的即将执行的行驶动作等。作为示例,计算设备102可以基于行驶信息131确定车辆111在仿真开始时刻处于让行状态(例如,停车),并且该让行状态已经持续了TY时间。计算设备102可以将仿真车辆的初始状态设置为已持续了TY时间的让行状态。
在一些实施例中,例如在根据模块的内部状态来记录行驶信息131的实施例中,计算设备102可以基于行驶信息131,确定仿真环境中用于控制仿真车辆的行驶动作的控制模块的初始参数。计算设备102进而可以通过利用初始参数配置控制模块,来设置仿真车辆的初始状态。
如上文参考图1所描述的,被测系统120可以包括与车载系统110的控制模块相对应的控制模块。在行驶信息131指示车载系统110的控制模块的内部状态的情况下,计算设备101可以基于行驶信息131来确定被测系统120中对应的控制模块的初始参数,并且利用初始参数来配置被测系统120中对应的控制模块。由于仿真车辆的行驶动作受被测系统120中的控制模块的控制,因此通过配置控制模块实际上设置了仿真车辆的初始状态。换言之,在离线仿真中,可以再现或恢复在真实环境101中运行的车载系统110的内部状态。
此外,在此描述的“初始状态”在不同的仿真模式中可以对应于不同的时刻。下文将参考图3至图5对此进行描述。
在框230,计算设备102基于环境信息132,为具有初始状态的仿真车辆生成行驶规划。行驶规划可以包括所规划的行驶动作(例如,停车、直行)、对行驶动作的约束(例如,停车的时长、直行的车速等)以及所规划的轨迹等。具体而言,计算设备102可以运行被测系统120,并且被测系统120可以为仿真车辆生成行驶规划,以模拟真实环境中的行驶规划生成。
继续上文提及的让行状态的示例,其中仿真车辆的初始状态被设置为已持续了TY时间的让行状态。基于环境信息132指示标识牌114的存在,被测系统120可以确定仿真车辆应当执行让行动作TT时间。由于仿真车辆的初始状态指示其已经执行让行动作TY时间,因此,被测系统120可以为仿真车辆生成再执行让行动作(TT-TY)时间的行驶规划。
无论对于车载系统110还是被测系统120,通常以规划周期(有时也可以称为“帧”)为时间单位来生成行驶规划。图3示出了根据本公开的一些实施例的规划周期的示意图300。图3示出了连续的规划周期310-1至310-5,其可以统称为或单独称为规划周期310。
每个规划周期310具有持续时间TD,并且相邻的两个规划周期具有时间间隔TS。例如,规划周期310-1的行驶规划可以用于限定车辆在时刻TI至时刻(TI+TD)之间的行驶动作,其中TI为规划周期310-1的开始时刻。类似地,规划周期310-2的行驶规划可以用于限定车辆在时刻(TI+TS)至时刻(TI+TS+TD)之间的行驶动作。对于不同的规划周期在时间轴上重合的部分,车辆可以根据最新生成的行驶规划来行驶。
一般而言,在离线仿真中,为仿真车辆生成的行驶规划可以涉及多个规划周期。因此,可以实现不同的基于规划周期的仿真模式,例如基于初始规划周期的仿真模式和逐规划周期的仿真模式。
首先来描述基于初始规划周期的仿真模式。图4示出了根据本公开的一些实施例的基于初始规划周期的仿真过程400的流程图。仅为了描述的目的而无意限制,假设行驶规划涉及图3中所示的规划周期310-1至310-5。
在框410,计算设备102可以创建仿真环境。具体地,计算设备102可以设置仿真开始的规划周期。例如,计算设备102可以将仿真开始的规划周期被设置为规划周期310-1。在下文中,规划周期310-1也可以称为第一规划周期310-1或初始规划周期310-1。计算设备102还可以设置仿真结束的规划周期。例如,仿真结束的规划周期可以被设置为规划周期310-5。计算设备102还可以初始化用于被测系统120的结构化数据,例如可以设置在离线仿真中,被测系统120读取和使用哪些数据。在基于初始规划周期的仿真模式中,可以设置被测系统120读取和使用行驶信息131中与初始规划周期310-1有关的数据。
在框420,计算设备102可以设置仿真车辆在初始规划周期310-1的开始时刻TI的状态,即设置仿真车辆的初始状态。例如,计算设备102可以读取行驶信息131中车辆111在初始规划周期310-1的开始时刻TI的行驶动作有关的信息,并且确定车辆111在初始规划周期310-1的开始时刻TI的状态(有时又称为“第一状态”)。计算设备102可以将车辆111在开始时刻TI的状态设置为仿真车辆在初始规划周期310-1的初始状态。
在框430,计算设备102可以为仿真车辆生成多个规划周期310-1至310-5的行驶规划。具体地,计算设备102可以运行被测系统120。被测系统120可以基于环境信息132,为具有上述初始状态的仿真车辆生成初始规划周期130-1的行驶规划(又称为“第一行驶规划”)。接下来,被测系统120可以确定按照第一行驶规划而行驶的仿真车辆在下一规划周期130-2(又可以称为“第二规划周期”)的开始时刻的状态,即,更新状态。在该示例中,规划周期310-2紧接在规划周期310-1后。
被测系统120可以基于与更新状态相对应的仿真环境信息,为具有更新状态的仿真车辆生成规划周期130-2的行驶规划(又称为“第二行驶规划”)。与更新状态相对应的仿真环境信息可以是基于更新状态和环境信息132确定的。例如,可以基于更新状态确定仿真车辆在第二规划周期130-2的开始时刻所处的位置,然后基于真实环境中该位置处的外部环境生成仿真环境信息。
以此类推,被测系统120可以为仿真车辆生成其余的规划周期310-3至310-5的行驶规划。在框440,计算设备102可以结束对被测系统120的仿真测试。
在基于初始规划周期的仿真模式中,可以仅在初始规划周期利用行驶信息来设置仿真车辆的状态。换言之,可以仅在初始规划周期使被测系统120完全再现车载系统110的内部状态。这使得在初始规划周期之后的后续规划周期的仿真结果与初始规划周期有关。这种模式可以用于验证和测试新版本的软件系统在特定场景下的功能。
下面来描述逐规划周期的仿真模式。图5示出了根据本公开的一些实施例的逐规划周期的仿真过程500的流程图。仅为了描述的目的而无意限制,假设行驶规划涉及图3中所示的规划周期310-1至310-5。
在框510,计算设备102可以创建仿真环境。具体地,计算设备102可以设置仿真开始的规划周期。例如,计算设备102可以将仿真开始的规划周期设置为规划周期310-1。规划周期310-1也可以称为第一规划周期310-1或初始规划周期310-1。计算设备102还可以设置仿真结束的规划周期。例如,仿真结束的规划周期可以被设置为规划周期310-5。计算设备102还可以初始化用于被测系统120的结构化数据,例如可以设置在离线仿真中,被测系统120读取和使用哪些数据。在逐规划周期的仿真模式中,可以设置被测系统120读取和使用行驶信息131中与每个规划周期有关的数据。
在框520,计算设备102可以设置仿真车辆在当前规划周期310的开始时刻的状态,即,设置仿真车辆在当前规划周期310的初始状态。例如,计算设备102可以读取行驶信息131中车辆111在当前规划周期310的开始时刻的行驶动作有关的信息,并且确定车辆111在当前规划周期310的开始时刻的状态。计算设备102可以将所确定的状态设置为仿真车辆在当前规划周期310的初始状态。
在框530,计算设备102可以为仿真车辆生成当前规划周期310(例如,规划周期310-1)的行驶规划。具体地,计算设备102可以运行被测系统120。被测系统120可以基于环境信息132,为具有上述初始状态的仿真车辆生成当前规划周期310的行驶规划。在框540,被测系统120可以确定当前规划周期是否为最后一个规划周期。如果确定当前规划周期不是最后一个规划周期,则被测系统120可以进行到下一规划周期(例如,规划周期310-2)的行驶规划。仿真过程500回到框520。
如果在框540确定当前规划周期为最后一个规划周期(例如,当前规划周期为规划周期310-5),则仿真过程500进行到框550。在框550,计算设备102可以结束对被测系统120的仿真测试。
在逐规划周期的仿真模式中,对于每个规划周期均利用行驶信息来设置仿真车辆的状态。换言之,在每个规划周期均使被测系统120完全再现车载系统110的内部状态。这使得每个规划周期的仿真结果仅与该规划周期有关,而与其他的规划周期无关。这种模式可以用于测试软件系统在每一规划周期的性能并可以再现线上运行时的问题。
以上描述了基于初始规划周期的仿真模式和逐规划周期的仿真模式,但应当理解,这仅是示意性的。在根据本公开的实施例中还可以实现其他的基于规划周期的仿真模式。例如,可以将基于初始规划周期的仿真模式和逐规划周期的仿真模式相结合,对一部分的规划周期应用基于初始规划周期的仿真模式,对另一部分的规划周期应用逐规划周期的仿真模式。又如,在一种可能的仿真模式中,可以每隔一定数目(例如,两个)的规划周期基于行驶信息重新设置仿真车辆的状态,即,每隔一定数目的规划周期使被测系统120再现车载系统110的状态。可以理解的是,不同的仿真模式可以适用于不同的测试需求。因此,可以根据测试需求来选择合适的仿真模式。
以上所描述的用于自动驾驶的仿真方案可用于多种仿真测试场景,例如调试在真实环境中进行测试时发生的问题、以细粒度进行自动驾驶系统的功能测试等。在该方案中,仿真环境中的仿真车辆可以再现真实环境中的自动驾驶车辆的状态,这至少可以减少仿真环境与真实环境的差异。以此方式,可以提高自动驾驶系统的仿真测试的可靠性。仿真测试的可靠性的提高又进一步有利于找出自动驾驶系统存在的缺陷,从而提高安全性。此外,在此还提出了基于规划周期的不同的仿真模式,以适应不同的测试需求。
图6示出了根据本公开的一些实施例的用于自动驾驶的仿真装置600的示意性框图。装置600可以被包括在图1的计算设备102中或分布于计算设备102和车辆111上。如图6所示,装置600包括信息获取模块610,被配置为获取与真实环境中自动驾驶车辆的行驶动作有关的行驶信息和与真实环境有关的环境信息。装置600还包括状态设置模块620,被配置为基于行驶信息,设置仿真环境中的仿真车辆的初始状态。装置600进一步包括规划生成模块630,被配置为基于环境信息,为具有初始状态的仿真车辆生成行驶规划。
在一些实施例中,行驶规划涉及多个规划周期,并且状态设置模块620包括:第一状态确定模块,被配置为基于行驶信息,确定自动驾驶车辆在多个规划周期中的第一规划周期的开始时刻的第一状态;以及第一状态设置模块,被配置为将仿真车辆的初始状态设置为第一状态。
在一些实施例中,规划生成模块630包括:第一行驶规划生成模块,被配置为基于环境信息,为具有第一状态的仿真车辆生成第一规划周期的第一行驶规划;更新状态确定模块,被配置为确定按照第一行驶规划而行驶的仿真车辆在紧接在第一规划周期后的第二规划周期的开始时刻的更新状态;以及第二行驶规划生成模块,被配置为基于与更新状态相对应的仿真环境信息,为具有更新状态的仿真车辆生成第二规划周期的第二行驶规划。
在一些实施例中,行驶规划涉及多个规划周期,并且状态设置模块620包括:第三状态确定模块,被配置为基于行驶信息,确定自动驾驶车辆在多个规划周期中的每个规划周期的开始时刻的相应状态;以及第三状态设置模块,被配置为将仿真车辆在每个规划周期的初始状态设置为相应状态。
在一些实施例中,规划生成模块630包括:第三行驶规划生成模块,被配置为基于环境信息,为具有相应状态的仿真车辆生成每个规划周期的行驶规划。
在一些实施例中,状态设置模块620包括:初始参数确定模块,被配置为基于行驶信息,确定仿真环境中用于控制仿真车辆的行驶动作的控制模块的初始参数;以及初始参数利用模块,被配置为通过利用初始参数配置控制模块,来设置初始状态。
在一些实施例中,行驶信息包括以下至少一项:行驶动作的开始时间,行驶动作所遵循的轨迹,行驶动作的触发因素。
以上描述的装置600的模块中的一些模块可以是用于自动驾驶的软件系统自身的模块,另一些模块可以是为了测试软件系统而设置的。在一些实施例中,这些模块可以被实现在计算设备102中。在一些实施例中,这些模块中的一个或多个模块可以被实现在真实环境中的车辆111上。
本公开的实施例还提供了一种用于自动驾驶的信息收集方案。图7示出了根据本公开的实施例的用于自动驾驶的信息收集过程700的流程图。过程700可以由图1的车辆111上的车载设备(未示出)实现。为便于讨论,将结合图1来描述过程700。
车辆111在真实环境101中行驶。在框710,车载设备利用由车辆111的感测设备收集的数据,生成与真实环境101有关的、对应于多个规划周期中的至少一个规划周期的环境信息132。例如,安装在车辆111上的感测设备(例如,激光雷达、相机等)可以感测和收集环境数据,车载设备可以基于环境数据生成环境信息。这样的环境信息可以包括与车辆111在行驶时的外部环境有关的各种信息,例如指示行人112的信息、指示标识牌114的信息等。
环境信息132可以对应于规划周期。在此描述的对应于规划周期的环境信息可以是指在时间上覆盖规划周期的至少一部分的环境信息。例如,对应于图3中的规划周期310-1的环境信息可以指示真实环境101在时刻TI至时刻(TI+TS)之间的状况。
在框720,车载设备基于环境信息132,为车辆111生成至少一个规划周期的行驶规划。该行驶规划指示由车辆111执行的行驶动作。在框730,车载设备存储环境信息132和与行驶动作有关的、至少对应于至少一个行驶周期的行驶信息131。
在此描述的行驶信息131可以是指为了再现车辆111在真实环境101中的行驶状态所需要的各种信息。行驶信息131可以包括车辆111在行驶过程中随时间而做出的一个或多个行驶动作、一个或多个行驶动作的开始时间和/或结束时间、一个或多个行驶动作所遵循的轨迹、一个或多个行驶动作的触发因素等。作为示例,行驶信息131可以指示在某个时刻(例如,规划周期的开始时刻)车辆111正在执行让行动作,该动作已经持续30秒,并且该动作的触发因素是标识牌114。
车载设备可以采用各种合适的方式来生成和记录行驶信息131。在一些实施例中,车载设备可以针对车辆111的每个行驶动作,存储与该行驶动作有关的行驶信息,例如该行驶动作的开始时间、该行驶动作所遵循的轨迹等。
在一些实施例中,行驶信息131可以包括确定车载系统110的一个或多个控制模块的内部状态所需要的信息。这种信息可以包括一个或多个控制模块在某个时刻(例如,规划周期的开始时刻)的状态参数。在这种实施例中,车载设备可以确定用于控制车辆111的行驶动作的控制模块在至少一个规划周期内的状态参数,并且存储状态参数作为行驶信息131的至少一部分。
在一些实施例中,车载设备还可以将行驶信息131和环境信息132发送给用于对软件系统进行仿真的设备,例如,计算设备102。在一些实施例中,车载设备还可以将行驶信息131和环境信息132发送给云平台。用于对软件系统进行仿真的设备(例如,计算设备102)可以向云平台请求行驶信息131和环境信息132。
图8示出了根据本公开的一些实施例的用于自动驾驶的信息收集装置800的示意性框图。装置800可以被包括在图1的车辆111上。如图8所示,装置800包括环境信息生成模块810,被配置为在自动驾驶车辆在真实环境中行驶的同时,利用由自动驾驶车辆的感测设备收集的数据,生成与真实环境有关的、对应于多个规划周期中的至少一个规划周期的环境信息。装置800还包括行驶规划生成模块820,被配置为基于环境信息,为自动驾驶车辆生成至少一个规划周期的行驶规划,行驶规划指示由自动驾驶车辆执行的行驶动作。装置800进一步包括信息存储模块830,被配置为存储环境信息和与行驶动作有关的、至少对应于至少一个行驶周期的行驶信息。
在一些实施例中,信息存储模块830包括:状态参数确定模块,被配置为确定用于控制自动驾驶车辆的行驶动作的控制模块在至少一个规划周期内的状态参数;以及状态参数存储模块,被配置为存储状态参数作为行驶信息的至少一部分。
图9示出了可以用来实施本公开的实施例的示例设备900的示意性框图。设备900可以用于实现图1的计算设备102或车辆111上的车载设备。如图所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元901执行上文所描述的各个方法和处理,例如过程200、400、500、700中的任一项。例如,在一些实施例中,过程200、400、500、700中的任一项可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由CPU 901执行时,可以执行上文描述的过程200、400、500、700中的任一项的一个或多个步骤。备选地,在其他实施例中,CPU 901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200、400、500、700中的任一项。
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实施例。
- 自动驾驶策略的训练方法、装置、自动驾驶方法、设备、车辆和计算机可读存储介质
- 自动驾驶车辆的自动驾驶方法、装置、设备及存储介质