CN109213143A - 操作自动驾驶车辆的使用事件循环的集中调度系统 - Google Patents

操作自动驾驶车辆的使用事件循环的集中调度系统 Download PDF

Info

Publication number
CN109213143A
CN109213143A CN201810686509.4A CN201810686509A CN109213143A CN 109213143 A CN109213143 A CN 109213143A CN 201810686509 A CN201810686509 A CN 201810686509A CN 109213143 A CN109213143 A CN 109213143A
Authority
CN
China
Prior art keywords
event
data
module
automatic pilot
worker thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810686509.4A
Other languages
English (en)
Other versions
CN109213143B (zh
Inventor
杨清
杨一清
余思洋
刘轩
曹昱
李章�
詹君
杨光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu USA LLC
Original Assignee
Baidu USA LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Baidu USA LLC filed Critical Baidu USA LLC
Publication of CN109213143A publication Critical patent/CN109213143A/zh
Application granted granted Critical
Publication of CN109213143B publication Critical patent/CN109213143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0234Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using optical markers or beacons
    • G05D1/0236Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using optical markers or beacons in combination with a laser
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/0088Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0214Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory in accordance with safety or protection criteria, e.g. avoiding hazardous areas
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0221Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving a learning process
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0223Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving speed control of the vehicle
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0238Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
    • G05D1/024Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors in combination with a laser
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0242Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using non-visible light signals, e.g. IR or UV signals
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • G05D1/0253Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means extracting relative motion information from a plurality of images taken successively, e.g. visual odometry, optical flow
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0255Control of position or course in two dimensions specially adapted to land vehicles using acoustic signals, e.g. ultra-sonic singals
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0257Control of position or course in two dimensions specially adapted to land vehicles using a radar
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0259Control of position or course in two dimensions specially adapted to land vehicles using magnetic or electromagnetic means
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0276Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0276Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
    • G05D1/0278Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle using satellite positioning signals, e.g. GPS
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0276Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
    • G05D1/028Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle using a RF signal
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0287Control of position or course in two dimensions specially adapted to land vehicles involving a plurality of land vehicles, e.g. fleet or convoy travelling
    • G05D1/0289Control of position or course in two dimensions specially adapted to land vehicles involving a plurality of land vehicles, e.g. fleet or convoy travelling with means for avoiding collisions between vehicles
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0287Control of position or course in two dimensions specially adapted to land vehicles involving a plurality of land vehicles, e.g. fleet or convoy travelling
    • G05D1/0291Fleet control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management

Abstract

使用事件队列来存储从多个传感器产生的IO事件以及为多个自动驾驶模块产生的定时器事件。针对事件队列中的每个未决事件,响应于确定事件是IO事件,将与IO事件相关联的数据存储在全局存储器中的与传感器相关的数据结构中。响应于确定事件是定时器事件,启动与定时器事件相关联的工作线程。工作线程执行自动驾驶模块中的触发或启动定时器事件的一个自动驾驶模块。从全局存储器检索输入数据,并将输入数据提供至工作线程以允许工作线程处理输入数据。

Description

操作自动驾驶车辆的使用事件循环的集中调度系统
技术领域
本公开的实施方式总体涉及操作自动驾驶车辆。更具体地,本公开的实施方式涉及自动驾驶的调度任务。
背景技术
以自动驾驶模式运行(例如,无人驾驶)的车辆可以将乘员、尤其是驾驶员从一些驾驶相关的职责中解放出来。当以自动驾驶模式运行时,车辆可以使用车载传感器导航到各个位置,从而允许车辆在最少人机交互的情况下或在没有任何乘客的一些情况下行驶。
大部分自动驾驶车辆(ADV)使用由操作系统(诸如机器人操作系统(ROS))托管的自动驾驶模块进行控制。现有的基于机器人方法的自动驾驶系统使用具有多种缺陷的修订的机器人操作系统来实施,所述多种缺陷包括难以部署、难以用于调试以及对于相同的输入上的不同的操作而输出不一致的结果。基于机器人的系统需要修改操作系统的一些内核级别代码以确保实时运行。
自动驾驶系统由彼此经常通信的几个模块组成。因此,如何协调和安排不同的模块之间的交互成为设计高效且稳定的自动驾驶系统的核心问题。现有的解决方案大多为分散式的(指的是每个模块均作为长运行进程来运行),并且采用消息传递的发布者-订阅者模型。模块的多进程模型共享底层的所有资源并且可能遭受由于有限资源而产生的竞态状况。在多进程环境下,消息通过网络使用发布/订阅通道进行传输。实际上,这种方法增加了系统的输入/输出(IO)开销并且是系统行为不一致的主要原因。
模块是独立的且永远保持以单进程中运行,这使得难以实现故障转移。就其性质而言,每个模块均驻留在其自身的进程空间中并且保持许多其自身的状态,这使得当在模块内发生任何错误时无法进行恢复。因此,分散和分布式系统架构无法获得这种系统通常具有的鲁棒性的优点。更糟糕的是,此系统中的每个模块均可能潜在地成为单一故障点,这对自动驾驶系统是致命的。
现有的基于机器人的自动驾驶系统使用分散方法进行数据存储和通信。这需要将结果数据从一个模块复制到另一模块,从而可能增加延迟。传输数据的通信协议(如TCP/IP)可能产生冗余数据包头,这也使得效率低下。由于经由多线程进行写入和读取,所以现有的系统在数据存储上添加锁定。这可能导致死锁,从而需要额外的方法来处理。因此,由于不存在对通信的时间限制,所以现有系统不能在相同的输入的情况下提供一致的输出。通信的延迟将导致不一致的结果。
发明内容
本公开的实施方式提供了一种用于操作自动驾驶车辆的计算机实施的方法、一种存储有指令的非暂时性机器可读介质以及一种数据处理系统。
在本公开的一方面,用于操作自动驾驶车辆的计算机实施的方法包括:使用事件队列来存储从多个传感器产生的输入和输出事件以及为多个自动驾驶模块产生的定时器事件;以及针对存储在事件队列中的事件中的每个,迭代地执行:响应于确定事件是输入和输出事件,将与输入和输出事件相关联的数据存储在全局存储器中,以及响应于确定事件是定时器事件,启动与定时器事件相关联的工作线程,工作线程执行自动驾驶模块中的触发定时器事件的一个自动驾驶模块,以及将从全局存储器检索的输入数据提供至工作线程以允许工作线程处理输入数据。
在本公开的另一方面,公开了一种存储有指令的非暂时性机器可读介质,所述指令在由处理器执行时致使所述处理器执行操作,所述操作包括:使用事件队列来存储从多个传感器产生的输入和输出事件以及为多个自动驾驶模块产生的定时器事件;以及针对存储在事件队列中的事件中的每个,迭代地执行:响应于确定事件是输入和输出事件,将与输入和输出事件相关联的数据存储在全局存储器中,以及响应于确定事件是定时器事件,启动与定时器事件相关联的工作线程,工作线程执行自动驾驶模块中的触发定时器事件的一个自动驾驶模块,以及将从全局存储器检索的输入数据提供至工作线程以允许工作线程处理输入数据。
在本公开的又一方面,数据处理系统包括:处理器;以及存储器,联接到处理器以存储指令,指令在由处理器执行时致使处理器执行操作,操作包括:使用事件队列来存储从多个传感器产生的输入和输出事件以及为多个自动驾驶模块产生的定时器事件,以及针对存储在事件队列中的事件中的每个,迭代地执行:响应于确定事件是输入和输出事件,将与输入和输出事件相关联的数据存储在全局存储器中,以及响应于确定事件是定时器事件,启动与定时器事件相关联的工作线程,工作线程执行自动驾驶模块中的触发定时器事件的一个自动驾驶模块,以及将从全局存储器检索的输入数据提供至工作线程以允许工作线程处理输入数据。
附图说明
本公开的实施方式在附图的各图中以举例而非限制的方式示出,附图中的相同附图标记指示相似元件。
图1是示出根据一个实施方式的网络化系统的框图。
图2是示出根据一个实施方式的自动驾驶车辆的示例的框图。
图3是示出根据一个实施方式的与自动驾驶车辆一起使用的感知与规划系统的示例的框图。
图4是示出根据一个实施方式的操作自动驾驶车辆的处理流程的图。
图5是示出根据一个实施方式的任务管理系统的示例的框图。
图6是示出根据另一实施方式的任务管理系统的示例的框图。
图7是示出根据一个实施方式的任务管理系统的处理流程的示例的流程图。
图8是示出根据另一实施方式的任务管理系统的示例的框图。
图9是示出根据一个实施方式的操作自动驾驶车辆的过程的流程图。
图10是示出根据另一实施方式的操作自动驾驶车辆的过程的流程图。
图11是示出根据另一实施方式的操作自动驾驶车辆的过程的流程图。
图12是示出根据一个实施方式的数据处理系统的框图。
具体实施方式
将参考以下所讨论的细节来描述本公开的各种实施方式和方面,附图将示出多种实施方式。下列描述和附图是对本公开的说明,而不应当解释为限制本公开。描述了许多特定细节以提供对本公开各种实施方式的全面理解。然而,在某些情况下,并未描述众所周知的或常规的细节以提供对本公开的实施方式的简洁讨论。
本说明书中对“一个实施方式”或“实施方式”的提及意味着结合该实施方式所描述的特定特征、结构或特性可以包括在本公开的至少一个实施方式中。短语“在一个实施方式中”在本说明书中各个地方的出现不必全部指同一实施方式。
根据本公开的一个方面,使用基于集中调度的自动驾驶系统来解决以上缺陷中的至少一些。集中调度系统是用于管理多个自动驾驶模块(例如,感知模块、预测模块、决策模块、规划模块或控制模块)的单线程系统。利用单线程系统,将更容易在任何时间和系统的任何内部状态下进行调试。对于相同的输入上的不同的运行,该系统产生一致的结果。该系统使用具有单个时钟的集中调度以确保系统的原子操作。因此,该系统可以在不同的运行期间处理输入并以相同的逻辑顺序产生结果。系统的可执行代码仅存在于用户模式或用户空间中,使得不存在可导致一些不可预知结果的内核级别的修改。该系统独立于操作系统和第三方库,使得该系统可以容易地移植到不同的自动驾驶平台。
在一个实施方式中,自动驾驶系统包括多个传感器(例如,相机、LIDAR、雷达、IMU、GPS等)和多个自动驾驶模块(例如,感知模块、预测模块、决策模块、规划模块或控制模块等)。自动驾驶系统还包括全局存储器以存储由诸如传感器和/或自动驾驶模块的处理模块产生和使用的数据以及系统的内部状态。自动驾驶系统还包括联接到传感器、自动驾驶模块和全局存储器的任务调度器。响应于由诸如传感器和自动驾驶模块的任何一个或多个处理模块产生的输出数据,任务调度器将输出数据存储在全局存储器中。响应于来自任何处理模块的处理数据的请求,任务调度器将存储在全局存储器(还被称为全局状态存储器、全局储存器、全局状态存储器)中的输入数据提供至该处理模块。任务调度器以单线程执行,并且仅仅负责管理存储在全局存储器中的数据以及分派将由处理模块执行的任务。所有的处理模块均必须通过任务调度器来访问全局存储器。
根据本公开的另一方面,自动驾驶系统使用基于事件循环的集中调度器。事件循环是可作为任务调度器的一部分实施的单线程进程。对资源和全局存储器的访问/更新均经由事件循环实现,其中,全局存储器本质上是免锁的。事件循环通常通过诸如IO事件或定时器事件的事件启动或唤醒。这样的非阻塞IO模型效率很高并且避免了在耗时的IO操作上的等待。处理模块不是长运行进程,而是一系列独立的任务。此外,这些任务是无状态的。因此,只需重新启动该模块即可轻松实现故障转移。所有的模块均合并到由事件循环调度的过程序列中,这是简洁的且易于测试和部署。通过具有基于事件循环的调度器,人们可以有机会使核心逻辑与IO通信解耦,并且IO仅成为模块的触发器中的一个。
根据一个实施方式,使用事件队列来存储从多个传感器产生的IO事件以及为多个自动驾驶模块产生的定时器事件。针对事件队列中的每个未决事件,响应于确定事件是IO事件,将与IO事件相关的数据存储在全局存储器中的与传感器相关的数据结构中。响应于确定事件是定时器事件,启动与定时器事件相关的工作线程。该工作线程执行自动驾驶模块中的触发或启动定时器事件的一个模块。替代地,工作线程可响应于IO事件(例如,表明点云数据或GPS数据变得可用的IO事件)而被启动或唤醒。从全局存储器检索输入数据,并将输入数据提供至工作线程以允许工作线程处理输入数据。针对存储在事件队列中的所有未决事件,经由访问事件队列和全局存储器的单线程迭代地执行以上操作。
根据本公开的另一方面,数据系统(称为全局存储器)被用于自动驾驶车辆中的信息存储和通信。全局存储器仅可以由任务调度器以单线程访问,使得不需要锁定,从而在根本上避免了死锁。代替对数据进行复制,任务调度器仅将数据的指针移到自动驾驶模块,使得通信延迟降低,并且不存在来自诸如TCP/IP的通信协议的冗余包头。数据以时间戳的顺序存储。因此,在相同输入的情况下,模拟器可以提供一致的输出,从而导致重现潜在问题的便利性。全局存储器具有垃圾收集机制,以通过将较旧的数据归档到归档装置中来控制存储器的使用。由于全局存储器中收集了所有最新的更新,所以很容易监视当前的全局情况。
根据一个实施方式,使用全局存储器来存储多个数据结构(例如,链表)。每个数据结构包括多个条目,并且每个条目以时间顺序存储事件中的一个的数据。每个数据结构与自动驾驶车辆的传感器或自动驾驶模块中的一个相关。当接收到与第一自动驾驶模块相关的第一事件时,其中,第一事件包括第一主题ID,第一主题ID被散列以识别与第一事件对应的一个或多个第一数据结构。指向第一数据结构的头部的指针(例如,存储器指针)传递到第一自动驾驶模块以允许第一自动驾驶模块处理与第一事件相关的数据。由于第一数据结构的指针被传递到第一自动驾驶模块,所以不需要复制第一数据结构的数据。代替地,第一自动驾驶模块可以经由指针直接地访问该数据。
当从第一自动驾驶模块接收到表示已经处理了第一事件的数据的通知时,识别存储在全局存储器中的一个或多个第二数据结构,其中,第二数据结构与第一自动驾驶模块相关。第二数据结构可配置成存储第一自动驾驶模块的输出数据。然后,将处理第一事件的数据的结果推到第二数据结构的头部上。当接收到与第一传感器相关的第二事件时,与第二事件相关的第二主题ID被散列以识别第三数据结构。然后,从第二事件获得数据,并且将该数据推到第三数据结构的头部上,该数据包括第三事件的时间戳。
图1是示出根据本公开的一个实施方式的自动驾驶车辆网络配置的框图。参考图1,网络配置100包括可以通过网络102通信地联接到一个或多个服务器103至104的自动驾驶车辆101。尽管示出一个自动驾驶车辆,但多个自动驾驶车辆可以通过网络102联接到彼此和/或联接到服务器103至104。网络102可以是任何类型的网络,例如,有线或无线的局域网(LAN)、诸如互联网的广域网(WAN)、蜂窝网络、卫星网络或其组合。服务器103至104可以是任何类型的服务器或服务器群集,诸如,网络或云服务器、应用服务器、后端服务器或其组合。服务器103至104可以是数据分析服务器、内容服务器、交通信息服务器、地图和兴趣点(MPOI)服务器或者位置服务器等。
自动驾驶车辆是指可以被配置成处于自动驾驶模式下的车辆,在所述自动驾驶模式下车辆在极少或没有来自驾驶员的输入的情况下导航通过环境。这种自动驾驶车辆可以包括传感器系统,所述传感器系统具有被配置成检测与车辆运行环境有关的信息的一个或多个传感器。所述车辆和其相关联的控制器使用所检测的信息来导航通过所述环境。自动驾驶车辆101可以在手动模式下、在全自动驾驶模式下或者在部分自动驾驶模式下运行。
在一个实施方式中,自动驾驶车辆101包括,但不限于,感知与规划系统110、车辆控制系统111、无线通信系统112、用户接口系统113、娱乐资讯系统(未示出)和传感器系统115。自动驾驶车辆101还可以包括普通车辆中包括的某些常用部件,诸如:发动机、车轮、方向盘、变速器等,所述部件可以由车辆控制系统111和/或感知与规划系统110使用多种通信信号和/或命令进行控制,该多种通信信号和/或命令例如,加速信号或命令、减速信号或命令、转向信号或命令、制动信号或命令等。
部件110至115可以经由互连件、总线、网络或其组合通信地联接到彼此。例如,部件110至115可以经由控制器局域网(CAN)总线通信地联接到彼此。CAN总线是被设计成允许微控制器和装置在没有主机的应用中与彼此通信的车辆总线标准。它最初是为汽车内的复用电气布线设计的基于消息的协议,但也用于许多其它环境。
现在参考图2,在一个实施方式中,传感器系统115包括但不限于一个或多个摄像机211、全球定位系统(GPS)单元212、惯性测量单元(IMU)213、雷达单元214以及光探测和测距(LIDAR)单元215。GPS单元212可以包括收发器,所述收发器可操作为提供与自动驾驶车辆的位置有关的信息。IMU213可以基于惯性加速度来感测自动驾驶车辆的位置和定向变化。雷达单元214可以表示利用无线电信号来感测自动驾驶车辆的本地环境内的对象的系统。在一些实施方式中,除感测对象之外,雷达单元214可以另外感测对象的速度和/或前进方向。LIDAR单元215可以使用激光来感测自动驾驶车辆所处环境中的对象。在其它系统部件中,LIDAR单元215还可以包括一个或多个激光源、激光扫描器以及一个或多个检测器。摄像机211可以包括用来采集自动驾驶车辆周围环境的图像的一个或多个装置。摄像机211可以是静物摄像机和/或视频摄像机。摄像机可以是可机械地移动的,例如,通过将摄像机安装在旋转和/或倾斜平台上。
传感器系统115还可以包括其它传感器,诸如:声纳传感器、红外传感器、转向传感器、油门传感器、制动传感器以及音频传感器(例如,麦克风)。音频传感器可以被配置成从自动驾驶车辆周围的环境中采集声音。转向传感器可以被配置成感测方向盘、车辆的车轮或其组合的转向角度。油门传感器和制动传感器分别感测车辆的油门位置和制动位置。在一些情形下,油门传感器和制动传感器可以集成为集成式油门/制动传感器。
在一个实施方式中,车辆控制系统111包括但不限于转向单元201、油门单元202(也被称为加速单元)和制动单元203。转向单元201用来调整车辆的方向或前进方向。油门单元202用来控制电动机或发动机的速度,电动机或发动机的速度进而控制车辆的速度和加速度。制动单元203通过提供摩擦使车辆的车轮或轮胎减速而使车辆减速。应注意,如图2所示的部件可以以硬件、软件或其组合来实施。
回到图1,无线通信系统112允许自动驾驶车辆101与诸如装置、传感器、其它车辆等的外部系统之间的通信。例如,无线通信系统112可以与一个或多个装置直接无线通信,或者经由通信网络进行无线通信,诸如,通过网络102与服务器103至104通信。无线通信系统112可以使用任何蜂窝通信网络或无线局域网(WLAN),例如,使用WiFi,以与另一部件或系统通信。无线通信系统112可以例如使用红外链路、蓝牙等与装置(例如,乘客的移动装置、显示装置、车辆101内的扬声器)直接通信。用户接口系统113可以是在车辆101内实施的外围装置的一部分,包括例如键盘、触摸屏显示装置、麦克风和扬声器等。
自动驾驶车辆101的功能中的一些或全部可以由感知与规划系统110控制或管理,尤其当在自动驾驶模式下操作时。感知与规划系统110包括必要的硬件(例如,处理器、存储器、存储设备)和软件(例如,操作系统、规划和路线安排程序),以从传感器系统115、控制系统111、无线通信系统112和/或用户接口系统113接收信息,处理所接收的信息,规划从起始点到目的地点的路线或路径,随后基于规划和控制信息来驾驶车辆101。替代地,感知与规划系统110可以与车辆控制系统111集成在一起。
例如,作为乘客的用户可以例如经由用户接口来指定行程的起始位置和目的地。感知与规划系统110获得行程相关数据。例如,感知与规划系统110可以从MPOI服务器中获得位置和路线信息,所述MPOI服务器可以是服务器103至104的一部分。位置服务器提供位置服务,并且MPOI服务器提供地图服务和某些位置的POI。替代地,此类位置和MPOI信息可以本地缓存在感知与规划系统110的永久性存储装置中。
当自动驾驶车辆101沿着路线移动时,感知与规划系统110也可以从交通信息系统或服务器(TIS)获得实时交通信息。应注意,服务器103至104可以由第三方实体进行操作。替代地,服务器103至104的功能可以与感知与规划系统110集成在一起。基于实时交通信息、MPOI信息和位置信息以及由传感器系统115检测或感测的实时本地环境数据(例如,障碍物、对象、附近车辆),感知与规划系统110可以规划最佳路线并且根据所规划的路线例如经由控制系统111来驾驶车辆101,以安全且高效到达指定目的地。
服务器103可为用于为各种客户端执行数据分析服务的数据分析系统。在一个实施方式中,数据分析系统103包括数据收集器121和机器学习引擎122。数据收集器121从多种车辆(自动驾驶车辆或由人类驾驶员驾驶的常规车辆)收集驾驶统计数据123。驾驶统计数据123包括表示在不同的时间点处由车辆的传感器捕获的所发出的驾驶命令(例如,油门命令、制动命令和转向命令)以及车辆的响应(例如,速度、加速度、减速度、方向)的信息。驾驶统计数据123还可包括描述不同的时间点处的驾驶环境的信息,诸如,例如,路线(包括起点位置和目的地位置)、MPOI、道路状况、天气状况等。基于驾驶统计数据123,机器学习引擎122针对各种目的产生或训练规则集、算法和/或预测模型124。规则124可包括识别并构想ADV周围的驾驶环境中的对象的规则。规则124可包括规划和控制ADV的规则等。
图3是示出根据一个实施方式的与自动驾驶车辆一起使用的感知与规划系统的示例的框图。系统300可被实施为图1的自动驾驶车辆101的一部分,包括但不限于感知与规划系统110、控制系统111和传感器系统115。参考图3,感知与规划系统110包括但不限于定位模块301、感知模块302、预测模块303、决策模块304、规划模块305、控制模块306和任务管理系统307。模块301至306以及涉及驾驶ADV的其他部件或模块被称为自动驾驶模块(ADM)。
模块301至307中的一些或全部可以以软件、硬件或其组合实施。例如,这些模块可以安装在永久性存储装置352中、加载到存储器351中,并且由一个或多个处理器(未示出)执行。应注意,这些模块中的一些或全部可以通信地联接到图2的车辆控制系统111的一些或全部模块或者与它们集成在一起。模块301至307中的一些可以一起集成为集成模块。
现在参考图3和图4,定位模块301(例如,借助GPS单元212)确定自动驾驶车辆300的当前位置并管理与用户的行程和路线相关的任何数据。定位模块301(也被称为地图与路线模块)管理与用户的行程或路线相关的任何数据。用户可以例如经由用户接口登录并且指定行程的起始位置和目的地。定位模块301与自动驾驶车辆300的诸如地图和路线信息311的其它部件通信,以获得行程相关数据。例如,定位模块301可以从位置服务器和地图与POI(MPOI)服务器获得位置和路线信息。位置服务器提供位置服务,并且MPOI服务器提供地图服务和某些位置的POI,从而可以缓存为地图和路线信息311的一部分。当自动驾驶车辆300沿着路线移动时,定位模块301也可以从交通信息系统或服务器获得实时交通信息。
基于由传感器系统115提供的传感器数据和由定位模块301获得的定位信息,感知模块302确定对周围环境的感知。感知信息可以表示普通驾驶员在驾驶员正驾驶的车辆周围将感知到的东西。感知可以包括例如以对象形式呈现的车道配置(例如,直线车道或弯曲车道)、交通灯信号、另一车辆的相对位置、行人、建筑物、人行横道或其它交通相关标志(例如,停止标志、让行标志)等。
感知模块302可以包括计算机视觉系统或计算机视觉系统的功能,以处理并分析由一个或多个摄像机采集的图像,从而识别自动驾驶车辆环境中的对象和/或特征。所述对象可以包括交通信号、道路边界、其它车辆、行人和/或障碍物等。计算机视觉系统可以使用对象识别算法、视频跟踪以及其它计算机视觉技术。在一些实施方式中,计算机视觉系统可以绘制环境地图、跟踪对象、以及估算对象的速度等。感知模块302也可以基于由诸如雷达和/或LIDAR的其它传感器提供的其它传感器数据来检测对象。
针对每个对象,预测模块303预测该对象在此情形下将表现什么。根据一组地图/路线信息311和交通规则312,基于该时间点的感知驾驶环境的感知数据来执行预测。例如,如果对象是处于相反方向的车辆并且当前驾驶环境包括十字路口,则预测模块303将预测车辆是将可能直线向前移动还是进行转弯。如果感知数据表明十字路口没有交通灯,则预测模块303可预测车辆在进入十字路口之前可能需要完全停止。如果感知数据表明车辆当前处于左转弯车道或右转弯车道,则预测模块303可分别预测车辆将更可能向左转弯或向右转弯。
针对由感知模块302感知的每个对象以及由预测模块303预测的对象的潜在移动,决策模块304作出关于如何处置对象的决定。例如,针对特定对象(例如,交叉路线中的另一车辆)以及描述对象的元数据(例如,速度、方向、转弯角度),决策模块304决定如何与所述对象相遇(例如,超车、让行、停止、超过)。决策模块304可根据诸如交通规则或驾驶规则312的规则集来作出此类决定,所述规则集可存储在永久性存储装置352中。
基于针对所感知到的对象中的每个的决定,规划模块305为自动驾驶车辆规划路径或路线以及驾驶参数(例如,距离、速度和/或转弯角度)。换言之,针对给定的对象,决策模块304决定对该对象做什么,而规划模块305确定如何去做。例如,针对给定的对象,决策模块304可以决定超过所述对象,而规划模块305可以确定在所述对象的左侧还是右侧超过。规划和控制数据由规划模块305生成,包括描述车辆300在下一移动循环(例如,下一路线/路径段)中将如何移动的信息。例如,规划和控制数据可以指示车辆300以30英里每小时(mph)的速度移动10米,随后以25mph的速度变到右侧车道。
基于规划和控制数据,控制模块306根据由规划和控制数据限定的路线或路径通过将适当的命令或信号发送到车辆控制系统111来控制并驾驶自动驾驶车辆。所述规划和控制数据包括足够的信息,以沿着路径或路线在不同的时间点使用适当的车辆设置或驾驶参数(例如,油门、制动和转弯命令)将车辆从路线或路径的第一点驾驶到第二点。
在一个实施方式中,在多个规划周期(也被称为命令周期)(诸如,例如,在每100毫秒(ms)的时间间隔中)中执行规划阶段。针对规划周期或命令周期中的每个,将基于规划和控制数据发出一个或多个控制命令。即,对于每100ms,规划模块305规划下一路线段或路径段,例如,包括目标位置和ADV到达目标位置所需的时间。替代地,规划模块305还可指定具体速度、方向和/或转向角等。在一个实施方式中,规划模块305为下一预定时间段(诸如5秒)规划路线段或路径段。对于每个规划周期,规划模块305基于先前周期中规划的目标位置来规划当前周期(例如,接下来的5秒)的目标位置。然后,控制模块306基于当前周期的规划和控制数据产生一个或多个控制命令(例如,油门命令、制动命令、转向控制命令)。
应注意,决策模块304和规划模块305可以集成为集成模块。决策模块304/规划模块305可以包括导航系统或导航系统的功能,以确定自动驾驶车辆的驾驶路径。例如,导航系统可以确定用于实现自动驾驶车辆沿着以下路径移动的一系列速度和前进方向:所述路径在大体使自动驾驶车辆沿着通往最终目的地的基于车行道的路径前进的同时,基本上避免感知到的障碍物。目的地可以根据经由用户接口系统113进行的用户输入来设定。导航系统可以在自动驾驶车辆正在运行的同时动态地更新驾驶路径。导航系统可以将来自GPS系统和一个或多个地图的数据合并,以确定用于自动驾驶车辆的驾驶路径。
决策模块304/规划模块305还可以包括防撞系统或防撞系统的功能,以识别、评估并且避免或以其它方式越过自动驾驶车辆的环境中的潜在障碍物。例如,防撞系统可以通过以下方式实现自动驾驶车辆的导航中的变化:操作控制系统111中的一个或多个子系统来采取变向操纵、转弯操纵、制动操纵等。防撞系统可以基于周围的交通模式、道路状况等自动确定可行的障碍物回避操纵。防撞系统可以被配置成使得当其它传感器系统检测到位于自动驾驶车辆将变向进入的相邻区域中的车辆、建筑障碍物等时不采取变向操纵。防撞系统可以自动选择既可使用又使得自动驾驶车辆乘员的安全性最大化的操纵。防撞系统可以选择预测使得自动驾驶车辆的乘客舱中出现最小量的加速度的避让操纵。
根据一个实施方式,任务管理系统307配置成与任何处理模块(诸如,模块301至306和传感器系统115的传感器以及涉及驾驶ADV的其他模块)进行通信以分派并协调将由处理模块执行的任务。由模块301至306和传感器系统115执行的任务中的每个通过任务管理系统307以有效率的方式进行调度和协调。根据一个实施方式,任务管理系统307是管理和/或协调处理模块的操作的单线程系统。利用所述单线程系统,将更容易在任何时间和系统的任何内部状态下进行调试。对于相同的输入上的不同的运行,该系统生成一致的结果。该系统使用具有单个时钟的集中调度来确保系统的原子操作。因此,该系统将在不同的运行期间以相同的逻辑顺序处理输入并输出结果。该系统的可执行代码仅存在于用户空间中,使得不需要进行可能导致一些不可预知的结果的、内核级别的修改。该系统独立于操作系统和第三方库,使得该系统可以容易地移植到不同的自动驾驶车辆。
图5是示出根据一个实施方式的任务管理系统的示例的框图。系统500可实施为图3的系统300的一部分。参考图5,系统500包括通信地联接到自动驾驶模块501和传感器系统115以及其他部件或模块(例如,监视器516,用户显示系统502)的任务管理系统307。自动驾驶模块501可包括涉及驾驶ADV的任何部件,诸如,定位模块301、感知模块302、预测模块303、决策模块304、规划模块305和控制模块306。在一个实施方式中,任务管理系统307包括但不限于任务调度器511、全局存储器512、IO集线器接口模块513、数据适配器514、定时器模块515和归档模块517。任务调度器511是集中地管理各方(诸如传感器系统115和自动驾驶模块501)之间的通信的集中调度器。在一个实施方式中,任务调度器511执行为专门负责管理存储在全局存储器512中的数据的单线程进程。其他方(诸如,传感器系统115和自动驾驶模块501)必须经过任务调度器511来访问全局存储器512。
任务调度器511是任务管理系统307的核心部分。每次当任务被触发以被执行时,相应的工作线程被启动或唤醒以处理相关的任务。在工作线程完成任务(成功或失败)之后,工作线程通知任务调度器511将任何结果(如果存在)写入全局存储器512。任务调度器511负责处理触发的任务并使用工作线程执行所述触发的任务。任务可以是存储由传感器系统115中的任何传感器产生的传感器数据。替代地,任务可以是处理由自动驾驶模块(例如,感知模块302)通过一个或多个传感器产生的传感器数据(例如,LIDAR数据)。此外,任务可以是通过自动驾驶模块(例如,决策模块304)处理由一个或多个其他自动驾驶模块(例如,感知模块302)产生的输出数据和由一个或多个传感器产生的输出数据。
IO集线器接口模块513负责将IO装置(在本示例中,传感器系统115的传感器)与任务调度器511进行接口连接。IO集线器接口模块513用于处理来自ADV的传感器的所有输入数据。它连续地处理原始传感器数据并请求任务调度器511将处理后的传感器数据写入到全局存储器512中以用作其他任务的输入数据。IO集线器接口模块513可包括与传感器系统115的传感器对应的一个或多个传感器驱动器。IO集线器接口模块513中的每个传感器驱动器可与特定的传感器驱动器相关联以与传感器(例如,诸如传感器的寄存器的硬件)通信,包括读取和/或处理来自传感器的传感器数据。数据适配器514是用于将特定格式的传感器数据转换到适合于存储在全局存储器512中并且能够由其他相关方(诸如,自动驾驶模块501)识别的预定或统一的数据格式的可选数据转换模块。利用可选的数据适配器514,可以使用具有专有部件或格式的第三方传感器和/或第三方传感器驱动器。
根据一个实施方式,当传感器系统115中的任何传感器感测并产生传感器数据时,相应的传感器驱动器从传感器获得传感器数据并与任务调度器511进行通信。在一个实施方式中,传感器驱动器触发IO事件(例如,通过中断或经由应用程序接口(API)),以通知任务调度器511表明存在待处理的新的传感器数据。响应于IO事件,任务调度器511通过IO事件检索传感器数据并将传感器数据存储在全局存储器512中存储的数据结构中,以作为传感器数据521的一部分。此外,根据一个实施方式,在将传感器数据存储在全局存储器512中之后,任务调度器511可启动或唤醒处理模块(例如,感知模块302)的工作线程以处理新接收的传感器数据。任务调度器511配置成基于传感器数据的类型来识别特定的处理模块以处理传感器数据。
数据结构专门配置成存储特定传感器的传感器数据。即,全局存储器512可包括用于存储传感器系统115中的传感器的传感器数据的多个数据结构,每个数据结构与传感器系统115中的一个或多个传感器对应。任务调度器511通过单线程进程一次一个地处理IO事件。可根据时间顺序(诸如,先来先服务方式)处理所有的IO事件。替代地,可根据IO事件的优先级处理IO事件,其中,不同类型的IO事件可具有不同的优先级。因此,可以避免传统系统中的资源竞争的竞态状况。
根据一个实施方式,对于自动驾驶模块501中的至少一些,定时器模块或定时器逻辑515周期性地产生将在预定时间段(诸如,100毫秒)内失效的一个或多个定时器事件。当与特定的自动驾驶模块相关的定时器事件失效时,启动或唤醒托管自动驾驶模块的工作线程以处理数据。在一个实施方式中,响应于定时器事件,任务调度器511检查定时器事件以识别与所述定时器事件相关的相应自动驾驶模块中的一个。即,定时器事件可包括识别相应自动驾驶模块的特定信息,诸如,自动驾驶模块的模块ID。
此外,根据一个实施方式,定时器事件还可识别将由自动驾驶模块处理的输入数据。例如,定时器事件可表示特定的自动驾驶模块(例如,感知模块)需要处理由LIDAR装置215产生的点云数据。因此,任务调度器511识别全局存储器512的存储由LIDAR装置215产生的传感器数据的数据结构。然后,任务调度器511启动或唤醒执行相应的自动驾驶模块的工作线程并将所识别的数据结构的指针作为输入传递到自动驾驶模块。然后,自动驾驶模块可以经由从任务调度器511传递的指针来处理存储在数据结构中的数据,而不必复制数据,复制数据往往是缓慢且耗费资源的。自动驾驶模块的结果作为自动驾驶数据522的一部分而被存储回全局存储器512中。
全局存储器512用于存储自动驾驶系统中使用的所有信息,包括来自传感器的经处理的原始数据(例如,传感器数据521)、系统的内部状态523以及任务的结果(例如,自动驾驶数据522)。全局存储器512是免锁的,以加速整个系统的操作,并且全局存储器512周期性地将过时的数据作为日志转存到永久性存储装器中,以用于灾难备份、调式和系统改进等。
监视器516是可选的监视系统,其配置成记录系统的状态,并且当监视器516检测到特定异常行为时向适当的各方发送警告,以保持自动驾驶的安全性。全局存储器512可以由诸如用户显示系统502的其他部件读取。用户显示系统502用于显示自动驾驶系统的必要信息,以便用户理解ADV的运行状态。存储在全局存储器512中的数据中至少一些可以作为事件日志503的一部分归档到永久性存储装置352。系统还可包括分级系统,该分级系统配置成根据几个度量(诸如,未碰撞、遵守交通规则、到达目的地以及乘坐体验等)来评估自动驾驶系统的性能。评估结果可作为反馈来用于改善整个自动驾驶系统。系统还可包括代理系统,该代理系统配置成产生一些虚拟代理(诸如,静态对象、移动对象(例如,车辆,行人)等)以在系统开发期间模拟一些场景。
应注意,全局存储器512的存储空间可维持在有限空间内。因此,周期性地,归档模块517(例如,垃圾收集模块)可将全局存储器512中不太可能使用的任何数据作为事件日志503的一部分归档到永久性存储装置352中。因此,可以释放和/或重新使用所归档的数据的存储空间。在一个实施方式中,可从全局存储器512中移除距当前系统时间超过预定时间阈值的任何数据,并且将所述数据作为事件日志503的一部分存储在永久性存储装置352中。取决于系统的可用系统资源(例如,可用于托管全局存储器512的存储器的量),归档的时间阈值可为用户可配置的。归档模块517可以比较每个事件条目的时间戳和当前的系统时间以确定是否应该归档特定的事件条目。
图6是示出根据另一实施方式的任务管理系统的示例的框图。参考图6,系统600包括用于存储和缓存由IO处理器602和定时器处理器603产生的未决事件的事件队列601。IO处理器602可实施为IO集线器接口513的一部分,并且定时器处理器603可实施为定时器模块515的一部分。在一个实施方式中,任务调度器511包括事件循环模块610。事件循环模块610执行为单线程进程。对系统资源和全局存储器512的访问和更新全部经由本质上是免锁的事件循环模块610。事件循环模块610通常通过由IO处理器602触发的IO事件或由定时器处理器603触发的定时器事件来唤醒。这样的非阻塞IO模型是高效的并且避免传统系统中存在的在耗时的IO操作上的等待。
代替长运行进程,模块(例如,自动驾驶模块、用户显示系统、监视器)实施为由相应的工作线程保持的一系列独立的任务,相应的工作线程可作为工作线程池604的一部分。所述任务是无状态的进程并由相应的进程异步且独立地执行。因此,可以例如通过简单地重新启动模块来容易地实现故障转移。所有模块均通过事件循环模块610一次一个地串行启动或唤醒,这是简洁的且易于测试和部署。通过具有基于事件循环的调度器,核心调度逻辑可以与IO通信解耦,并且IO仅成为模块的触发逻辑中的一个。
全局存储器512包含多个事件数据结构。每个事件数据结构与本文中涉及的各方中的一个(诸如,例如,传感器系统115中的传感器以及处理模块(例如,自动驾驶模块501、用户显示系统502、监视器516和归档模块517))对应。每个事件数据结构包括多个事件条目,并且每个事件条目存储特定事件的事件数据,包括事件的时间戳以及与事件相关的数据(例如,由相应方或相应部件产生的数据)。事件数据结构可以以多种方式实施,诸如,例如,数组、环形缓冲器、链表、表格、数据库等。
在一个实施方式中,工作线程池604包含准备好执行任务的工作线程的池。任务通过由相应的工作线程所执行的模块的可执行代码来执行。一旦完成任务,工作线程将经由回调接口通知事件循环模块610。通知还可包括任务的结果或状态。响应于所述通知,事件循环模块610将结果或状态作为条目写入全局存储器512中的与启动回调的模块对应的数据结构中。替代地,事件循环模块610可将结果写入到可由通知预先配置或指定的一个或多个数据结构中。
IO处理器602与传感器系统115的传感器进行通信,其中,IO处理器602可包括专门处理与相应传感器的通信的一个或多个传感器驱动器611至613。当传感器捕捉传感器数据时,IO处理器602的相应的传感器驱动器获得传感器数据,可选地,调用数据适配器来转换传感器数据的格式,并且将传感器数据发送到任务调度器511以写入全局存储器512中的与传感器相关的数据结构中。在一个实施方式中,响应于由传感器产生的传感器数据,与传感器相关的传感器驱动器例如经由中断或对预定API的调用来产生IO事件。IO处理器602将IO事件推入事件队列601的尾部。一旦IO事件已经被推入事件队列601的尾部,可通知或唤醒事件循环模块610。此外,对于特定类型的传感器数据(例如,由LIDAR装置215产生的点云数据),在将传感器数据存储在全局存储器512中之后,事件循环610可启动或唤醒配置成处理传感器数据的处理模块(诸如,感知模块302)。在此场景中,自动驾驶模块的工作线程响应于IO事件而被启动或唤醒。
定时器处理器603配置成处理用于处理模块(诸如,自动驾驶模块501、用户显示系统502、监视器516和归档模块517等)的定时器事件。定时器处理器603可包括定时器逻辑621至623,定时器逻辑621至623配置成为相应的处理模块专门产生定时器事件。在一个实施方式中,对于处理模块中的每个,定时器处理器603周期性地产生至少一个定时器事件。定时器事件可插入或推入到事件队列601的尾部。可每隔预定时间段(诸如,100毫秒)来触发定时器事件。对于不同的处理模块,定时器事件的周期时间段可为相同的或不同的。可为单个处理模块产生多个定时器事件。例如,如图4中所示,决策模块304可能需要来自感知模块302和预测模块303的输入数据。在本示例中,可为决策模块304产生第一定时器事件,表明第一定时器事件需要由感知模块302产生的输入数据。可为决策模块304产生第二定时器事件,表明第二定时器事件需要由预测模块303产生的输入数据。替代地,可产生指示需要感知模块302和预测模块303两者的数据的单个定时器事件。IO事件和定时器事件按时间顺序推入到事件队列601的尾部以作为未决事件631至635的一部分。
在一个实施方式中,事件循环模块610周期性地(例如,经由内部时钟,或由事件通知)循遍事件队列601以确定是否存在任何待处理的未决事件。如果确定事件队列601中存在至少一个未决事件,则事件循环模块610将顶部事件从事件队列601的头部弹出或移除。如上所述,当产生新事件时,新事件被推入到事件队列601的尾部,而事件循环模块610从事件队列601的头部处理事件。因此,事件以先进先出(FIFO)或先来先服务的方式(即,按照从最旧事件到最新事件的时间顺序)进行处理。
响应于从事件队列601的头部得到的事件,事件循环模块610检查事件的事件数据以确定事件的所有者以及事件的所需的输入数据。如上所述,事件可以是由IO处理器602产生的IO事件或由定时器处理器603产生的定时器事件。IO事件和定时器事件中的全部均可根据先来先服务的方式推入到事件队列601的尾部中。替代地,事件队列601可包括用于IO事件的第一特定事件队列以及用于定时器事件的第二特定事件队列。此外,如果某些事件具有不同的优先级,则对于带优先级的任务分派,可利用和使用各自具有不同的优先级的多个事件队列。
在一个实施方式中,响应于从事件队列601的头部弹出的IO事件,事件循环610检查IO事件的事件数据以识别IO事件的所有者。IO事件可由表示传感器系统115中的任何传感器的所有者触发。一旦已经识别IO事件的所有者,则识别与所有者相关的事件数据结构。然后,将IO事件的事件数据存储在所识别的事件数据结构中。
在一个实施方式中,参考图6和图7,经由路径701,响应于从事件队列601的头部弹出的定时器事件,事件循环模块610检查定时器事件的事件数据以识别定时器事件的所有者以及定时器事件所需的输入数据。可选地,如果事件数据尚未被存储,则事件循环模块610经由路径702将事件数据存储在全局存储器512中。例如,可为决策模块304产生定时器事件以处理由感知模块302产生的感知数据。在此情形下的定时器事件将指定定时器事件的所有者是决策模块304,并且所需的输入数据包括由感知模块302产生的感知数据。
响应于事件,事件循环模块610经由路径703分配、启动和/或唤醒工作线程池604中的与事件对应的工作线程710。工作线程池604包括多个工作线程641至646,每个处理存储在全局存储器512中的数据的处理模块均对应一个工作线程。例如,感知线程是配置成执行感知模块302的可执行代码的工作线程。如果已经分配并启动工作线程,则事件循环模块610简单唤醒工作线程。例如,如果事件属于决策模块304,则事件循环模块610启动或唤醒决策线程。此外,事件循环模块610将指向全局存储器512中存储数据结构的存储位置的存储器指针传递到工作线程,全局存储器512的该数据结构存储所需的输入数据。经由路径704,工作线程710可以通过存储器指针从数据结构直接地检索(例如,以只读方式)输入数据,而不必复制输入数据。在决策模块304处理感知模块302的感知数据的以上示例中,事件循环模块610将存储感知模块302的感知数据的数据结构的指针传递到与决策模块304相关的工作线程。应注意,如果处理模块需要来自多个数据结构的输入数据(这可基于事件表明),则将所述数据结构的指针传递到处理模块。
在操作705中,工作线程710处理输入数据。一旦已经处理了输入数据,工作线程710例如使用回调机制经由路径706通知事件循环模块610。通知可包括处理输入数据的结果或处理的状态(例如,成功或失败)。响应于通知,事件循环模块610将工作线程710的结果和/或状态存储在全局存储器512中。在一个实施方式中,响应于来自工作线程710的通知,事件循环模块610识别全局存储器512中存储工作线程710的结果的数据结构。通常,数据结构与由工作线程710执行或托管的处理模块相关。在决策模块304处理感知模块302的感知数据的以上示例中,事件循环模块610将识别与决策模块304对应的数据结构并且将工作线程710的结果存储在全局存储器512中的决策模块304的数据结构中。
因此,在本配置中,第一处理模块的输出数据可用作第二处理模块的输入数据。由于由所有相关的处理模块产生的所有数据均存储在适当的数据结构中,并且数据结构的指针传递到下一处理模块(这些均由以单处理线程执行的事件循环模块610管理),所以在处理期间不需要复制数据。应注意,工作线程可处理存储在全局存储器512的多个数据结构中的输入数据。类似地,工作线程可产生将要存储在全局存储器512中的多个数据结构中的输出数据。例如,返回参考图4,由决策模块304产生的输出数据可存储在全局存储器512中。可从全局存储器512检索决策模块304的输出数据,并且随后将所述输出数据用作规划模块305的输入数据。规划模块305的输出数据可存储在全局存储器512中并且随后用作控制模块306等的输入数据。
图8是示出根据另一实施方式的自动驾驶车辆的任务管理的示例的框图。参考图8,全局存储器512包括多个数据结构,诸如数据结构801至803。每个数据结构与处理模块相关,以存储由相应的处理模块产生的输出数据。处理模块可以是传感器系统115中的任何一个传感器以及自动驾驶模块501中的任何一个。如上所述,通过经由全局存储器512共享数据来执行处理模块之间的通信。
在一个实施方式中,使用消息发布和订阅机制来管理由处理模块共享的数据。在本示例中,数据结构801至803中的每个配置成存储由特定发布者产生的特定主题的消息。主题可包括标识发布者的唯一标识符。发布者指的是可以产生输出数据(例如,以存储在相应主题的数据结构中的消息的形式)的处理模块。例如,主题可以是与感知模块302相关的“感知”。“感知”主题的数据结构配置成存储由感知模块302产生的任何输出数据,但是感知模块302可产生将由多个处理模块处理的存储在多个数据结构中的数据。类似地,具有“LIDAR”主题的数据结构配置成存储由LIDAR装置215产生的传感器数据。
在一个实施方式中,数据结构801至803中的每个包括多个事件条目(例如,消息条目),并且每个事件条目存储特定事件的事件数据(例如,消息)。数据结构801至803中的每个可以以多种格式实施,诸如,例如,数组、环形缓冲器、链表、表格、数据库等。在本实施方式中,数据结构801至803实施为链表数据结构。链表是称为节点的数据元素的线性集合,每个节点借助于指针指向下一节点。这是由共同表示序列的一组节点组成的数据结构。在最简单的形式下,每个节点由数据和到序列中的下一节点的引用(即,链接)组成。链表结构允许在迭代期间在序列中的任何位置处有效地插入或移除元素。
根据一个实施方式,当传感器触发IO事件时,任务调度器511基于IO事件确定与作为发布者的传感器相关的主题。IO事件可包括作为标识传感器的主题的标识符。基于传感器的标识符,识别数据结构801至803中的一个。然后,任务调度器511将事件数据推入到数据结构的头部中。应注意,事件可通过IO处理器602缓存并存储在事件队列601中,并且任务调度器511被通知或周期性地“走”遍事件队列601中的未决事件。响应于事件队列601中的未决事件,任务调度器511从事件队列601检索事件数据并且将事件数据插入到数据结构的头部中。例如,假定数据结构801配置成存储由LIDAR装置215产生的传感器数据。响应于由LIDAR装置215触发的IO事件,任务调度器511从事件队列601的头部检索事件及其事件数据。基于检索到的事件,任务调度器511识别与LIDAR装置215相关的数据结构801。然后,任务调度器511将事件数据插入到数据结构801的头部中。
在一个实施方式中,任务调度器511使用散列表或散列数据结构810作为快速查找机制以确定数据结构801至803中的哪个与特定事件相关。响应于特定事件,任务调度器511获得与所述事件相关的主题,其中,主题唯一地表示事件/消息发布者或制造者(例如,LIDAR装置215、感知模块302)。任务调度器511使用散列表810散列主题以产生识别数据结构801至803中的一个的数据结构标识符。散列操作的输出可包括指向存储所识别的数据结构的存储位置的指针。指针可为指向数据结构的头部的存储器指针。然后,任务调度器511将事件的事件数据插入到数据结构的头部上。
根据一个实施方式,响应于可从事件队列601的头部检索的定时器事件,任务调度器511确定定时器事件的所有者。事件的所有者指的是订阅由事件/消息发布者发布的特定主题的事件/消息订阅者。事件的所有者可以是处理由传感器系统115中的任何传感器产生的传感器数据的处理模块中的任何一个,诸如,例如,自动驾驶模块501、用户显示系统502或监视器516。此外,任务调度器511确定定时器事件所需的输入数据。例如,事件的事件标识符可包括识别事件的所有者和事件所需的输入数据两者的信息。
在一个实施方式中,任务调度器511使用散列表810散列事件标识符以识别存储输入数据的数据结构。散列操作的输出揭示了输入数据(诸如,指向数据结构的头部的指针)的数据结构。然后,任务调度器511启动或唤醒工作线程以执行与定时器事件所有者相关的处理模块并将存储输入数据的数据结构的指针传递到工作线程。工作线程可以经由指针获得输入数据,而不必从全局存储器512复制输入数据,复制数据是耗时且消耗资源的。应注意,事件可识别来自多个数据结构的输入数据。在这种场景中,然后,将数据结构的指针传递到工作线程。
例如,响应于定时器事件,任务调度器511确定定时器事件为感知模块302触发,并且定时器事件需要由LIDAR装置215产生的传感器数据(例如,点云数据)。任务调度器511启动或唤醒执行感知模块302的可执行代码的工作线程,并且将存储LIDAR装置215的传感器数据的数据结构的指针(在以上示例中,数据结构801的指针)传递到工作线程。
在一个实施方式中,工作线程从数据结构的头部检索输入数据(例如,IO事件数据),其中,存储在数据结构的头部处的数据是通过IO事件产生的最新的数据。其背后的基本原理在于,自动驾驶模块对处理最新的数据更感兴趣,因为最新的数据反映了ADV的最新的驾驶环境。基于最新的数据作出的自动驾驶决策将更准确。因此,存储在数据结构801至803中的数据以类似于堆栈的类似先进后出(FILO)的方式进行处理。
在一个实施方式中,作为事件/消息订阅者的每个部件对于不属于所述部件的数据结构仅可以具有只读权限。部件可以将数据(例如,输出数据)写入其相关的一个或多个数据结构中,但是如上所述,这必须经过任务调度器511。还应注意,当处理模块响应于定时器事件处理事件数据时,处理模块不从存储输入数据的数据结构中移除任何数据。更确切地说,每个数据结构中的较旧的数据将由归档模块517归档到与永久性存储装置中特定主题对应的事件日志(例如,永久性存储装置352的事件日志503)。
在一个实施方式中,归档模块517确定特定事件条目是否比距当前时间的预定的时间段更旧。如果存在比预定时间段更旧的事件,则归档模块517将事件条目从相应的数据结构中移除并且将该事件条目存储在与数据结构对应的事件日志中。在一个实施方式中,每个事件条目包括表示产生事件的时间的时间戳和事件的数据。通过将事件的时间戳与当前系统时间进行比较,归档模块517可以确定是否应该归档事件条目。在一个实施方式中,归档模块517周期性地扫描所有的数据结构801至803。例如,定时器逻辑可以周期性地发布归档事件,并且响应于归档事件,任务调度器511在工作线程中调用归档模块517并且将数据结构的指针传递到归档模块517以使归档模块517能够扫描数据结构。因此,归档模块总是从数据结构的尾部移除和归档事件,例如,以FIFO的顺序。另一方面,处理模块以FILO顺序处理数据结构的数据。
图9是示出根据一个实施方式的操作自动驾驶车辆的过程的流程图。过程900可由处理逻辑执行,处理逻辑可包括软件、硬件或其组合。例如,过程900可由任务调度器511执行。参考图9,在操作901中,处理逻辑使用单个全局存储器来存储事件的事件数据。事件可包括用于ADV的传感器的IO事件和/或处理模块的定时器事件。在操作902中,处理逻辑使用负责管理存储在全局存储器中的数据的、以单线程执行的任务调度器。在操作903中,响应于表示从第一处理模块(例如,传感器或第一自动驾驶模块)接收到第一结果的第一事件,任务调度器识别第一结果并将第一结果存储到全局存储器中的相应的第一数据结构。在操作904中,响应于来自第二处理模块(例如,第二自动驾驶模块)的处理第一结果的请求(例如,经由定时器事件),任务调度器调用第二处理模块并将第一数据结构的指针传递到第二处理模块以允许第二处理模块处理存储在其中的数据。在操作905中,响应于来自第二处理模块的第二结果,任务调度器将第二结果存储在全局存储器的第二数据结构中。第二数据结构专门配置成存储由第二处理模块产生的输出数据。
图10是示出根据另一实施方式的操作自动驾驶车辆的过程的流程图。过程1000可由处理逻辑执行,处理逻辑可包括软件、硬件或其组合。例如,过程1000可由任务调度器511执行。参考图10,在操作1001中,处理逻辑使用事件队列来存储由各种传感器产生的IO事件以及为自动驾驶模块产生的定时器事件。在操作1002中,对于存储在事件队列中的每个事件,处理逻辑基于与事件相关的主题确定事件的类型。在操作1003中,响应于确定事件是IO事件,处理逻辑将与IO事件相关的事件数据存储在全局存储器中。在操作1004中,响应于确定事件是定时器事件,处理逻辑启动或唤醒与定时器事件相关的工作线程,其中,工作线程执行自动驾驶模块中触发定时器事件的一个自动驾驶模块。在操作1005中,处理逻辑将从全局存储器检索的输入数据提供至工作线程以允许工作线程处理输入数据。
图11是示出根据另一实施方式的操作自动驾驶车辆的过程的流程图。过程1100可由处理逻辑执行,处理逻辑可包括软件、硬件或其组合。例如,过程1100可由任务调度器511执行。参考图11,在操作1101中,处理逻辑使用全局存储器来存储多个数据结构。数据结构中的每个包括多个条目,并且每个条目以时间顺序存储特定事件的数据。数据结构中的每个与ADV的传感器中的一个或自动驾驶模块中的一个相关联。在操作1102中,处理逻辑接收与第一自动驾驶模块相关的第一事件,其中,第一事件包含标识第一主题的第一主题ID。在操作1103中,响应于第一事件,处理逻辑使用预定的散列表散列第一主题ID以识别与第一事件对应的一个或多个第一数据结构。在操作1104中,处理逻辑将第一数据结构的头部的指针传递到第一自动驾驶模块以允许第一自动驾驶模块处理第一事件的数据。
应注意,如上文示出和描述的部件中的一些或全部可以以软件、硬件或其组合实施。例如,此类部件可以实施为安装并存储在永久性存储装置中的软件,所述软件可以通过处理器(未示出)加载在存储器中并在存储器中执行以实施本申请所述的过程或操作。替代地,此类部件可以实施为编程或嵌入到专用硬件(诸如,集成电路(例如,专用IC或ASIC)、数字信号处理器(DSP)或现场可编程门阵列(FPGA))中的可执行代码,所述可执行代码可以由应用经由相应驱动程序和/或操作系统来访问。此外,此类部件可以实施为处理器或处理器内核中的特定硬件逻辑,作为可由软件部件通过一个或多个特定指令访问的指令集的一部分。
图12是示出可以与本公开的一个实施方式一起使用的数据处理系统的示例的框图。例如,系统1500可以表示以上所述的执行上述过程或方法中的任一个的任何数据处理系统,例如,图1的感知与规划系统110或者服务器103至104中的任一个。系统1500可以包括许多不同的部件。这些部件可以实施为集成电路(IC)、集成电路的部分、分立的电子装置或适用于电路板(诸如,计算机系统的主板或插入卡)的其它模块或者实施为以其它方式并入计算机系统的机架内的部件。
还应注意,系统1500旨在示出计算机系统的许多部件的高阶视图。然而,应当理解的是,某些实施例中可以具有附加的部件,此外,其它实施例中可以具有所示部件的不同布置。系统1500可以表示台式计算机、膝上型计算机、平板计算机、服务器、移动电话、媒体播放器、个人数字助理(PDA)、智能手表、个人通信器、游戏装置、网络路由器或集线器、无线接入点(AP)或中继器、机顶盒或其组合。此外,虽然仅示出了单个机器或系统,但是术语“机器”或“系统”还应当被理解为包括单独地或共同地执行一个(或多个)指令集以执行本文所讨论的任何一种或多种方法的机器或系统的任何集合。
在一个实施方式中,系统1500包括通过总线或互连件1510连接的处理器1501、存储器1503以及装置1505至1508。处理器1501可以表示其中包括单个处理器内核或多个处理器内核的单个处理器或多个处理器。处理器1501可以表示一个或多个通用处理器,诸如,微处理器、中央处理单元(CPU)等。更具体地,处理器1501可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其它指令集的处理器、或实施指令集组合的处理器。处理器1501还可以是一个或多个专用处理器,诸如,专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、通信处理器、加密处理器、协处理器、嵌入式处理器、或者能够处理指令的任何其它类型的逻辑。
处理器1501(其可以是低功率多核处理器套接口,诸如超低电压处理器)可以充当用于与所述系统的各种部件通信的主处理单元和中央集线器。这种处理器可以实施为片上系统(SoC)。处理器1501被配置成执行用于执行本文所讨论的操作和步骤的指令。系统1500还可以包括与可选的图形子系统1504通信的图形接口,图形子系统1504可以包括显示控制器、图形处理器和/或显示装置。
处理器1501可以与存储器1503通信,存储器1503在一个实施方式中可以经由多个存储器装置实施以提供给定量的系统存储。存储器1503可以包括一个或多个易失性存储(或存储器)装置,诸如,随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或者其它类型的存储装置。存储器1503可以存储包括由处理器1501或任何其它装置执行的指令序列的信息。例如,各种操作系统、装置驱动程序、固件(例如,输入输出基本系统或BIOS)和/或应用的可执行代码和/或数据可以加载到存储器1503中并由处理器1501执行。操作系统可以是任何类型的操作系统,例如,机器人操作系统(ROS)、来自公司的操作系统、来自苹果公司的Mac来自公司的LINUX、UNIX,或者其它实时或嵌入式操作系统。
系统1500还可以包括IO装置,诸如装置1505至1508,包括网络接口装置1505、可选的输入装置1506,以及其它可选的IO装置1507。网络接口装置1505可以包括无线收发器和/或网络接口卡(NIC)。所述无线收发器可以是WiFi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(GPS)收发器)或其它射频(RF)收发器或者它们的组合。NIC可以是以太网卡。
输入装置1506可以包括鼠标、触摸板、触敏屏幕(其可以与显示装置1504集成在一起)、指针装置(诸如,手写笔)和/或键盘(例如,物理键盘或作为触敏屏幕的一部分显示的虚拟键盘)。例如,输入装置1506可以包括联接到触摸屏的触摸屏控制器。触摸屏和触摸屏控制器例如可以使用多种触敏技术(包括但不限于电容、电阻、红外和表面声波技术)中的任一种以及其它接近传感器阵列或用于确定与触摸屏接触的一个或多个点的其它元件来检测其接触和移动或间断。
IO装置1507可以包括音频装置。音频装置可以包括扬声器和/或麦克风,以促进支持语音的功能,诸如语音识别、语音复制、数字记录和/或电话功能。其它IO装置1507还可以包括通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如,PCI-PCI桥)、传感器(例如,诸如加速度计的运动传感器、陀螺仪、磁强计、光传感器、罗盘、接近传感器等)或者它们的组合。装置1507还可以包括成像处理子系统(例如,摄像机),所述成像处理子系统可以包括用于促进摄像机功能(诸如,记录照片和视频片段)的光学传感器,诸如电荷耦合装置(CCD)或互补金属氧化物半导体(CMOS)光学传感器。根据系统1500的具体配置或设计,某些传感器可以经由传感器集线器(未示出)联接到互连件1510,而诸如键盘或热传感器的其它装置可以由嵌入式控制器(未示出)控制。
为了提供对诸如数据、应用、一个或多个操作系统等信息的永久性存储,大容量存储设备(未示出)也可以联接到处理器1501。在各种实施方式中,为了实现更薄且更轻的系统设计并且改进系统响应性,这种大容量存储设备可以经由固态装置(SSD)来实施。然而,在其它实施方式中,大容量存储设备可以主要使用硬盘驱动器(HDD)来实施,其中较小量的SSD存储设备充当SSD高速缓存以在断电事件期间实现上下文状态以及其它此类信息的非易失性存储,从而使得在系统活动重新启动时能够实现快速通电。另外,闪存装置可以例如经由串行外围接口(SPI)联接到处理器1501。这种闪存装置可以提供系统软件的非易失性存储,所述系统软件包括所述系统的BIOS以及其它固件。
存储装置1508可以包括计算机可访问存储介质1509(也被称为机器可读存储介质或计算机可读介质),其上存储有实施本文所述的任何一种或多种方法或功能的一个或多个指令集或软件(例如,模块、单元和/或逻辑1528)。处理模块/单元/逻辑1528可以表示上述部件中的任一个,例如规划模块305、控制模块306或任务调度器511。处理模块/单元/逻辑1528还可以在其由数据处理系统1500、存储器1503和处理器1501执行期间完全地或至少部分地驻留在存储器1503内和/或处理器1501内,数据处理系统1500、存储器1503和处理器1501也构成机器可访问存储介质。处理模块/单元/逻辑1528还可以通过网络经由网络接口装置1505进行传输或接收。
计算机可读存储介质1509也可以用来永久性地存储以上描述的一些软件功能。虽然计算机可读存储介质1509在示例性实施方式中被示为单个介质,但是术语“计算机可读存储介质”应当被认为包括存储所述一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被认为包括能够存储或编码指令集的任何介质,所述指令集用于由机器执行并且使得所述机器执行本公开的任何一种或多种方法。因此,术语“计算机可读存储介质”应当被认为包括但不限于固态存储器以及光学介质和磁性介质,或者任何其它非暂时性机器可读介质。
本文所述的处理模块/单元/逻辑1528、部件以及其它特征可以实施为分立的硬件部件或集成在硬件部件(诸如,ASICS、FPGA、DSP或类似装置)的功能中。此外,处理模块/单元/逻辑1528可以实施为硬件装置内的固件或功能电路。此外,处理模块/单元/逻辑1528可以以硬件装置和软件部件的任何组合来实施。
应注意,虽然系统1500被示出为具有数据处理系统的多种部件,但是并不旨在表示使部件互连的任何特定架构或方式;因为此类细节和本公开的实施方式没有密切关系。还应当认识到,具有更少部件或可能具有更多部件的网络计算机、手持计算机、移动电话、服务器和/或其它数据处理系统也可以与本公开的实施方式一起使用。
前述详细描述中的一些部分已经根据在计算机存储器内对数据位的操作的算法和符号表示而呈现。这些算法描述和表示是数据处理领域中的技术人员所使用的方式,以将他们的工作实质最有效地传达给本领域中的其他技术人员。本文中,算法通常被认为是导致所期望结果的自洽操作序列。这些操作是指需要对物理量进行物理操控的操作。
然而,应当牢记,所有这些和类似的术语均旨在与适当的物理量关联,并且仅仅是应用于这些量的方便标记。除非在以上讨论中以其它方式明确地指出,否则应当了解,在整个说明书中,利用术语(诸如所附权利要求书中所阐述的术语)进行的讨论是指计算机系统或类似电子计算装置的动作和处理,所述计算机系统或电子计算装置操控计算机系统的寄存器和存储器内的表示为物理(电子)量的数据,并将所述数据变换成计算机系统存储器或寄存器或者其它此类信息存储设备、传输或显示装置内类似地表示为物理量的其它数据。
本公开的实施方式还涉及用于执行本文中的操作的设备。这种计算机程序被存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存存储器装置)。
前述附图中所描绘的过程或方法可以由处理逻辑来执行,所述处理逻辑包括硬件(例如,电路、专用逻辑等)、软件(例如,实施在非暂时性计算机可读介质上)或两者的组合。尽管所述过程或方法在上文是依据一些顺序操作来描述的,但是应当了解,所述操作中的一些可以按不同的顺序执行。此外,一些操作可以并行地执行而不是顺序地执行。
本公开的实施方式并未参考任何特定的编程语言进行描述。应认识到,可以使用多种编程语言来实施如本文描述的本公开的实施方式的教导。
在以上的说明书中,已经参考本公开的具体示例性实施方式对本公开的实施方式进行了描述。将显而易见的是,在不脱离所附权利要求书中阐述的本公开的更宽泛精神和范围的情况下,可以对本公开作出各种修改。因此,应当在说明性意义而不是限制性意义上来理解本说明书和附图。

Claims (21)

1.一种用于操作自动驾驶车辆的计算机实施的方法,所述方法包括:
使用事件队列来存储从多个传感器产生的输入和输出事件以及为多个自动驾驶模块产生的定时器事件;以及
针对存储在所述事件队列中的事件中的每个,迭代地执行:
响应于确定所述事件是输入和输出事件,将与所述输入和输出事件相关联的数据存储在全局存储器中,以及
响应于确定所述事件是定时器事件,
启动与所述定时器事件相关联的工作线程,所述工作线程执行所述自动驾驶模块中的触发所述定时器事件的一个自动驾驶模块,以及
将从所述全局存储器检索的输入数据提供至所述工作线程以允许所述工作线程处理所述输入数据。
2.根据权利要求1所述的方法,其中,启动与所述定时器事件相关联的工作线程包括:
基于第一定时器事件识别第一自动驾驶模块;以及
启动第一工作线程来执行所述第一自动驾驶模块。
3.根据权利要求2所述的方法,还包括:
识别存储在所述全局存储器中的与所述第一定时器事件相关联的第一输入数据;以及
将所述第一输入数据提供至所述第一自动驾驶模块以允许所述第一自动驾驶模块处理所述第一输入数据。
4.根据权利要求3所述的方法,其中,所述第一输入数据从存储在所述全局存储器中的第一数据结构中被检索,其中,所述第一数据结构由所述第一定时器事件指定。
5.根据权利要求3所述的方法,其中,将所述第一输入数据提供至所述第一自动驾驶模块包括将所述全局存储器的存储位置的储存器指针传递到所述第一工作线程,而不复制所述第一输入数据。
6.根据权利要求3所述的方法,还包括:
从所述第一工作线程接收表示已经处理所述第一输入数据的通知;
响应于所述通知,从所述通知提取第一输出数据;以及
将所述第一输出数据存储在所述全局存储器中。
7.根据权利要求6所述的方法,其中,
所述第一输出数据存储在所述全局存储器的第一数据结构中,以及
其中,所述第一数据结构与所述第一自动驾驶模块相关联。
8.一种存储有指令的非暂时性机器可读介质,所述指令在由处理器执行时致使所述处理器执行操作,所述操作包括:
使用事件队列来存储从多个传感器产生的输入和输出事件以及为多个自动驾驶模块产生的定时器事件;以及
针对存储在所述事件队列中的事件中的每个,迭代地执行:
响应于确定所述事件是输入和输出事件,将与所述输入和输出事件相关联的数据存储在全局存储器中,以及
响应于确定所述事件是定时器事件,
启动与所述定时器事件相关联的工作线程,所述工作线程执行所述自动驾驶模块中的触发所述定时器事件的一个自动驾驶模块,以及
将从所述全局存储器检索的输入数据提供至所述工作线程以允许所述工作线程处理所述输入数据。
9.根据权利要求8所述的机器可读介质,其中,启动与所述定时器事件相关联的工作线程包括:
基于第一定时器事件识别第一自动驾驶模块;以及
启动第一工作线程来执行所述第一自动驾驶模块。
10.根据权利要求9所述的机器可读介质,其中,所述操作还包括:
识别存储在所述全局存储器中的与所述第一定时器事件相关联的第一输入数据;以及
将所述第一输入数据提供至所述第一自动驾驶模块以允许所述第一自动驾驶模块处理所述第一输入数据。
11.根据权利要求10所述的机器可读介质,其中,所述第一输入数据从存储在所述全局存储器中的第一数据结构中被检索,其中,所述第一数据结构由所述第一定时器事件指定。
12.根据权利要求10所述的机器可读介质,其中,将所述第一输入数据提供至所述第一自动驾驶模块包括将所述全局存储器的存储位置的储存器指针传递到所述第一工作线程,而不复制所述第一输入数据。
13.根据权利要求10所述的机器可读介质,其中,所述操作还包括:
从所述第一工作线程接收表示已经处理所述第一输入数据的通知;
响应于所述通知,从所述通知提取第一输出数据;以及
将所述第一输出数据存储在所述全局存储器中。
14.根据权利要求13所述的机器可读介质,其中,
所述第一输出数据存储在所述全局存储器的第一数据结构中,以及
其中,所述第一数据结构与所述第一自动驾驶模块相关联。
15.一种数据处理系统,包括:
处理器;以及
存储器,联接到所述处理器以存储指令,所述指令在由所述处理器执行时致使所述处理器执行操作,所述操作包括:
使用事件队列来存储从多个传感器产生的输入和输出事件以及为多个自动驾驶模块产生的定时器事件,以及
针对存储在所述事件队列中的事件中的每个,迭代地执行:
响应于确定所述事件是输入和输出事件,将与所述输入和输出事件相关联的数据存储在全局存储器中,以及
响应于确定所述事件是定时器事件,
启动与所述定时器事件相关联的工作线程,所述工作线程执行所述自动驾驶模块中的触发所述定时器事件的一个自动驾驶模块,以及
将从所述全局存储器检索的输入数据提供至所述工作线程以允许所述工作线程处理所述输入数据。
16.根据权利要求15所述的系统,其中,启动与所述定时器事件相关联的工作线程包括:
基于第一定时器事件识别第一自动驾驶模块;以及
启动第一工作线程来执行所述第一自动驾驶模块。
17.根据权利要求16所述的系统,其中,所述操作还包括:
识别存储在所述全局存储器中的与所述第一定时器事件相关联的第一输入数据;以及
将所述第一输入数据提供至所述第一自动驾驶模块以允许所述第一自动驾驶模块处理所述第一输入数据。
18.根据权利要求17所述的系统,其中,所述第一输入数据从存储在所述全局存储器中的第一数据结构中被检索,其中,所述第一数据结构由所述第一定时器事件指定。
19.根据权利要求17所述的系统,其中,将所述第一输入数据提供至所述第一自动驾驶模块包括将所述全局存储器的存储位置的储存器指针移到所述第一工作线程,而不复制所述第一输入数据。
20.根据权利要求17所述的系统,其中,所述操作还包括:
从所述第一工作线程接收表示已经处理所述第一输入数据的通知;
响应于所述通知,从所述通知提取第一输出数据;以及
将所述第一输出数据存储在所述全局存储器中。
21.根据权利要求20所述的系统,其中,
所述第一输出数据存储在所述全局存储器的第一数据结构中,以及
其中,所述第一数据结构与所述第一自动驾驶模块相关联。
CN201810686509.4A 2017-07-03 2018-06-28 操作自动驾驶车辆的使用事件循环的集中调度系统 Active CN109213143B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/640,842 US10732634B2 (en) 2017-07-03 2017-07-03 Centralized scheduling system using event loop for operating autonomous driving vehicles
US15/640,842 2017-07-03

Publications (2)

Publication Number Publication Date
CN109213143A true CN109213143A (zh) 2019-01-15
CN109213143B CN109213143B (zh) 2022-08-19

Family

ID=64738218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810686509.4A Active CN109213143B (zh) 2017-07-03 2018-06-28 操作自动驾驶车辆的使用事件循环的集中调度系统

Country Status (2)

Country Link
US (1) US10732634B2 (zh)
CN (1) CN109213143B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597482A (zh) * 2019-08-30 2019-12-20 四川腾盾科技有限公司 一种用于串口在fifo中查找有效数据包的方法
CN111722944A (zh) * 2020-06-15 2020-09-29 哈工大机器人(合肥)国际创新研究院 一种基于nio的airt-ros通信方法及系统
WO2022104747A1 (zh) * 2020-11-20 2022-05-27 华为技术有限公司 一种访问io设备的方法及装置
WO2022141297A1 (zh) * 2020-12-30 2022-07-07 华为技术有限公司 事件处理方法和装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10710602B2 (en) * 2017-10-06 2020-07-14 Uatc, Llc Systems and methods for a vehicle controller safety monitor
US11005649B2 (en) * 2018-04-27 2021-05-11 Tesla, Inc. Autonomous driving controller encrypted communications
US11062405B2 (en) * 2019-01-31 2021-07-13 Toyota Motor Engineering & Manufacturing North America, Inc. Dynamic ordering system
CN109872069A (zh) * 2019-02-20 2019-06-11 百度在线网络技术(北京)有限公司 车辆性能评价方法、装置和终端
US11269077B2 (en) * 2019-06-28 2022-03-08 Baidu Usa Llc Flexible test board to improve sensor i/o coverage for autonomous driving platform
US11016804B2 (en) 2019-08-02 2021-05-25 Argo AI, LLC Ahead of time scheduling process for autonomous vehicles
US11423162B2 (en) * 2020-03-27 2022-08-23 Intel Corporation Systems and methods for message assurance in vehicle systems
SE544298C2 (en) * 2020-04-14 2022-03-29 Husqvarna Ab Robotic work tool system and method for defining a working area
TWI760805B (zh) * 2020-07-31 2022-04-11 廣達電腦股份有限公司 具有雙重安全啟動之自動駕駛系統
CN112596818B (zh) * 2020-12-30 2023-12-05 上海众源网络有限公司 一种应用程序控制方法、系统及装置
CN117311912B (zh) * 2023-11-30 2024-02-02 成都融见软件科技有限公司 一种基于交互调试的数据交互方法、存储介质及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938708A (en) * 1997-07-03 1999-08-17 Trw Inc. Vehicle computer system having a non-interrupt cooperative multi-tasking kernel and a method of controlling a plurality of vehicle processes
US20020133325A1 (en) * 2001-02-09 2002-09-19 Hoare Raymond R. Discrete event simulator
CN1589431A (zh) * 2001-11-15 2005-03-02 英特尔公司 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法和系统
KR20050072978A (ko) * 2004-01-08 2005-07-13 주식회사 팬택 이동통신 단말기에서의 오티에이에스피 진행 및 수행 결과출력 방법
CN101777062A (zh) * 2008-12-17 2010-07-14 赛门铁克公司 场境感知的实时计算机保护系统和方法
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化
US20120254876A1 (en) * 2011-03-31 2012-10-04 Honeywell International Inc. Systems and methods for coordinating computing functions to accomplish a task
CN103440171A (zh) * 2013-08-25 2013-12-11 浙江大学 一种构件化硬件实时操作系统的实现方法
US20150095190A1 (en) * 2013-10-01 2015-04-02 Visa International Service Association Automobile Mobile-Interaction Platform Apparatuses, Methods and Systems
CN105094767A (zh) * 2014-05-06 2015-11-25 华为技术有限公司 自动驾驶车辆调度方法、车辆调度服务器及自动驾驶车辆

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7017162B2 (en) 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7962707B2 (en) 2005-07-06 2011-06-14 Honeywell International Inc. Apparatus and method for deterministic garbage collection of a heap memory
US8245239B2 (en) 2005-07-06 2012-08-14 Honeywell International Inc. Deterministic runtime execution environment and method
GB2443277B (en) 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8385971B2 (en) 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
US8126642B2 (en) 2008-10-24 2012-02-28 Gray & Company, Inc. Control and systems for autonomously driven vehicles
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US8893009B2 (en) 2009-01-28 2014-11-18 Headwater Partners I Llc End user device that secures an association of application to service policy with an application certificate check
US10324598B2 (en) 2009-12-18 2019-06-18 Graphika, Inc. System and method for a search engine content filter
KR101918104B1 (ko) 2010-08-03 2018-11-14 포리 오토메이션, 인코포레이티드 무인운반차량(agv)과 함께 사용하기 위한 센서 시스템 및 방법
US20130232402A1 (en) * 2012-03-01 2013-09-05 Huawei Technologies Co., Ltd. Method for Processing Sensor Data and Computing Node
WO2014042976A2 (en) 2012-09-15 2014-03-20 Numbergun Llc, A Utah Limited Liability Company Flexible high-speed generation and formatting of application-specified strings
US9141823B2 (en) 2013-03-15 2015-09-22 Veridicom, Sa De Cv Abstraction layer for default encryption with orthogonal encryption logic session object; and automated authentication, with a method for online litigation
US10015238B2 (en) 2015-03-31 2018-07-03 International Business Machines Corporation Command processing in distributed computing systems
US9689690B2 (en) 2015-07-13 2017-06-27 Here Global B.V. Indexing routes using similarity hashing
US10073965B2 (en) 2015-12-15 2018-09-11 Nagravision S.A. Methods and systems for validating an autonomous system that includes a dynamic-code module and a static-code module
US10315566B2 (en) * 2016-03-07 2019-06-11 Lg Electronics Inc. Vehicle control device mounted on vehicle and method for controlling the vehicle
US10753763B2 (en) 2017-04-10 2020-08-25 Chian Chiu Li Autonomous driving under user instructions
US10496362B2 (en) 2017-05-20 2019-12-03 Chian Chiu Li Autonomous driving under user instructions

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938708A (en) * 1997-07-03 1999-08-17 Trw Inc. Vehicle computer system having a non-interrupt cooperative multi-tasking kernel and a method of controlling a plurality of vehicle processes
US20020133325A1 (en) * 2001-02-09 2002-09-19 Hoare Raymond R. Discrete event simulator
CN1589431A (zh) * 2001-11-15 2005-03-02 英特尔公司 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法和系统
KR20050072978A (ko) * 2004-01-08 2005-07-13 주식회사 팬택 이동통신 단말기에서의 오티에이에스피 진행 및 수행 결과출력 방법
CN101777062A (zh) * 2008-12-17 2010-07-14 赛门铁克公司 场境感知的实时计算机保护系统和方法
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化
US20120254876A1 (en) * 2011-03-31 2012-10-04 Honeywell International Inc. Systems and methods for coordinating computing functions to accomplish a task
CN103440171A (zh) * 2013-08-25 2013-12-11 浙江大学 一种构件化硬件实时操作系统的实现方法
US20150095190A1 (en) * 2013-10-01 2015-04-02 Visa International Service Association Automobile Mobile-Interaction Platform Apparatuses, Methods and Systems
CN105094767A (zh) * 2014-05-06 2015-11-25 华为技术有限公司 自动驾驶车辆调度方法、车辆调度服务器及自动驾驶车辆

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597482A (zh) * 2019-08-30 2019-12-20 四川腾盾科技有限公司 一种用于串口在fifo中查找有效数据包的方法
CN110597482B (zh) * 2019-08-30 2021-11-16 四川腾盾科技有限公司 一种用于串口在fifo中查找最新有效数据包的方法
CN111722944A (zh) * 2020-06-15 2020-09-29 哈工大机器人(合肥)国际创新研究院 一种基于nio的airt-ros通信方法及系统
CN111722944B (zh) * 2020-06-15 2023-04-18 合肥哈工轩辕智能科技有限公司 一种基于nio的airt-ros通信方法及系统
WO2022104747A1 (zh) * 2020-11-20 2022-05-27 华为技术有限公司 一种访问io设备的方法及装置
WO2022141297A1 (zh) * 2020-12-30 2022-07-07 华为技术有限公司 事件处理方法和装置

Also Published As

Publication number Publication date
US10732634B2 (en) 2020-08-04
US20190004854A1 (en) 2019-01-03
CN109213143B (zh) 2022-08-19

Similar Documents

Publication Publication Date Title
CN109204324A (zh) 用于操作自动驾驶车辆的集中调度系统
CN109213143A (zh) 操作自动驾驶车辆的使用事件循环的集中调度系统
CN109213609A (zh) 操作自动驾驶车辆的使用全局存储器的集中调度系统
JP6738932B2 (ja) シミュレーションプラットフォームに配置された、機械学習モデルを訓練するためのシステム及び方法
EP3643017B1 (en) Structured schema for temporal graph storage and retrieval
CN110345955A (zh) 用于自动驾驶的感知与规划协作框架
CN109429518A (zh) 基于地图图像的自动驾驶交通预测
CN109935077A (zh) 用于为自动驾驶车辆构建车辆与云端实时交通地图的系统
CN110377024A (zh) 用于自动驾驶车辆的自动数据标注
CN110377025A (zh) 用于自动驾驶车辆的传感器聚合框架
CN107864694A (zh) 用于操作无人驾驶车辆的计算节点当中的有效通信
CN110239562A (zh) 自动驾驶车辆的基于周围车辆行为的实时感知调整与驾驶调适
CN109287122A (zh) 基于自动驾驶车辆的控制反馈更新地图的方法和系统
CN108025742A (zh) 使用电极的自动驾驶车辆人类驾驶员接管机制
CN110349416A (zh) 用于自动驾驶车辆(adv)的基于密度的交通灯控制系统
US11550623B2 (en) Distributed system task management using a simulated clock
CN109690512A (zh) 具有触发操作的gpu远程通信
WO2020231480A1 (en) Map updates based on data captured by an autonomous vehicle
CN110389582A (zh) 利用多个线索跟踪对象
US20230096502A1 (en) System task management for computing systems
WO2022067295A1 (en) Architecture for distributed system simulation timing alignment
US11809790B2 (en) Architecture for distributed system simulation timing alignment
US11409927B2 (en) Architecture for configurable distributed system simulation timing
US20220092232A1 (en) Architecture for distributed system simulation with realistic timing
CN113302589A (zh) 协调部件接口控制框架

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant