CN111813594A - 用于自动驾驶车辆的基于硬件的系统的启动失效恢复方案 - Google Patents

用于自动驾驶车辆的基于硬件的系统的启动失效恢复方案 Download PDF

Info

Publication number
CN111813594A
CN111813594A CN201911263268.3A CN201911263268A CN111813594A CN 111813594 A CN111813594 A CN 111813594A CN 201911263268 A CN201911263268 A CN 201911263268A CN 111813594 A CN111813594 A CN 111813594A
Authority
CN
China
Prior art keywords
executable image
partition
flag
partitions
valid
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.)
Pending
Application number
CN201911263268.3A
Other languages
English (en)
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 CN111813594A publication Critical patent/CN111813594A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/0098Details of control systems ensuring comfort, safety or stability not otherwise provided for
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0088Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W2050/0062Adapting control system settings
    • B60W2050/0075Automatic parameter input, automatic initialising or calibrating means
    • B60W2050/0083Setting, resetting, calibration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Automation & Control Theory (AREA)
  • Quality & Reliability (AREA)
  • Mechanical Engineering (AREA)
  • Game Theory and Decision Science (AREA)
  • Human Computer Interaction (AREA)
  • Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Transportation (AREA)
  • Medical Informatics (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Traffic Control Systems (AREA)
  • Navigation (AREA)

Abstract

在一个实施方式中,在自动驾驶车辆中执行安全启动操作的计算机实施的方法包括从存储设备中读取第一标记,其中存储设备包括多个分区和至少第一标记。多个分区包括:包括存储的软件的第一分区,与第一分区相关联的第一标记,其中,第一标记包括唯一标识符和认证码。该方法还包括确定在启动操作期间与第一分区相关联的读取的第一标记是否有效,并且如果读取第一标记确定有效,则执行在第一分区中的存储的软件。

Description

用于自动驾驶车辆的基于硬件的系统的启动失效恢复方案
技术领域
本公开的实施方式总体涉及操作自动驾驶车辆。更具体地,本公开的实施方式涉及自动驾驶车辆的硬件系统的安全启动程序。
背景技术
以自动驾驶模式运行(例如,无人驾驶)的车辆可将乘员、尤其是驾驶员从一些驾驶相关的职责中解放出来。当以自动驾驶模式运行时,车辆可使用车载传感器导航到各个位置,从而允许车辆在最少人机交互的情况下或在没有任何乘客的一些情况下行驶。
自动驾驶车辆中的车载计算机系统包括处理器和由处理器执行的用来操作自动驾驶车辆的软件。这样的计算机系统可以包括基于现场可编程门阵列(FPGA)的传感器或控制单元,该传感器或控制单元启动,并且当传感器或控制单元启动时,它通过安全启动程序。在安全启动程序期间,控制单元需要验证各种存储介质中的启动代码的完整性。
发明内容
在本公开的一方面,提供了执行可执行代码的安全启动操作以操作自动驾驶车辆的计算机实施的方法,包括:
响应于启动操作,从自动驾驶车辆(自动驾驶车辆)的传感器单元的存储装置读取第一标记,所述存储装置包括多个分区,所述分区中的每个均存储固件的可执行映像;
确定所述第一标记是否有效,其中,所述第一标记与在其中存储有第一可执行映像的所述分区中的第一分区相关联;以及
响应于确定所述第一标记有效,执行从所述第一分区检索的所述第一可执行映像,其中,所述第一可执行映像被配置为,当被执行时,处理从安装在所述自动驾驶车辆上的一个或多个传感器获得的传感器数据,所述传感器数据用于在自动驾驶期间感知所述自动驾驶车辆周围的驾驶环境。
在本公开的另一方面,提供了一种存储有指令的非暂时性机器可读介质,所述指令在由处理器执行时致使所述处理器执行操作,所述操作包括:
响应于启动操作,从自动驾驶车辆(自动驾驶车辆)的传感器单元的存储装置读取第一标记,所述存储装置包括多个分区,所述分区中的每个均存储固件的可执行映像;
确定所述第一标记是否有效,其中,所述第一标记与在其中存储有第一可执行映像的所述分区中的第一分区相关联;以及
响应于确定所述第一标记有效,执行从所述第一分区检索的所述第一可执行映像,其中,所述第一可执行映像被配置为,当被执行时,处理从安装在所述自动驾驶车辆上的一个或多个传感器获得的传感器数据,所述传感器数据用于在自动驾驶期间感知所述自动驾驶车辆周围的驾驶环境。
在本公开的又一方面,提供了一种数据处理系统,包括:
处理器;以及
存储器,所述存储器联接至所述处理器,以存储指令,所述指令在由所述处理器执行时致使所述处理器执行操作,所述操作包括:
响应于启动操作,从自动驾驶车辆(自动驾驶车辆)的传感器单元的存储装置读取第一标记,所述存储装置包括多个分区,所述分区中的每个均存储固件的可执行映像;
确定所述第一标记是否有效,其中,所述第一标记与在其中存储有第一可执行映像的所述分区中的第一分区相关联;以及
响应于确定所述第一标记有效,执行从所述第一分区检索的所述第一可执行映像,其中,所述第一可执行映像被配置为,当被执行时,处理从安装在所述自动驾驶车辆上的一个或多个传感器获得的传感器数据,所述传感器数据用于在自动驾驶期间感知所述自动驾驶车辆周围的驾驶环境。
附图说明
本公开的实施方式在附图的各图中以举例而非限制的方式示出,附图中的相同参考标记指示相似元件。
图1是示出根据一个实施方式的网络化系统的框图。
图2是示出根据一个实施方式的自动驾驶车辆的示例的框图。
图3A至图3B是示出根据一个实施方式的与自动驾驶车辆一起使用的感知与规划系统的示例的框图。
图4是根据一个实施方式的联接到各种存储介质和主机CPU的FPGA控制单元的框图。
图5A示出了根据一个实施方式的存储装置中的分区和标记的布局。
图5B示出了根据另一实施方式的存储装置中的分区和标记阵列的布局。
图6示出了根据一个实施方式的标记。
图7是根据一个实施方式在自动驾驶车辆中执行安全启动操作的过程的流程图。
图8是示出根据一个实施方式的数据处理系统的框图。
具体实施方式
将参考以下所讨论的细节来描述本公开的各种实施方式和方面,附图将示出所述各种实施方式。下列描述和附图是本公开的说明,而不应当解释为对本公开进行限制。描述了许多特定细节以提供对本公开的各种实施方式的全面理解。然而,在某些情况下,并未描述众所周知的或常规的细节,以提供对本公开的实施方式的简洁讨论。
本说明书中对“一个实施方式”或“实施方式”的提及意味着结合该实施方式所描述的特定特征、结构或特性可包括在本公开的至少一个实施方式中。短语“在一个实施方式中”在本说明书中各个地方的出现不必全部指同一实施方式。
根据一个实施方式,在自动驾驶车辆中执行安全启动操作的计算机实施的方法包括从存储装置读取第一标记,其中存储装置包括多个分区和至少第一标记。每个分区存储固件的可执行映像和与相应的可执行映像相关联的标记。多个分区包括:包括存储软件的第一分区、与第一分区相关联的第一标记,并且其中,第一标记包括标识相关联的可执行映像的唯一标识符和用于验证相应可执行映像的认证码。该方法还包括确定在启动操作期间与第一分区相关联的读取的第一标记是否有效,并且如果确定第一读取标记有效,则执行从第一分区检索的相应可执行映像。
可执行映像可以是嵌入在传感器单元中的固件(诸如FGPA或ASIC),设计用于处理从安装在自动驾驶车辆上的各种传感器(诸如,LIDAR、RADAR、相机等)获得的传感器数据。可对这些分区的可执行映像进行顺序检查和验证。一旦可执行映像已被确定为有效、经过认证和验证,就可以执行和启动可执行映像。特定分区的一个可执行映像可以作为另一分区的另一可执行映像的备份版本,其中备份版本仅在其主版本未启动时(例如,有效的、经认证的和验证的)执行。可替代地,分区的一个可执行映像可以依赖于另一分区的另一可执行映像,只有当它所依赖的前一可执行映像已成功加载时,才能启动该可执行映像。
图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可包括收发器,所述收发器可操作以提供关于自动驾驶车辆的位置的信息。IMU单元213可基于惯性加速度来感测自动驾驶车辆的位置和定向变化。雷达单元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可上传到自动驾驶车辆上以在自动驾驶期间实时使用。
图3A和图3B是示出根据一个实施方式的与自动驾驶车辆一起使用的感知与规划系统的示例的框图。系统300可实施为图1的自动驾驶车辆101的一部分,包括但不限于感知与规划系统110、控制系统111和传感器系统115。参考图3A至图3B,感知与规划系统110包括但不限于定位模块301、感知模块302、预测模块303、决策模块304、规划模块305、控制模块306和路线安排模块307。
模块301至307中的一些或全部可以以软件、硬件或其组合实施。例如,这些模块可安装在永久性存储装置352中、加载到存储器351中,并且由一个或多个处理器(未示出)执行。应注意,这些模块中的一些或全部可通信地联接到图2的车辆控制系统111的一些或全部模块或者与它们集成在一起。模块301至307中的一些可一起集成为集成模块。
定位模块301确定自动驾驶车辆300的当前位置(例如,利用GPS单元212)以及管理与用户的行程或路线相关的任何数据。定位模块301(又称作为地图与路线模块)管理与用户的行程或路线相关的任何数据。用户可例如经由用户接口登录并且指定行程的起始位置和目的地。定位模块301与自动驾驶车辆300的诸如地图与路线信息311的其它部件通信,以获得行程相关数据。例如,定位模块301可从位置服务器和地图与POI(MPOI)服务器获得位置和路线信息。位置服务器提供位置服务,并且MPOI服务器提供地图服务和某些位置的POI,从而可作为地图与路线信息311的一部分高速缓存。当自动驾驶车辆300沿着路线移动时,定位模块301也可从交通信息系统或服务器获得实时交通信息。
基于由传感器系统115提供的传感器数据和由定位模块301获得的定位信息,感知模块302确定对周围环境的感知。感知信息可表示普通驾驶员在驾驶员正驾驶的车辆周围将感知到的东西。感知可包括例如采用对象形式的车道配置、交通灯信号、另一车辆的相对位置、行人、建筑物、人行横道或其它交通相关标志(例如,停止标志、让行标志)等。车道配置包括描述一个或多个车道的信息,诸如,例如车道的形状(例如,直线或弯曲)、车道的宽度、道路中的车道数量、单向或双向车道、合并或分开车道、出口车道等。
感知模块302可包括计算机视觉系统或计算机视觉系统的功能,以处理并分析由一个或多个摄像机采集的图像,从而识别自动驾驶车辆环境中的对象和/或特征。所述对象可包括交通信号、道路边界、其它车辆、行人和/或障碍物等。计算机视觉系统可使用对象识别算法、视频跟踪以及其它计算机视觉技术。在一些实施方式中,计算机视觉系统可绘制环境地图,跟踪对象,以及估算对象的速度等。感知模块302也可基于由诸如雷达和/或LIDAR的其它传感器提供的其它传感器数据来检测对象。
针对每个对象,预测模块303预测对象在这种情况下将如何表现。预测是基于感知数据执行的,该感知数据在考虑一组地图/路线信息311和交通规则312的时间点感知驾驶环境。例如,如果对象为相反方向上的车辆且当前驾驶环境包括十字路口,则预测模块303将预测车辆是否可能会笔直向前移动或转弯。如果感知数据表明十字路口没有交通灯,则预测模块303可能会预测车辆在进入十字路口之前可能需要完全停车。如果感知数据表明车辆目前处于左转唯一车道或右转唯一车道,则预测模块303可能预测车辆将更可能分别左转或右转。
针对每个对象,决策模块304作出关于如何处置对象的决定。例如,针对特定对象(例如,交叉路线中的另一车辆)以及描述对象的元数据(例如,速度、方向、转弯角度),决策模块304决定如何与所述对象相遇(例如,超车、让行、停止、超过)。决策模块304可根据诸如交通规则或驾驶规则312的规则集来作出此类决定,所述规则集可存储在永久性存储装置352中。
路线安排模块307配置成提供从起始点到目的地点的一个或多个路线或路径。对于从起始位置到目的地位置的给定行程,例如从用户接收的给定行程,路线安排模块307获得路线与地图信息311,并确定从起始位置至到达目的地位置的所有可能路线或路径。路线安排模块307可生成地形图形式的参考线,它确定了从起始位置至到达目的地位置的每个路线。参考线是指不受其它诸如其它车辆、障碍物或交通状况的任何干扰的理想路线或路径。即,如果道路上没有其它车辆、行人或障碍物,则自动驾驶车辆应精确地或紧密地跟随参考线。然后,将地形图提供至决策模块304和/或规划模块305。决策模块304和/或规划模块305检查所有可能的路线,以根据由其它模块提供的其它数据选择和更改最佳路线中的一个,其中,其它数据诸如为来自定位模块301的交通状况、由感知模块302感知到的驾驶环境以及由预测模块303预测的交通状况。根据时间点下的特定驾驶环境,用于控制自动驾驶车辆的实际路径或路线可能接近于或不同于由路线安排模块307提供的参考线。
基于针对所感知到的对象中的每个的决定,规划模块305使用由路线安排模块307提供的参考线作为基础,为自动驾驶车辆规划路径或路线以及驾驶参数(例如,距离、速度和/或转弯角度)。换言之,针对给定的对象,决策模块304决定对该对象做什么,而规划模块305确定如何去做。例如,针对给定的对象,决策模块304可决定超过所述对象,而规划模块305可确定在所述对象的左侧还是右侧超过。规划和控制数据由规划模块305生成,包括描述车辆300在下一移动循环(例如,下一路线/路径段)中将如何移动的信息。例如,规划和控制数据可指示车辆300以30英里每小时(mph)的速度移动10米,随后以25mph的速度变到右侧车道。
基于规划和控制数据,控制模块306根据由规划和控制数据限定的路线或路径通过将适当的命令或信号发送到车辆控制系统111来控制并驾驶自动驾驶车辆。所述规划和控制数据包括足够的信息,以沿着路径或路线在不同的时间点使用适当的车辆设置或驾驶参数(例如,油门、制动、转向命令)将车辆从路线或路径的第一点驾驶到第二点。
在一个实施方式中,规划阶段在多个规划周期(也称作为驾驶周期)中执行,例如,在每个时间间隔为100毫秒(ms)的周期中执行。对于规划周期或驾驶周期中的每一个,将基于规划和控制数据发出一个或多个控制命令。即,对于每100ms,规划模块305规划下一路线段或路径段,例如,包括目标位置和自动驾驶车辆到达目标位置所需要的时间。可替代地,规划模块305还可规定具体的速度、方向和/或转向角等。在一个实施方式中,规划模块305为下一预定时段(诸如,5秒)规划路线段或路径段。对于每个规划周期,规划模块305基于在前一周期中规划的目标位置规划用于当前周期(例如,下一5秒)的目标位置。控制模块306然后基于当前周期的规划和控制数据生成一个或多个控制命令(例如,油门、制动、转向控制命令)。
应注意,决策模块304和规划模块305可集成为集成模块。决策模块304/规划模块305可包括导航系统或导航系统的功能,以确定自动驾驶车辆的驾驶路径。例如,导航系统可确定用于影响自动驾驶车辆沿着以下路径移动的一系列速度和前进方向:所述路径在使自动驾驶车辆沿着通往最终目的地的基于车行道的路径前进的同时,基本上避免感知到的障碍物。目的地可根据经由用户接口系统113进行的用户输入来设定。导航系统可在自动驾驶车辆正在运行的同时动态地更新驾驶路径。导航系统可将来自GPS系统和一个或多个地图的数据合并,以确定用于自动驾驶车辆的驾驶路径。
系统架构可以表示如图3A和3B所示的自动驾驶系统的系统架构。系统架构自上而下包括,但不限于,应用层、规划和控制(PNC)层、感知层、驱动器层、固件层和硬件层。应用层可以包括与自动驾驶车辆的用户或乘客交互的用户接口或配置应用,例如,与用户接口系统113相关联的功能。PNC层可以包括至少规划模块305和控制模块306的功能。感知层可以包括至少感知模块302的功能。在一个实施方式中,存在包括预测模块303和/或决策模块304的功能的附加层。可替代地,这些功能可以包括在PNC层和/或感知层中。系统架构还包括驱动器层、固件层和硬件层。固件层可表示至少传感器系统115的功能,其可以以现场可编程门阵列(FPGA)或专用集成电路(ASIC)的形式实现。硬件层可以表示自动驾驶车辆的硬件,诸如控制系统111。应用层、规划和控制层以及感知层可以经由设备驱动器层与固件层和硬件层通信。
参照图4,示出了现场可编程门阵列(FPGA)400,其经由处理器402连接到各种存储设备,诸如存储设备#0(404)、存储设备#1(406)和存储设备#2(408)。可将FPGA 400实现为经由总线(例如,PCIe总线)联接在传感器和主机系统110之间的传感器单元的一部分。存储设备可以是存储启动图像的任何设备,例如闪存或安全数字(SD)卡。存储设备可以在传感器单元中实现,诸如固态硬盘驱动器或闪存设备。图中还示出了FPGA 400被连接到主机系统110和传感器410。主机系统110表示如上所述的规划和控制系统,其可以包括如图3A和3B所示模块中的至少一些。为了简单起见,只有处理器402被示出包括在FPGA 400中。本领域的普通技术人员将理解,在FPGA 400中包括其他合适的组件,例如连接到处理器402的存储器、连接到GPS消息生成器的GPS消息解码器、以及连接到主机系统110及消息解码器和GPS消息生成器的配置器。
FPGA 400可以表示传感器单元。处理器402可以表示部署在传感器单元内的一个或多个传感器数据处理模块,以处理从传感器接收的传感器数据,并处理从主机110接收的指令来控制传感器。每种类型的传感器(例如,LIDAR、RADAR和摄像机)都可以与传感器数据处理模块相关联,该传感器数据处理模块被配置为处理相应类型的传感器数据。传感器可以由各种不同的传感器提供者或制造商提供,并且相应的传感器数据处理模块被配置为处理与传感器相关的任何专有数据格式和/或通信协议。
FPGA 400外部的外部GPS接收器也可以适当地连接到GPS消息解码器,并且GPS消息生成器被配置成生成GPS消息并将其输出到自动驾驶车辆中的其他传感器。FPGA 400可以是传感器单元的一部分。传感器单元可以以FPGA设备或ASIC设备的形式实现。传感器单元(例如,由FPGA 400表示)包括,除了别的之外,一个或多个传感器数据处理模块(也简称为传感器处理模块)、数据传输模块和传感器控制模块或逻辑。这些模块可以经由传感器接口与传感器410通信,并且经由主机接口与主机系统110通信。可选地,可以使用内部或外部缓冲器缓冲数据以进行处理。
对于接收路径或上游方向,传感器处理模块被配置为经由传感器接口从传感器接收传感器数据,并处理传感器数据(例如,格式转换、错误检查),传感器数据可以暂时存储在缓冲器中。数据传输模块被配置为使用与主机接口兼容的通信协议将经处理的数据传输到主机系统110。类似地,对于发送路径或下游方向,数据传输模块被配置成从主机系统110接收数据或命令。然后,数据由传感器处理模块处理为与相应传感器兼容的格式。然后将经处理的数据发送到传感器。
传感器控制模块或逻辑被配置成响应于经由主机接口从主机系统(例如,感知模块302)接收的命令来控制传感器的某些操作,诸如,例如,捕获传感器数据的激活的定时。主机系统110可以配置传感器410以协作和/或同步的方式捕获传感器数据,使得传感器数据可以被用于感知在任何时间点在车辆周围的驾驶环境。
传感器接口可包括以下中的一个或多个:以太网、USB(通用串行总线)、LTE(长期演进)或蜂窝、WiFi、GPS、摄像机、CAN、串行(例如,通用异步收发器或UART)、SIM(用户识别模块)卡和其它通用输入/输出(GPIO)接口。主机接口可以是任何高速或高带宽接口,诸如PCIe(外围部件互连或PCI快速)接口。传感器可包括在自动驾驶车辆中使用的各种传感器,诸如,例如摄像机、LIDAR装置、RADAR装置、GPS接收器、IMU、超声波传感器、GNSS(全球导航卫星系统)接收器、LTE或蜂窝SIM卡、车辆传感器(例如,油门、制动器、转向传感器)和系统传感器(例如,温度、湿度、压力传感器)等。
例如,摄像机可经由以太网或GPIO接口进行联接。GPS传感器可经由USB或特定GPS接口进行联接。车辆传感器可经由CAN接口进行联接。RADAR传感器或超声波传感器可经由GPIO接口进行联接。LIDAR装置可经由以太网接口进行联接。外部SIM模块可经由LTE接口进行联接。类似地,内部SIM模块可插入到传感器单元的SIM插座上。出于调试的目的,诸如UART的串行接口可与控制台系统联接。应注意,传感器412可以是任何类型的传感器并由各种销售商或供应商提供。传感器处理模块501配置成处理不同类型的传感器及其相应的数据格式和通信协议。
继续图4,每个存储设备404,406和408都可以存储不同的软件或固件,诸如稳定工厂可执行映像、现场应用可执行映像或调试可执行映像。在安全启动操作期间,处理器402从存储设备(例如,存储设备#0 404)读取第一标记(例如,第一标记M1 504或546,参见图5A,5B),其中存储设备包括多个分区(例如,P1到PN,参见图5A,5B)和至少第一标记。每个分区包括存储在其中的可执行映像以及用于确定相应的可执行映像是否有效的标记,以认证和/或验证可执行映像的完整性。分区包括第一分区(例如,P1),其包括软件或固件(例如,稳定工厂映像、现场应用映像或调试映像)的可执行映像;与第一分区相关联的第一标记,并且其中第一标记包括唯一标识符(例如,唯一标识符602,参见图6)和认证代码(例如,认证代码604,参见图6)。认证代码可以是存储在分区中的单独代码。分区还可以存储验证器代码(例如,校验和)以验证可执行映像的完整性。
处理器402在启动操作期间确定与第一分区相关联的读取的第一标记是否有效,并且如果读取的第一标记被确定为有效,则处理器402在第一分区中执行存储的软件。在一个实施方式中,可以通过将读取的第一标记与存储在查找表中的有效标记进行比较来确定读取的第一标记的有效性。查找表可以适当地包括与每个有效标记相关联的有效标记和分区的列表。可替代地,查找表可以包括在每个标记中的唯一标识符或模式的散列,并且散列与其各自的分区相关联或用其标识。当软件存储在每个存储设备的每个分区中时,可以在工厂执行在FPGA 400内的适当存储器中的查找表的创建和存储。
在一个实施方式中,完整的映像或软件可以存储在每个存储设备的每个分区中,该存储设备可以实现为传感器单元的一部分。在一个实施方式中,安全启动操作包括:如果与第一分区相关联的读取的第一标记被确定为无效,则从存储设备读取第二标记(例如,M2),确定与存储设备的第二分区(例如,P2)相关联的读取的第二标记是否有效;其中,第二分区包括存储的软件(例如,稳定工厂映像、现场应用映像或调试映像),与第二分区相关联的第二标记包括唯一标识符(例如,唯一标识符602,见图6)和认证代码(例如,认证代码604,见图6)。如果读取的第二标记被确定为有效,则执行第二分区中的存储的软件。
在该示例中,首先检查第一可执行映像,并且只有当第一可执行文件加载失败(例如,无效、未经验证和/或不完整)时,才检查第二可执行映像以尝试执行。第二可执行映像可以用作第一可执行映像的备份或替代选项。可替代地,仅当第一可执行映像已成功加载时,才启动第二可执行映像。在这种情况下,第二可执行映像的功能可以依赖于第一可执行映像的功能。
在一个实施方式中,可以通过首先擦除或修改与第一分区(P1)相关联的第一标记(例如,M1),在第一分区中存储新软件,然后再次存储与第一关联相关联的第一标记,来更新分区中的任何一个(例如,第一分区P1,参见图5A,5B)中的可执行映像。也就是说,在更新固件之前,修改相关联的标记以指示固件无效以防止固件成为可执行。然后更新固件,并且在固件被更新之后,标记再次被修改或恢复,以指示固件现在是有效的。
参照图5A和5B,示出了根据各个实施方式的每个存储装置中的分区和标记的布局。在图5A中,存储设备(例如,存储设备404、406或408中的任何一个)的布局500包括多个分区P1(502)至PN(506),其中每个分区(例如,502)包括与该分区相关联的标记。例如,第一分区502包括与第一分区502相关联的第一标记M1(504),第N分区506包括与第N分区506相关联的第N标记MN(508)。在另一实施方式中,如图5B所示,存储设备的布局540(例如,存储设备404、406或408中的任何一个)包括多个分区P1(542)到PN(544)和与分区分开的标记M1(546)、M2(548)…MN(550)的阵列。每个标记(例如,M1)均与每个相应的分区(例如,P1)相关联。在一个实施方式中,每个分区可以包括完整的映像或软件。在一个实施方式中,在安全启动操作期间,如果第一标记504被确定为无效,则由于读取的第一标记的认证或完整性检查已经失败,因而处理器402不执行第一分区502中的存储的软件。因此,这防止在第一分区502中执行可能已经被破坏或改变的存储的软件,从而提高启动操作的安全性。在这样的场景中,可以启动恢复方案,其中可以检查下一顺序标记(例如,第二标记或M2),并且如果下一顺序标记被确定为有效,则由处理器402执行下一顺序分区(例如,第二分区)中的存储的软件。在一个实施方式中,下一顺序分区中存储的软件可以是第一分区中存储的软件的备份版本。安全启动操作按顺序继续(即,检查M3,检查M4,等等,直到最后一个标记MN被检查)直到安全启动操作完成。在另一实施方式中,可以启动恢复方案,其中所检查的下一标记不连续到第一标记。例如,可以跳过第二标记,并且可以检查第三标记或第四标记等的有效性。这种“跳过”标记发生,直到安全启动操作完成。
参照图6,根据一个实施方式的标记600的示例包括唯一标识符602和认证码604。当软件被编程或存储在每个存储设备中时,标记600可以在工厂或制造设施中适当地编程或存储的每个存储设备中。唯一标识符602可以是与每个分区相关联或标识的唯一模式。唯一模式可以适当地包括明文形式的十六进制模式或字符串(例如,0xAABBCCDD),其用于验证可执行映像是否来自可信源。可替代地,可以对唯一模式进行加密以增加安全性。认证码604可用于检查唯一标识符602的完整性。认证码604可适当地包括校验和、循环冗余码(CRC)或唯一标识符的散列。可替代地,使用单独的验证器代码来验证可执行映像的完整性。在一个实施方式中,在安全启动操作期间,检查认证代码604以确定唯一标识符602是否已损坏(“无效”)。可替换地,至少读取读的唯一标识符602的散列值被计算并用在查找表中预先存储的散列值来检查,并且如果两个散列值匹配,则唯一标识符602,因此,标记被确定为有效或良好。然后,由处理器402执行相应分区中的存储的软件作为安全启动操作的一部分。如果两个散列值不匹配,则标记已被破坏,并实施如上所述的恢复方案。
图7是根据一个实施方式在自动驾驶车辆中执行安全启动操作的过程700的流程图。过程700可以由处理逻辑来执行,该处理逻辑可以包括软件、硬件或其组合。例如,过程700可以由处理器402执行。过程700包括在操作702中,从存储设备读取第一标记,存储设备包括多个分区和至少第一标记,多个分区包括第一分区,第一分区包括存储的软件,第一标记与第一分区相关联,其中,第一标记包括唯一标识符和认证码。过程700还包括:在操作704中,确定在启动操作期间所读取的与第一分区相关联的第一标记是否有效;以及在操作706中,如果确定所读取的第一标记有效,则在第一分区中执行存储的软件。
应注意,如上文示出和描述的部件中的一些或全部可在软件、硬件或其组合中实施。例如,此类部件可实施为安装并存储在永久性存储装置中的软件,所述软件可通过处理器(未示出)加载在存储器中并在存储器中执行以实施贯穿本申请所述的过程或操作。可替代地,此类部件可实施为编程或嵌入到专用硬件(诸如,集成电路(例如,专用集成电路或ASIC)、数字信号处理器(DSP)或现场可编程门阵列(FPGA))中的可执行代码,所述可执行代码可经由来自应用的相应驱动程序和/或操作系统来访问。此外,此类部件可实施为处理器或处理器内核中的特定硬件逻辑,作为可由软件部件通过一个或多个特定指令访问的指令集的一部分。
图8是示出可与本公开的一个实施方式一起使用的数据处理系统的示例的框图。例如,系统1500可表示以上所述的执行上述过程或方法中的任一个的任何数据处理系统,例如,图1的感知与规划系统110或者服务器103至104中的任一个。系统1500可包括许多不同的部件。这些部件可实施为集成电路(IC)、集成电路的部分、分立电子装置或适用于电路板(诸如,计算机系统的主板或插入卡)的其它模块或者实施为以其它方式并入计算机系统的机架内的部件。
还应注意,系统1500旨在示出计算机系统的许多部件的高阶视图。然而,应当理解的是,某些实施例中可具有附加的部件,此外,其它实施例中可具有所示部件的不同布置。系统1500可表示台式计算机、膝上型计算机、平板计算机、服务器、移动电话、媒体播放器、个人数字助理(PDA)、智能手表、个人通信器、游戏装置、网络路由器或集线器、无线接入点(AP)或中继器、机顶盒或其组合。此外,虽然仅示出了单个机器或系统,但是术语“机器”或“系统”还应当理解为包括单独地或共同地执行一个(或多个)指令集以执行本文所讨论的任何一种或多种方法的机器或系统的任何集合。
在一个实施方式中,系统1500包括通过总线或互连件1510连接的处理器1501(其可对应于处理器402或主机CPU410)、存储器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)、来自
Figure BDA0002312147560000181
公司的
Figure BDA0002312147560000182
操作系统、来自苹果公司的Mac
Figure BDA0002312147560000191
来自
Figure BDA0002312147560000192
公司的
Figure BDA0002312147560000193
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)光学传感器。某些传感器可经由传感器集线器(未示出)联接到互连件1510,而诸如键盘或热传感器的其它装置可根据系统1500的具体配置或设计由嵌入式控制器(未示出)控制。
为了提供对诸如数据、应用、一个或多个操作系统等信息的永久性存储,大容量存储装置(未示出)也可联接到处理器1501。在各种实施方式中,为了实现更薄且更轻的系统设计并且改进系统响应性,这种大容量存储装置可经由固态装置(SSD)来实施。然而,在其它实施方式中,大容量存储装置可主要使用硬盘驱动器(HDD)来实施,其中较小量的SSD存储装置充当SSD高速缓存以在断电事件期间实现上下文状态以及其它此类信息的非易失性存储,从而使得在系统活动重新启动时能够实现快速通电。另外,闪存装置可例如经由串行外围接口(SPI)联接到处理器1501。这种闪存装置可提供系统软件的非易失性存储,所述系统软件包括所述系统的BIOS以及其它固件。
存储装置1508可包括计算机可访问的存储介质1509(也称为机器可读存储介质或计算机可读介质),其上存储有体现本文所述的任何一种或多种方法或功能的一个或多个指令集或软件(例如,模块、单元和/或逻辑1528)。处理模块/单元/逻辑1528可表示上述部件中的任一个,例如规划模块305、控制模块306。处理模块/单元/逻辑1528还可在其由数据处理系统1500、存储器1503和处理器1501执行期间完全地或至少部分地驻留在存储器1503内和/或处理器1501内,数据处理系统1500、存储器1503和处理器1501也构成机器可访问的存储介质。处理模块/单元/逻辑1528还可通过网络经由网络接口装置1505进行传输或接收。
计算机可读存储介质1509也可用来永久性地存储以上描述的一些软件功能。虽然计算机可读存储介质1509在示例性实施方式中被示为单个介质,但是术语“计算机可读存储介质”应当被认为包括存储所述一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被认为包括能够存储或编码指令集的任何介质,所述指令集用于由机器执行并且使得所述机器执行本公开的任何一种或多种方法。因此,术语“计算机可读存储介质”应当被认为包括但不限于固态存储器以及光学介质和磁性介质,或者任何其它非暂时性机器可读介质。
本文所述的处理模块/单元/逻辑1528、部件以及其它特征可实施为分立硬件部件或集成在硬件部件(诸如,ASICS、FPGA、DSP或类似装置)的功能中。此外,处理模块/单元/逻辑1528可实施为硬件装置内的固件或功能电路。此外,处理模块/单元/逻辑1528可以以硬件装置和软件部件的任何组合来实施。
应注意,虽然系统1500示出为具有数据处理系统的各种部件,但是并不旨在表示使部件互连的任何特定架构或方式;因为此类细节和本公开的实施方式没有密切关系。还应当认识到,具有更少部件或可能具有更多部件的网络计算机、手持计算机、移动电话、服务器和/或其它数据处理系统也可与本公开的实施方式一起使用。
前述详细描述中的一些部分已经根据在计算机存储器内对数据位的运算的算法和符号表示而呈现。这些算法描述和表示是数据处理领域中的技术人员所使用的方式,以将他们的工作实质最有效地传达给本领域中的其他技术人员。本文中,算法通常被认为是导致所期望结果的自洽操作序列。这些操作是指需要对物理量进行物理操控的操作。
然而,应当牢记,所有这些和类似的术语均旨在与适当的物理量关联,并且仅仅是应用于这些量的方便标记。除非在以上讨论中以其它方式明确地指出,否则应当了解,在整个说明书中,利用术语(诸如所附权利要求书中所阐述的术语)进行的讨论是指计算机系统或类似电子计算装置的动作和处理,所述计算机系统或电子计算装置操控计算机系统的寄存器和存储器内的表示为物理(电子)量的数据,并将所述数据变换成计算机系统存储器或寄存器或者其它此类信息存储装置、传输或显示装置内类似地表示为物理量的其它数据。
本公开的实施方式还涉及用于执行本文中的操作的设备。这种计算机程序存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存存储器装置)。
前述附图中所描绘的过程或方法可由处理逻辑来执行,所述处理逻辑包括硬件(例如,电路、专用逻辑等)、软件(例如,体现在非暂时性计算机可读介质上)或两者的组合。尽管所述过程或方法在上文是依据一些顺序操作来描述的,但是应当了解,所述操作中的一些可按不同的顺序执行。此外,一些操作可并行地执行而不是顺序地执行。
本公开的实施方式并未参考任何特定的编程语言进行描述。应认识到,可使用多种编程语言来实施如本文描述的本公开的实施方式的教导。
在以上的说明书中,已经参考本公开的具体示例性实施方式对本公开的实施方式进行了描述。将显而易见的是,在不脱离所附权利要求书中阐述的本公开的更宽泛精神和范围的情况下,可对本发明作出各种修改。因此,应当在说明性意义而不是限制性意义上来理解本说明书和附图。

Claims (20)

1.执行可执行代码的安全启动操作以操作自动驾驶车辆的计算机实施的方法,包括:
响应于启动操作,从自动驾驶车辆的传感器单元的存储装置读取第一标记,所述存储装置包括多个分区,所述分区中的每个均存储固件的可执行映像;
确定所述第一标记是否有效,其中,所述第一标记与在其中存储有第一可执行映像的所述分区中的第一分区相关联;以及
响应于确定所述第一标记有效,执行从所述第一分区检索的所述第一可执行映像,其中,所述第一可执行映像被配置为,当被执行时,处理从安装在所述自动驾驶车辆上的一个或多个传感器获得的传感器数据,所述传感器数据用于在自动驾驶期间感知所述自动驾驶车辆周围的驾驶环境。
2.根据权利要求1所述的方法,其中,所述分区中的每个均包括存储在其中的标记,以指示相应可执行映像对于执行是否有效。
3.根据权利要求2所述的方法,其中,所述分区中的每个均还包括存储在其中的认证代码,以认证所述相应可执行映像。
4.根据权利要求2所述的方法,其中,所述分区中的每个均还包括存储在其中的验证器代码,以验证所述相应可执行映像的完整性。
5.根据权利要求1所述的方法,还包括:
从所述存储装置的第二分区读取第二标记,所述第二分区存储第二可执行映像;
检查所述第二标记以确定所述第二标记是否有效;以及
如果所述第二标记被确定为有效,则执行从所述第二分区检索的所述第二可执行映像。
6.根据权利要求5所述的方法,其中,响应于确定所述第一标记无效,检查所述第二标记并执行所述第二可执行映像,其中,所述第二可执行映像是所述第一可执行映像的备份版本。
7.根据权利要求5所述的方法,其中,响应于所述第一可执行映像的成功执行,检查所述第二标记并执行所述第二可执行映像。
8.根据权利要求1所述的方法,还包括:
响应于更新存储在第三分区中的第三可执行映像的请求,修改与所述第三分区相关联的第三标记,以指示所述第三可执行映像无效;
更新所述第三分区中的所述第三可执行映像;以及
恢复所述第三标记以指示所述第三可执行映像再次有效。
9.一种存储有指令的非暂时性机器可读介质,所述指令在由处理器执行时致使所述处理器执行操作,所述操作包括:
响应于启动操作,从自动驾驶车辆的传感器单元的存储装置读取第一标记,所述存储装置包括多个分区,所述分区中的每个均存储固件的可执行映像;
确定所述第一标记是否有效,其中,所述第一标记与在其中存储有第一可执行映像的所述分区中的第一分区相关联;以及
响应于确定所述第一标记有效,执行从所述第一分区检索的所述第一可执行映像,其中,所述第一可执行映像被配置为,当被执行时,处理从安装在所述自动驾驶车辆上的一个或多个传感器获得的传感器数据,所述传感器数据用于在自动驾驶期间感知所述自动驾驶车辆周围的驾驶环境。
10.根据权利要求9所述的机器可读介质,其中,所述分区中的每个均包括存储在其中的标记,以指示相应可执行映像对于执行是否有效。
11.根据权利要求10所述的机器可读介质,其中,所述分区中的每个均还包括存储在其中的认证代码,以认证所述相应可执行映像。
12.根据权利要求10所述的机器可读介质,其中,所述分区中的每个均还包括存储在其中的验证器代码,以验证所述相应可执行映像的完整性。
13.根据权利要求9所述的机器可读介质,其中,所述操作还包括:
从所述存储装置的第二分区读取第二标记,所述第二分区存储第二可执行映像;
检查所述第二标记以确定所述第二标记是否有效;以及
如果所述第二标记被确定为有效,则执行从所述第二分区检索的所述第二可执行映像。
14.根据权利要求13所述的机器可读介质,其中,响应于确定所述第一标记无效,检查所述第二标记并执行所述第二可执行映像,其中,所述第二可执行映像是所述第一可执行映像的备份版本。
15.根据权利要求13所述的机器可读介质,其中,响应于所述第一可执行映像的成功执行,检查所述第二标记并执行所述第二可执行映像。
16.根据权利要求9所述的机器可读介质,其中,所述操作还包括:
响应于更新存储在第三分区中的第三可执行映像的请求,修改与所述第三分区相关联的第三标记,以指示所述第三可执行映像无效;
更新所述第三分区中的所述第三可执行映像;以及
恢复所述第三标记以指示所述第三可执行映像再次有效。
17.一种数据处理系统,包括:
处理器;以及
存储器,所述存储器联接至所述处理器,以存储指令,所述指令在由所述处理器执行时致使所述处理器执行操作,所述操作包括:
响应于启动操作,从自动驾驶车辆的传感器单元的存储装置读取第一标记,所述存储装置包括多个分区,所述分区中的每个均存储固件的可执行映像;
确定所述第一标记是否有效,其中,所述第一标记与在其中存储有第一可执行映像的所述分区中的第一分区相关联;以及
响应于确定所述第一标记有效,执行从所述第一分区检索的所述第一可执行映像,其中,所述第一可执行映像被配置为,当被执行时,处理从安装在所述自动驾驶车辆上的一个或多个传感器获得的传感器数据,所述传感器数据用于在自动驾驶期间感知所述自动驾驶车辆周围的驾驶环境。
18.根据权利要求17所述的系统,其中,所述分区中的每个均包括存储在其中的标记,以指示相应可执行映像对于执行是否有效。
19.根据权利要求18所述的系统,其中,所述分区中的每个均还包括存储在其中的认证代码,以认证所述相应可执行映像。
20.根据权利要求18所述的系统,其中,所述分区中的每个均还包括存储在其中的验证器代码,以验证所述相应可执行映像的完整性。
CN201911263268.3A 2019-04-11 2019-12-11 用于自动驾驶车辆的基于硬件的系统的启动失效恢复方案 Pending CN111813594A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/381,497 2019-04-11
US16/381,497 US11288373B2 (en) 2019-04-11 2019-04-11 Boot failure recovery scheme for hardware-based system of autonomous driving vehicles

Publications (1)

Publication Number Publication Date
CN111813594A true CN111813594A (zh) 2020-10-23

Family

ID=72749125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911263268.3A Pending CN111813594A (zh) 2019-04-11 2019-12-11 用于自动驾驶车辆的基于硬件的系统的启动失效恢复方案

Country Status (2)

Country Link
US (1) US11288373B2 (zh)
CN (1) CN111813594A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10666767B1 (en) * 2018-01-30 2020-05-26 State Farm Mutual Automobile Insurance Company Systems and methods for vehicle configuration verification using smart contracts
US11288373B2 (en) * 2019-04-11 2022-03-29 Baidu Usa Llc Boot failure recovery scheme for hardware-based system of autonomous driving vehicles

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650662A (zh) * 2009-08-26 2010-02-17 中兴通讯股份有限公司 一种嵌入式系统的存储器件、固件启动及升级方法
CN104205045A (zh) * 2012-03-30 2014-12-10 英特尔公司 针对可上网的计算节点提供不变的防病毒有效载荷
US20190042278A1 (en) * 2017-08-04 2019-02-07 Qualcomm Incorporated Partitioning Flash And Enabling Flexible Boot With Image Upgrade Capabilities

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912633B2 (en) * 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US7490352B2 (en) * 2005-04-07 2009-02-10 Microsoft Corporation Systems and methods for verifying trust of executable files
US20070006175A1 (en) * 2005-06-30 2007-01-04 David Durham Intra-partitioning of software components within an execution environment
US20090193211A1 (en) * 2008-01-24 2009-07-30 Broadcom Corporation Software authentication for computer systems
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
WO2010039788A2 (en) * 2008-09-30 2010-04-08 Bigfoot Networks, Inc. Processor boot security device and methods thereof
US8589667B2 (en) * 2010-04-19 2013-11-19 Apple Inc. Booting and configuring a subsystem securely from non-local storage
US8631239B2 (en) * 2012-01-12 2014-01-14 Facebook, Inc. Multiple system images for over-the-air updates
US9189225B2 (en) * 2012-10-16 2015-11-17 Imprivata, Inc. Secure, non-disruptive firmware updating
US10924277B2 (en) * 2018-01-25 2021-02-16 Micron Technology, Inc. Certifying authenticity of stored code and code updates
US10666767B1 (en) * 2018-01-30 2020-05-26 State Farm Mutual Automobile Insurance Company Systems and methods for vehicle configuration verification using smart contracts
KR102379110B1 (ko) * 2019-04-02 2022-03-25 모셔널 에이디 엘엘씨 차량용 프로세서의 안전한 부트
US11288373B2 (en) * 2019-04-11 2022-03-29 Baidu Usa Llc Boot failure recovery scheme for hardware-based system of autonomous driving vehicles
FR3098319A1 (fr) * 2019-07-05 2021-01-08 Commissariat à l'énergie atomique et aux énergies alternatives Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650662A (zh) * 2009-08-26 2010-02-17 中兴通讯股份有限公司 一种嵌入式系统的存储器件、固件启动及升级方法
CN104205045A (zh) * 2012-03-30 2014-12-10 英特尔公司 针对可上网的计算节点提供不变的防病毒有效载荷
US20190042278A1 (en) * 2017-08-04 2019-02-07 Qualcomm Incorporated Partitioning Flash And Enabling Flexible Boot With Image Upgrade Capabilities
CN111033466A (zh) * 2017-08-04 2020-04-17 高通股份有限公司 对闪存进行分区以及实现具有映像升级能力的灵活引导

Also Published As

Publication number Publication date
US11288373B2 (en) 2022-03-29
US20200327234A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
KR102223270B1 (ko) 여분의 초음파 radar를 구비한 자율 주행 차량
US10810872B2 (en) Use sub-system of autonomous driving vehicles (ADV) for police car patrol
US11143513B2 (en) Labeling scheme for labeling and generating high-definition map based on trajectories driven by vehicles
US11269352B2 (en) System for building a vehicle-to-cloud real-time traffic map for autonomous driving vehicles (ADVS)
CN110462543B (zh) 用于评估自动驾驶车辆的感知要求的基于仿真的方法
CN108139884B (zh) 用于操作自动驾驶车辆的方法和系统
US10353393B2 (en) Method and system for improving stability of autonomous driving vehicles
KR102126621B1 (ko) 자율 주행 차량을 위한 시스템 지연 보정 제어 방법
CN110621541B (zh) 用于生成轨迹以操作自动驾驶车辆的方法和系统
CN111835496A (zh) 在自动驾驶系统的不同计算节点之间的定时同步方案
JP6543373B2 (ja) 自動運転車両に用いられる制御型の計画と制御システム
KR20180088789A (ko) 차량 주변의 컨텍스트에 기초하여 차량의 하나 이상의 궤적을 예측하는 방법 및 시스템
CN111061261A (zh) 使用标准导航地图与基于车辆的先前轨迹确定的车道配置的自动驾驶
US11183059B2 (en) Parking management architecture for parking autonomous driving vehicles
US11340613B2 (en) Communications protocols between planning and control of autonomous driving vehicle
US11702104B2 (en) Systems and methods to determine risk distribution based on sensor coverages of a sensor system for an autonomous driving vehicle
CN111103876A (zh) 自动驾驶车辆的基于雷达通信的扩展感知
CN111813594A (zh) 用于自动驾驶车辆的基于硬件的系统的启动失效恢复方案
US20210179134A1 (en) Mutual nudge algorithm for self-reverse lane of autonomous driving
CN113226825A (zh) 自动驾驶车辆的基于扭矩反馈的车辆纵向自动校准系统
US11554783B2 (en) Systems and methods to enhance early detection of performance induced risks for an autonomous driving vehicle
CN111279280A (zh) 用于在传感器之间传送数据的数据传送逻辑与自动驾驶车辆的规划和控制
US10916077B2 (en) User privacy protection on autonomous driving vehicles
CN112041774A (zh) 用于3级自动驾驶车辆的基于摄像机的横向位置校准
US11175410B2 (en) Flexible GPS message decoder for decoding GPS messages during autonomous driving

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