用于控制自动驾驶车辆的方法和装置与流程

文档序号:18737317发布日期:2019-09-21 01:21阅读:192来源:国知局
用于控制自动驾驶车辆的方法和装置与流程

本申请实施例涉及车辆控制领域,具体涉及用于控制自动驾驶车辆的方法和装置。



背景技术:

自动驾驶又称无人驾驶,是依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作,让电脑可以在没有任何人类主动的操作下,自动安全地操作机动车辆,因此需要大量的数据处理和计算。但不同于一般的电脑,自动驾驶车辆由于电磁、震动等外部因素容易导致存储器件发生运行错误。

现有的自动驾驶车辆一般采用“主-冗”系统架构,在主系统出现故障时,独立的安全冗余系统可以接管自动驾驶车辆。安全冗余系统一般是独立的计算机系统,其在硬件设备上需要独立设计一套自动驾驶感知以及规划控制算法。使得自动驾驶车辆的成本增高。



技术实现要素:

本申请实施例提出了用于控制自动驾驶车辆的方法和装置。

第一方面,本申请实施例提供了一种用于控制自动驾驶车辆的方法,上述自动驾驶车辆包括CPU和外存,上述方法包括:响应于上述CPU所运行的操作系统的启动,从上述外存中读取正常关闭标志位;根据上述正常关闭标志位,确定第一自动驾驶程序的上次关闭是否为正常关闭;响应于确定上述第一自动驾驶程序的上次关闭为非正常关闭,从上述外存中读取预存的第二自动驾驶程序;运行上述第二自动驾驶程序,以控制上述自动驾驶车辆。

在一些实施例中,上述第二自动驾驶程序与上述自动驾驶车辆的硬件配置对应。

在一些实施例中,上述自动驾驶车辆还包括第一内存和第二内存;以及上述方法还包括:在上述操作系统的运行过程中,响应于接收到当前使用的上述第一内存发送的错误消息,将上述第一内存中存储的数据复制到上述第二内存;根据复制结果,使用上述第一内存和/或上述第二内存。

在一些实施例中,上述响应于接收到当前使用的上述第一内存发送的错误消息,将上述第一内存存储的数据复制到上述第二内存,包括:根据上述错误消息,确定上述第一内存的错误位置;将上述错误位置处对应的数据优先复制到上述第二内存。

在一些实施例中,上述方法还包括:分别在上述第一内存和上述第二内存中存储上述第一自动驾驶程序的启动数据。

第二方面,本申请实施例提供了一种用于控制自动驾驶车辆的装置,包括:上述自动驾驶车辆包括CPU和外存,上述装置包括:第一读取单元,被配置成响应于上述CPU所运行的操作系统的启动,从上述外存中读取正常关闭标志位,其中,上述正常关闭标志位表示第一自动驾驶程序的上次关闭是否为正常关闭;判断单元,被配置成根据上述正常关闭标志位,确定上述第一自动驾驶程序的上次关闭是否为正常关闭;第二读取单元,被配置成响应于确定上述第一自动驾驶程序的上次关闭为非正常关闭,从上述外存中读取预存的第二自动驾驶程序;运行单元,被配置成运行上述第二自动驾驶程序,以控制上述自动驾驶车辆。

在一些实施例中,上述第二自动驾驶程序与上述自动驾驶车辆的硬件配置对应。

在一些实施例中,上述自动驾驶车辆还包括第一内存和第二内存;以及上述装置还包括:复制单元,被配置成在上述操作系统的运行过程中,响应于接收到当前使用的上述第一内存发送的错误消息,将上述第一内存中存储的数据复制到上述第二内存;切换单元,被配置成根据复制结果,使用上述第一内存和/或上述第二内存。

在一些实施例中,上述复制单元进一步被配置成:根据上述错误消息,确定上述第一内存的错误位置;将上述错误位置处对应的数据优先复制到上述第二内存。

在一些实施例中,上述装置还包括:存储单元,被配置成分别在上述第一内存和上述第二内存中存储上述第一自动驾驶程序的启动数据。

第三方面,本申请实施例提供了一种终端设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行,使得上述一个或多个处理器实现如第一方面任一实施例所描述的方法。

第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面任一实施例所描述的方法。

本申请的上述实施例提供的用于控制自动驾驶车辆的方法和装置,在CPU启动时,首先从外存中读取正常关机标志位。并根据上述正常关机标志位,来确定CPU所运行的操作系统的上次关闭是否为正常关闭。如果确定为非正常关闭,则从外存中读取预存的自动驾驶程序。并运行上述自动驾驶程序,以控制自动驾驶车辆。本实施例的方法,可以在控制自动驾驶车辆成本的同时,保障自动驾驶车辆的安全。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请的一个实施例可以应用于其中的示例性系统架构图;

图2是根据本申请的用于控制自动驾驶车辆的方法的一个实施例的流程图;

图3是根据本申请的用于控制自动驾驶车辆的方法的一个应用场景的示意图;

图4是根据本申请的用于控制自动驾驶车辆的方法的又一个实施例的流程图;

图5是根据本申请的用于控制自动驾驶车辆的装置的一个实施例的结构示意图;

图6是适于用来实现本申请实施例的终端设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于控制自动驾驶车辆的方法或用于控制自动驾驶车辆的装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括自动驾驶车辆101,网络102和服务器103。网络102用以在自动驾驶车辆101和服务器103之间提供通信链路的介质。

自动驾驶车辆101可以通过网络102与服务器103交互,以接收或发送消息等。自动驾驶车辆101上可以安装有各种传感器,以采集自动驾驶车辆101的参数和外部行驶环境的参数。自动驾驶车辆101上还可以安装有各种电子装置,例如导航装置、无人车控制器、防抱死系统、制动力分配系统等。

自动驾驶车辆101可以是各种自动驾驶车辆,包括但不限于大型客车、牵引车、城市公交车、中型客车、大型货车、小型汽车、小型自动挡汽车等等。

服务器103可以是提供各种服务的服务器,例如对自动驾驶车辆101的自动驾驶提供支持的后台服务器。例如,后台服务器可以接收自动驾驶车辆101发送的信息(例如非正常关闭消息),并确定应急策略。

需要说明的是,本申请实施例所提供的用于控制自动驾驶车辆的方法一般由自动驾驶车辆101中的行车电脑执行,相应地,用于控制自动驾驶车辆的装置一般设置于自动驾驶车辆101的行车电脑中。可以理解的是,上述系统架构100中也可以不包括网络102和服务器103。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,示出了根据本申请的用于控制自动驾驶车辆的方法的一个实施例的流程200。本实施例中,自动驾驶车辆包括CPU和外存。本实施例的用于控制自动驾驶车辆的方法,包括以下步骤:

步骤201,响应于CPU所运行的操作系统的启动,从外存中读取正常关闭标志位。

在本实施例中,用于控制自动驾驶车辆的方法的执行主体(例如图1所示的自动驾驶车辆101的行车电脑)在CPU所运行的操作系统启动时,可以从外存中读取正常关闭标志位。本实施例中,CPU可以通过总线读取外存。上述外存中可以存储有正常关闭标志位。上述正常关闭标志位用于表示第一自动驾驶程序的上次关闭是否为正常关闭。正常关闭标志位可以包括0和1。其中,0表示第一自动驾驶程序的上次关闭为正常关闭,1表示第一自动驾驶程序的上次关闭为非正常关闭。可以理解的是,本领域技术人员可以根据实际应用场景,来采用不同的符号或字符串来表示正常关闭和非正常关闭,本实施例对此不做限定。此处的正常关闭可以指自动驾驶车辆通过预先设置的关闭程序实现的第一自动驾驶程序的关闭。非正常关闭可以指自动驾驶车辆由于故障崩溃实现的第一自动驾驶程序的关闭。

步骤202,根据正常关闭标志位,确定第一自动驾驶程序的上次关闭是否为正常关闭。

本实施例中,执行主体可以根据正常关闭标志位,来确定第一自动驾驶程序的上次关闭是否为正常关闭。例如,如果执行主体读取到正常关机标志位为0,则表示第一自动驾驶程序的上次关闭为正常关闭。如果为1,则表示非正常关闭。

步骤203,响应于确定第一自动驾驶程序的上次关闭为非正常关闭,从外存中读取预存的第二自动驾驶程序。

本实施例中,如果执行主体确定第一自动驾驶程序的上次关闭为非正常关闭,则可以从外存中读取预存的第二自动驾驶程序。本实施例中,第一自动驾驶程序与第二自动驾驶程序不同。例如,第一自动驾驶程序的体积要比第二自动驾驶程序的体积小,第一自动驾驶程序实现的功能比第二自动驾驶程序实现的功能多,第一自动驾驶程序所调用的器件比第二自动驾驶程序调用的器件多。第二自动驾驶程序的意义在于,使得执行主体在第一自动驾驶程序非正常关闭后,能够快速地接管自动驾驶车辆,减少自动驾驶车辆的失控时长,从而避免自动驾驶车辆因失控时间过长发生事故。

在本实施例的一些可选的实现方式中,外存中预存的第二自动驾驶程序与自动驾驶车辆的硬件配置对应。

在本实现方式中,第二自动驾驶程序可以与自动驾驶车辆的硬件配置相对应。举例来说,如果自动驾驶车辆的硬件配置较低,则第二自动驾驶程序可以只具有向车辆底盘发送刹车的功能。如果自动驾驶车辆的硬件配置较高,则第二自动驾驶程序可以实现启动自动驾驶车辆的传感器的驱动,并进行决策规划控制功能,以实现将自动驾驶车辆停在安全位置。

步骤204,运行第二自动驾驶程序,以控制自动驾驶车辆。

执行主体在从外存获取第二自动驾驶程序后,可以运行上述第二自动驾驶程序,以控制自动驾驶车辆。此处,控制可以是指减小自动驾驶车辆的速度,或者将自动驾驶车辆行驶到最近的安全位置。

继续参见图3,图3是根据本实施例的用于控制自动驾驶车辆的方法的应用场景的一个示意图。在图3的应用场景中,自动驾驶车辆在行驶过程中突然崩溃关闭。操作系统在再次启动时,根据正常关机标志位,确定第一自动驾驶程序的上次关闭为非正常关闭。则从外存中读取第二自动驾驶程序,并运行上述第二自动驾驶程序,将自动驾驶车辆行驶到路边停车。

本申请的上述实施例提供的用于控制自动驾驶车辆的方法,在CPU所运行的操作系统启动时,首先从外存中读取正常关闭标志位。并根据上述正常关闭标志位,来确定第一自动驾驶程序的上次关闭是否为正常关闭。如果确定为非正常关闭,则从外存中读取预存的第二自动驾驶程序。并运行上述第二自动驾驶程序,以控制自动驾驶车辆。本实施例的方法,可以在控制自动驾驶车辆成本的同时,保障自动驾驶车辆的安全。

继续参见图4,其示出了根据本申请的用于控制自动驾驶车辆的方法的另一个实施例的流程400。本实施例中,自动驾驶车辆包括第一内存和第二内存。如图4所示,本实施例的用于控制自动驾驶车辆的方法,还可以包括图4中未示出的以下步骤:

步骤401,在操作系统的运行过程中,响应于接收到当前使用的第一内存发送的错误消息,将第一内存中存储的数据复制到第二内存。

本实施例中,执行主体可以主要使用或者只使用第一内存,第二内存作为备用内存存在。可以理解的是,第二内存可以与第一内存相同,也可以不同。如果在操作系统的运行过程中,执行主体接收到当前使用的第一内存发送的错误消息,则可以认定第一内存已经不可靠,可能导致读写出现错误。此时,执行主体可以将第一内存中存储的数据全部或部分复制到第二内存中。以使得执行主体可以继续使用第一内存和/或第二内存,来继续实现自动驾驶。

在本实施例的一些可选的实现方式中,上述步骤401可以进一步包括图4中未示出的以下步骤:根据错误消息,确定第一内存的错误位置;将错误位置处对应的数据优先复制到第二内存。

本实现方式中,执行主体可以在接收到错误消息后,首先根据错误消息,确定第一内存的错误位置。然后,执行主体可以将错误位置对应的数据优先复制到第二内存中。这样,可以保证自动驾驶车辆可以从第一内存或第二内存中及时读取到所需的数据。可以理解的是,执行主体还可以在复制完错误位置对应的数据后,还可以将第一内存中存储的其它数据复制到第二内存中。在复制时,可以通过docker或虚拟机来实现。其中,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。

在本实施例的一些可选的实现方式中,执行主体可以在复制完数据后,可以重新启动使用错误位置对应的数据的进程,以对进程进行修复。

步骤402,根据复制结果,使用第一内存和/或第二内存。

在复制后,执行主体可以根据复制结果,来实现第一内存和/或第二内存。以通过读取第一内存和/或第二内存中的数据,来实现自动驾驶。可以理解的是,如果执行主体没有将第一内存中存储的数据完全复制到第二内存中,则执行主体需要同时使用第一内存和第二内存。如果执行主体已将第一内存中存储的数据完全复制到第二内存中,则执行主体只需要使用第二内存即可。

在本实施例的一些可选的实现方式中,执行主体还可以分别在第一内存和第二内存中存储第一自动驾驶程序的启动数据。这样,如果执行主体在使用第二内存时,可以快速的使得第一自动驾驶程序切换所使用的内存。

本申请的上述实施例提供的用于控制自动驾驶车辆的方法,提供了两个内存,这样可以在第一内存出现错误时,启用第二内存。从而提高了自动驾驶的安全性。

进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种用于控制自动驾驶车辆的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。本实施例的自动驾驶车辆包括CPU和外存。

如图5所示,本实施例的用于控制自动驾驶车辆的装置500包括:第一读取单元501、判断单元502、第二读取单元503以及运行单元504。

第一读取单元501,被配置成响应于CPU所运行的操作系统的启动,从外存中读取正常关闭标志位。其中,正常关闭标志位表示第一自动驾驶程序的上次关闭是否为正常关闭。

判断单元502,被配置成根据正常关闭标志位,确定第一自动驾驶程序的上次关闭是否为正常关闭。

第二读取单元503,被配置成响应于确定第一自动驾驶程序的上次关闭为非正常关闭,从外存中读取预存的第二自动驾驶程序。

运行单元504,被配置成运行第二自动驾驶程序,以控制自动驾驶车辆。

在本实施例的一些可选的实现方式中,第二自动驾驶程序与自动驾驶车辆的硬件配置对应。

在本实施例的一些可选的实现方式中,自动驾驶车辆还包括第一内存和第二内存。上述装置500还可以进一步包括图5中未示出的复制单元和切换单元。

复制单元,被配置成在操作系统的运行过程中,响应于接收到当前使用的第一内存发送的错误消息,将第一内存中存储的数据复制到第二内存。

切换单元,被配置成根据复制结果,使用第一内存和/或第二内存。

在本实施例的一些可选的实现方式中,上述复制单元进一步被配置成:根据错误消息,确定第一内存的错误位置;将错误位置处对应的数据优先复制到第二内存。

在本实施例的一些可选的实现方式中,上述装置500还可以进一步包括图5中未示出的存储单元,被配置成分别在第一内存和第二内存中存储第一自动驾驶程序的启动数据。

应当理解,用于控制自动驾驶车辆的装置500中记载的单元501至单元504分别与参考图2中描述的方法中的各个步骤相对应。由此,上文针对用于控制自动驾驶车辆的方法描述的操作和特征同样适用于装置500及其中包含的单元,在此不再赘述。

下面参考图6,其示出了适于用来实现本公开的实施例的电子设备(例如图1中的自动驾驶车辆的行车大脑)600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。

如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图6中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开的实施例的方法中限定的上述功能。需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于CPU所运行的操作系统的启动,从外存中读取正常关闭标志位;根据正常关闭标志位,确定第一自动驾驶程序的上次关闭是否为正常关闭;响应于确定第一自动驾驶程序的上次关闭为非正常关闭,从外存中读取预存的第二自动驾驶程序;运行第二自动驾驶程序,以控制自动驾驶车辆。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一读取单元、判断单元、第二读取单元和运行单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一读取单元还可以被描述为“响应于所述CPU所运行的操作系统的启动,从所述外存中读取正常关闭标志位的单元”。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1