用于自动驾驶车辆基于GPS的高精度时间戳生成电路转让专利

申请号 : CN201910522860.4

文献号 : CN110857993A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张满江黄岱吴官锡张妍嫣

申请人 : 百度(美国)有限责任公司

摘要 :

在一个实施方式中,系统在传感器单元处接收来自自动驾驶车辆(ADV)的GPS传感器的全球定位系统(GPS)脉冲信号,其中GPS脉冲信号是卫星传输到GPS传感器的RF信号,其中传感器单元联接到安装在ADV上的多个传感器,以感知ADV周围的驾驶环境并规划路径以自动地驾驶ADV。系统接收来自本地振荡器的第一本地振荡器信号。系统实时同步第一本地振荡器信号到GPS脉冲信号,包括基于GPS脉冲信号修改第一本地振荡器信号。系统基于同步的第一本地振荡器信号生成第二振荡器信号,其中第二振荡器信号用于向多个传感器中的至少一个提供时间。

权利要求 :

1.一种生成用于自动驾驶车辆ADV的时间的方法,所述方法包括:

在传感器单元处接收来自ADV的全球定位系统GPS传感器的GPS脉冲信号,其中所述传感器单元联接到主机系统和安装在所述ADV上的多个传感器,其中所述主机系统基于从所述多个传感器获得并由所述传感器单元的处理模块处理的传感器数据来感知所述ADV周围的驾驶环境,并且基于感知数据来规划路径以自动地驾驶所述ADV;

接收来自所述传感器单元的本地振荡器的第一本地振荡器信号;

实时同步所述第一本地振荡器信号到所述GPS脉冲信号,包括基于所述GPS脉冲信号修改所述第一本地振荡器信号;以及基于所同步的第一本地振荡器信号生成第二振荡器信号,其中所述第二振荡器信号提供给所述多个传感器中的至少一个,以用作操作所述传感器单元的时钟信号。

2.如权利要求1所述的方法,其中同步所述本地振荡器包括:

使用所述本地振荡器生成具有第一粒度的第一计数器;

监控所述第一计数器以计数所述第一粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示所述第一粒度的振荡;

基于在所述第一粒度的所监控的第一计数器来计算第一计数值;以及

基于所计算的第一计数值修改所述第一计数器,以使得每个计数表示所述第一粒度的振荡的一部分,从而同步所述第一粒度的所述本地振荡器。

3.如权利要求2所述的方法,其中同步所述本地振荡器还包括:

使用所述本地振荡器生成具有第二粒度的第二计数器;

监控所述第二计数器以计数在所述第二粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示在所述第二粒度的振荡;

基于在所述第二粒度的所监控的第二计数器计算第二计数值;以及

基于所计算的第二计数值修改所述第二计数器,以使得每个计数表示在所述第二粒度的振荡的一部分,从而同步在所述第二粒度的所述本地振荡器。

4.如权利要求3所述的方法,其中同步所述本地振荡器还包括:

使用所述本地振荡器生成具有第三粒度的第三计数器;

监控所述第三计数器以计数在所述第三粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示在所述第三粒度的振荡;

基于在所述第三粒度的所监控的第三计数器计算第三计数值;以及

基于所计算的第三计数值修改所述第三计数器,以使得每个计数表示在所述第三粒度的振荡的一部分,从而同步在所述第三粒度的所述本地振荡器。

5.如权利要求4所述的方法,其中,所述第一粒度是毫秒粒度,所述第二粒度是微秒粒度,且所述第三粒度是纳秒粒度。

6.如权利要求4所述的方法,还包括禁止生成用于同步的所述第一计数器、所述第二计数器和所述第三计数器中的任何一个。

7.如权利要求4所述的方法,还包括:如果GPS传感器信号丢失,则保持所述第一计数器、所述第二计数器和所述第三计数值,直到再次重新获得所述GPS传感器信号。

8.一种生成用于ADV的时间的电路,所述电路包括:

监控电路,其中所述监控电路用于接收来自所述ADV的GPS传感器的GPS脉冲信号,其中所述监控电路是传感器单元的一部分,所述传感器单元联接到主机系统和安装在所述ADV上的多个传感器,其中所述主机系统基于从所述多个传感器获得并由所述传感器单元的处理模块处理的传感器数据来感知所述ADV周围的驾驶环境,并且基于感知数据来规划路径以自动地驾驶所述ADV,其中所述监控电路用于接收来自所述传感器单元的本地振荡器的第一本地振荡器信号;其中所述监控电路监控本地脉冲信号的振荡;以及同步电路,与所述监控电路联接,所述同步电路用于实时同步所述第一本地振荡器信号到所述GPS脉冲信号,包括基于所述GPS脉冲信号修改所述第一本地振荡器信号,其中所述同步电路基于所同步的第一本地振荡器信号生成第二振荡器信号,其中所述第二振荡器信号提供给所述多个传感器中的至少一个,以用作操作所述传感器单元的时钟信号。

9.如权利要求8所述的电路,还包括:

第一计数器生成器电路,联接到所述监控电路和所述同步电路,所述第一计数器生成器电路使用所述本地振荡器生成具有第一粒度的第一计数器,其中所述监控电路进一步监控所述第一计数器以计数所述第一粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示所述第一粒度的振荡,以及其中所述同步电路基于在所述第一粒度的所监控的第一计数器计算第一计数值,并且基于所计算的第一计数值修改所述第一计数器,以使得每个计数表示所述第一粒度的振荡的一部分,从而同步所述第一粒度的所述本地振荡器。

10.如权利要求9所述的电路,还包括:

第二计数器生成器电路,联接到所述监控电路和所述同步电路,所述第二计数器生成器电路使用所述本地振荡器生成具有第二粒度的第二计数器,其中所述监控电路进一步监控所述第二计数器以计数在所述第二粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示在所述第二粒度的振荡,以及其中所述同步电路基于在所述第二粒度的所监控的第二计数器计算第二计数值,并且基于所计算的第二计数值修改所述第二计数器,以使得每个计数表示在所述第二粒度的振荡的一部分,从而同步在所述第二粒度的所述本地振荡器。

11.如权利要求10所述的电路,还包括:

第三计数器生成器电路,联接到所述监控电路和所述同步电路,所述第三计数器生成器电路使用所述本地振荡器生成具有第三粒度的第三计数器;

其中所述监控电路进一步监控所述第三计数器以计数在所述第三粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示在所述第三粒度的振荡;以及其中所述同步电路基于在所述第三粒度的所监控的第三计数器计算第三计数值,并且基于所计算的第三计数值修改所述第三计数器,以使得每个计数表示在所述第三粒度的振荡的一部分,从而同步在所述第三粒度的所述本地振荡器。

12.如权利要求11所述的电路,其中,所述第一粒度是毫秒粒度,所述第二粒度是微秒粒度,且所述第三粒度是纳秒粒度。

13.如权利要求11所述的方法,还包括:

解复用器,联接到所述第一计数器生成器电路、所述第二计数器生成器电路和所述第三计数器生成器电路;以及配置电路,联接到所述解复用器以生成选择信号以启用所述第一计数器生成器电路、所述第二计数器生成器电路或所述第三计数器生成器电路。

14.如权利要求11所述的电路,其中如果所述监控电路不再接收到GPS传感器信号,则所述同步电路进一步保持所述第一计数值、所述第二计数值和所述第三计数值,直到再次接收到所述GPS传感器信号。

15.一种用于ADV的传感器单元,包括:

传感器接口,联接到安装在所述ADV的多个位置上的多个传感器;

主机接口,联接到主机系统,其中所述主机系统基于从所述多个传感器获得并由所述传感器单元的处理模块处理的传感器数据来感知所述ADV周围的驾驶环境,并且基于感知数据来规划路径以自动地驾驶所述ADV;

时间生成电路,联接到所述传感器接口和所述主机接口,所述时间生成电路包括:监控电路,其中所述监控电路用于从所述ADV的GPS传感器接收GPS脉冲信号,其中所述监控电路用于接收来自所述传感器单元的本地振荡器的第一本地振荡器信号;其中所述监控电路监控本地脉冲信号的振荡;以及同步电路,与所述监控电路联接,所述同步电路用于实时同步所述第一本地振荡器信号到所述GPS脉冲信号,包括基于所述GPS脉冲信号修改所述第一本地振荡器信号,其中所述同步电路基于所同步的第一本地振荡器信号生成第二振荡器信号,其中所述第二振荡器信号被提供给所述多个传感器中的至少一个,以用作操作所述传感器单元的时钟信号。

16.如权利要求15所述的传感器单元,还包括:

第一计数器生成器电路,联接到所述监控电路和所述同步电路,所述第一计数器生成器电路使用所述本地振荡器生成具有第一粒度的第一计数器;

其中所述监控电路进一步监控所述第一计数器以计数所述第一粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示所述第一粒度的振荡;以及其中所述同步电路基于在所述第一粒度的所监控的第一计数器计算第一计数值,并且基于所计算的第一计数值修改所述第一计数器,以使得每个计数表示所述第一粒度的振荡的一部分,从而同步所述第一粒度的所述本地振荡器。

17.如权利要求16所述的传感器单元,还包括:

第二计数器生成器电路,联接到所述监控电路和所述同步电路,所述第二计数器生成器电路使用所述本地振荡器生成具有第二粒度的第二计数器,其中所述监控电路进一步监控所述第二计数器以计数在所述第二粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示在所述第二粒度的振荡,以及其中所述同步电路基于在所述第二粒度的所监控的第二计数器计算第二计数值,并且基于所计算的第二计数值修改所述第二计数器,以使得每个计数表示在所述第二粒度的振荡的一部分,从而同步在所述第二粒度的所述本地振荡器。

18.如权利要求17所述的传感器单元,还包括:

第三计数器生成器电路,联接到所述监控电路和所述同步电路,所述第三计数器生成器电路使用所述本地振荡器生成具有第三粒度的第三计数器,其中所述监控电路进一步监控所述第三计数器以计数在所述第三粒度的振荡达到所述GPS脉冲信号的时间间隔的次数,其中每个计数表示在所述第三粒度的振荡,以及其中所述同步电路基于在所述第三粒度的所监控的第三计数器计算第三计数值,并且基于所计算的第三计数值修改所述第三计数器,以使得每个计数表示在所述第三粒度的振荡的一部分,从而同步在所述第三粒度的所述本地振荡器。

19.如权利要求18所述的传感器单元,其中,所述第一粒度是毫秒粒度,所述第二粒度是微秒粒度,且所述第三粒度是纳秒粒度。

20.如权利要求18所述的传感器单元,还包括:

解复用器,联接到所述第一计数器生成器电路、所述第二计数器生成器电路和所述第三计数器生成器电路;以及配置电路,联接到所述解复用器以生成选择信号以启用所述第一计数器生成器电路、所述第二计数器生成器电路或所述第三计数器生成器电路。

21.如权利要求18所述的传感器单元,其中如果所述监控电路不再接收到GPS传感器信号,则所述同步电路进一步保持所述第一计数值、所述第二计数值和所述第三计数值,直到再次接收到所述GPS传感器信号。

说明书 :

用于自动驾驶车辆基于GPS的高精度时间戳生成电路

技术领域

[0001] 本公开的实施方式总体涉及操作自动驾驶车辆。更具体地,本公开的实施方式涉及一种用于自动驾驶车辆基于全球定位系统(GPS)的高精度时间戳生成电路。

背景技术

[0002] 以自动驾驶模式运行(例如,无人驾驶)的车辆可以将乘员、尤其是驾驶员从一些驾驶相关的职责中解放出来。当以自动驾驶模式运行时,车辆可以使用车载传感器导航到各个位置,从而允许车辆在最少人机交互的情况下或在没有任何乘客的一些情况下行驶。
[0003] 运动规划和控制是自动驾驶中的关键操作。运动规划和控制的准确性和效率在很大程度上取决于车辆时间的准确性,以便为不同的传感器输入加时间戳和同步不同的传感器输入。按照惯例,可以使用高精度晶体振荡器生成时间,但这是昂贵的,并且可能不适用于不同的传感器和装置。此外,来自传感器和装置的多个时钟源所生成的时间可能是混乱且不精确。

发明内容

[0004] 本公开的实施方式提供生成用于自动驾驶车辆ADV的时间的方法、生成用于ADV的时间的电路以及用于ADV的传感器单元。
[0005] 在本公开的一方面,生成用于自动驾驶车辆ADV的时间的方法包括:在传感器单元处接收来自ADV的GPS传感器的全球定位系统GPS脉冲信号,其中所述传感器单元联接到主机系统和安装在所述ADV上的多个传感器,其中所述主机系统基于从所述多个传感器获得并由所述传感器单元的处理模块处理的传感器数据来感知所述ADV周围的驾驶环境,并且基于感知数据来规划路径以自动地驾驶所述ADV;接收来自所述传感器单元的本地振荡器的第一本地振荡器信号;实时同步所述第一本地振荡器信号到所述GPS脉冲信号,包括基于所述GPS脉冲信号修改所述第一本地振荡器信号;以及基于所同步的第一本地振荡器信号生成第二振荡器信号,其中所述第二振荡器信号提供给所述多个传感器中的至少一个,以用作操作所述传感器单元的时钟信号。
[0006] 在本公开的另一方面,生成用于ADV的时间的电路包括:监控电路,其中所述监控电路用于接收来自所述ADV的GPS传感器的GPS脉冲信号,其中所述监控电路是传感器单元的一部分,所述传感器单元联接到主机系统和安装在所述ADV上的多个传感器,其中所述主机系统基于从所述多个传感器获得并由所述传感器单元的处理模块处理的传感器数据来感知所述ADV周围的驾驶环境,并且基于感知数据来规划路径以自动地驾驶所述ADV,其中所述监控电路用于接收来自所述传感器单元的本地振荡器的第一本地振荡器信号;其中所述监控电路监控本地脉冲信号的振荡;以及同步电路,与所述监控电路联接,所述同步电路用于实时同步所述第一本地振荡器信号到所述GPS脉冲信号,包括基于所述GPS脉冲信号修改所述第一本地振荡器信号,其中所述同步电路基于所同步的第一本地振荡器信号生成第二振荡器信号,其中所述第二振荡器信号提供给所述多个传感器中的至少一个,以用作操作所述传感器单元的时钟信号。
[0007] 在本公开的又一方面,用于ADV的传感器单元包括:传感器接口,联接到安装在所述ADV的多个位置上的多个传感器;主机接口,联接到主机系统,其中所述主机系统基于从所述多个传感器获得并由所述传感器单元的处理模块处理的传感器数据来感知所述ADV周围的驾驶环境,并且基于感知数据来规划路径以自动地驾驶所述ADV;时间生成电路,联接到所述传感器接口和所述主机接口,所述时间生成电路包括:监控电路,其中所述监控电路用于从所述ADV的GPS传感器接收GPS脉冲信号,其中所述监控电路用于接收来自所述传感器单元的本地振荡器的第一本地振荡器信号;其中所述监控电路监控本地脉冲信号的振荡;以及同步电路,与所述监控电路联接,所述同步电路用于实时同步所述第一本地振荡器信号到所述GPS脉冲信号,包括基于所述GPS脉冲信号修改所述第一本地振荡器信号,其中所述同步电路基于所同步的第一本地振荡器信号生成第二振荡器信号,其中所述第二振荡器信号被提供给所述多个传感器中的至少一个,以用作操作所述传感器单元的时钟信号。

附图说明

[0008] 本公开的实施方式在附图的各图中以举例而非限制的方式示出,附图中的相同参考数字指示相似元件。
[0009] 图1是示出根据一个实施方式的网络化系统的框图。
[0010] 图2是示出根据一个实施方式的自动驾驶车辆的示例的框图。
[0011] 图3A-3B是示出根据一个实施方式的与自动驾驶车辆一起使用的感知与规划系统的示例的框图。
[0012] 图4是示出根据一个实施方式的自动驾驶系统的架构的框图。
[0013] 图5是示出根据一个实施方式的传感器单元的示例的框图。
[0014] 图6A是示出根据一个实施方式的高精度时间生成单元的示例的框图。
[0015] 图6B是示出根据一个实施方式的带有三个计数器生成器的高精度时间生成单元的示例的框图。
[0016] 图7是根据一个实施方式生成时间的方法的流程图。
[0017] 图8是示出根据一个实施方式的传感器单元的示例的框图。
[0018] 图9是示出根据一个实施方式的时间戳同步集线器装置的示例的框图。
[0019] 图10是示出根据一个实施方式的传感器单元的示例的框图。
[0020] 图11是示出根据一个实施方式的时间源排序模块的示例的框图。
[0021] 图12是根据一个实施方式排序时间源的方法的流程图。
[0022] 图13是示出根据一个实施方式的传感器单元的示例的框图。
[0023] 图14是示出根据一个实施方式的时间源恢复模块的示例的框图。
[0024] 图15是示出根据一个实施方式的平滑时间源恢复的示例的时间图。
[0025] 图16是根据一个实施方式恢复时间源的方法的流程图。
[0026] 图17是示出根据一个实施方式的数据处理系统的框图。

具体实施方式

[0027] 将参考以下所讨论的细节来描述本公开的各种实施方式和方面,附图将示出所述各种实施方式。下列描述和附图是对本公开的说明,而不应当解释为限制本公开。描述了许多特定细节以提供对本公开各种实施方式的全面理解。然而,在某些情况下,并未描述众所周知的或常规的细节以提供对本公开的实施方式的简洁讨论。
[0028] 本说明书中对“一个实施方式”或“实施方式”的提及意味着结合该实施方式所描述的特定特征、结构或特性可以包括在本公开的至少一个实施方式中。短语“在一个实施方式中”在本说明书中各个地方的出现不必全部指同一实施方式。
[0029] 实时时钟(RTC)是跟踪时间的计算机时钟。RTC几乎存在于任何需要保持准确时间的电子设备中。大多数RTC使用诸如石英晶体的晶体振荡器。晶体振荡器是用于压电材料的振动晶体的机械共振的电子振荡器集成电路(IC)。它会生成具有给定频率的电信号。RTC IC的精度可达百万分之100(PPM),并且具有更高精度的RTC IC往往成本更高。由于RTC IC的精度不同,例如,计数时间略有不同,即使最初设置准确,RTC也会因时钟漂移而在一段时间后不同。
[0030] 根据一个方面,时间生成系统在传感器单元处接收来自自动驾驶车辆(ADV)的GPS传感器的全球定位系统(GPS)脉冲信号,其中GPS脉冲信号是卫星传输到G PS传感器的RF信号,其中传感器单元联接到主机系统和安装在ADV上的多个传感器,其中主机系统包括感知模块和规划控制(PNC)模块,其中感知模块基于从传感器获得并由传感器单元的处理模块处理的传感器数据来感知ADV周围的驾驶环境,并且其中PNC模块用于基于感知数据规划路径以自动地驾驶ADV。系统接收来自本地振荡器的第一本地振荡器信号。系统实时同步第一本地振荡器信号到GPS脉冲信号,包括基于GPS脉冲信号修改第一本地振荡器信号。系统基于同步的第一本地振荡器信号生成第二振荡器信号,其中第二振荡器信号用于向至少一个传感器提供时间。
[0031] 在一个实施方式中,系统使用本地振荡器生成具有第一粒度的第一计数器。系统监控第一计数器以计数在第一粒度的振荡达到GPS脉冲信号的时间间隔的次数,其中每个计数表示在第一粒度的振荡。系统基于在第一粒度的被监控的第一计数器计算第一计数值。系统基于计算的第一计数值修改第一计数器,以使得每个计数表示在第一粒度的振荡的一部分,以同步在第一粒度的本地振荡器。
[0032] 在另一个实施方式中,系统使用本地振荡器生成具有第二粒度的第二计数器。系统监控第二计数器以计数在第二粒度的振荡达到GPS脉冲信号的时间间隔的次数,其中每个计数表示在第二粒度的振荡。系统基于在第二粒度的被监控的第二计数器计算第二计数值。系统基于计算的第二计数值修改第二计数器,以使得每个计数表示在第二粒度的振荡的一部分,以同步在第二粒度的本地振荡器。
[0033] 在另一个实施方式中,系统使用本地振荡器生成具有第三粒度的第三计数器。系统监控第三计数器以计数在第三粒度的振荡达到GPS脉冲信号的时间间隔的次数,其中每个计数表示在第三粒度的振荡。系统基于在第三粒度的被监控的第三计数器计算第三计数值。系统基于计算的第三计数值修改第三计数器,以使得每个计数表示在第三粒度的振荡的一部分,以同步在第三粒度的本地振荡器。
[0034] 在另一个实施方式中,第一粒度是毫秒粒度,第二粒度是微秒粒度,第三粒度是纳秒粒度。
[0035] 在另一个实施方式中,系统禁止生成用于同步的所述第一计数器、所述第二计数器或所述第三计数器中的任何一个
[0036] 在另一个实施方式中,如果GPS传感器信号丢失,系统保持第一、第二和第三计数值,直到再次重新获得GPS传感器信号。
[0037] 根据第二方面,在ADV中使用传感器单元。传感器单元包括传感器接口,传感器接口联接到安装在ADV的多个位置上的多个传感器。传感器单元包括主机接口,主机接口联接到主机系统,其中主机系统基于从传感器获得的传感器数据来感知ADV周围的驾驶环境,并且规划路径以自动地驾驶ADV。传感器单元包括联接到传感器接口的时间同步集线器装置。时间同步集线器装置包括联接到时间源的一个或多个传输(TX)时间戳生成器,其中TX时间戳生成器基于从时间源获得的时间生成TX时间戳,以向一个或多个传感器提供TX时间戳,指示传感器经由主机接口将传感器数据传输到主机系统的时间。时间同步集线器装置包括联接到时间源的一个或多个接收(RX)时间戳生成器,其中RX时间戳生成器基于从时间源获得的时间生成RX时间戳,以向一个或多个传感器提供RX时间戳,指示从传感器接收到传感器数据的时间。
[0038] 在一个实施方式中,第一传感器(例如,接收时间信息输入并且输出具有时间信息的传感器数据的传感器)联接到TX时间戳生成器和RX时间戳生成器,其中传感器用于接收来自TX时间戳生成器的TX时间戳并将传感器数据和元数据传输到电路,其中元数据包括TX时间戳信息,其中RX时间戳生成器用于生成RX时间戳以附加到所传输的元数据上以指示电路接收到传感器数据的时间。
[0039] 在一个实施方式中,第二传感器(例如,可以或可以不接收时间信息输入并且仅输出传感器数据的传感器)联接到RX时间戳生成器而不是TX时间戳生成器,其中传感器用于在没有任何传输时间戳信息的情况下将传感器数据传输到电路,并且其中RX时间戳生成器用于生成RX时间戳以附加到所传输的传感器数据的元数据上以指示电路接收到传感器数据的时间。
[0040] 在一个实施方式中,第三传感器(例如,接收时间信息输入并且直接输出到主机系统的传感器)联接到TX时间戳生成器和主机系统,但不与RX时间戳生成器联接,其中传感器用于接收来自TX时间戳生成器的TX时间戳,并且第三传感器将传感器数据和元数据直接传输到主机系统,其中元数据包括指示传感器数据被传输到主机系统的时间的TX时间戳信息。
[0041] 在一个实施方式中,同步集线器装置与主机系统联接以同步主机系统的时间。在另一个实施方式中,同步集线器装置经由外围组件互连快速(PCIe)总线联接到主机系统。
[0042] 在一个实施方式中,联接到TX时间戳生成器用于摄像机传感器的元数据包括摄像机触发时间戳信息。在一个实施方式中,TX或RX时间戳的时间戳格式包括ms:us:ns:mm:ss:hh:month:day:year或mm:ss:hh:month:day:year格式。在另一个实施方式中,传感器单元包括格式转换器单元,用于将时间戳从一种格式转换为另一种格式。
[0043] 根据第三方面,系统从包括传感器和实时时钟(RTC)的多个时间源接收多个时间,其中传感器与ADV通信并且传感器至少包括GPS传感器,以及其中RTC至少包括中央处理单元实时时钟(CPU-RTC)。系统基于每个时间源的时间生成差异直方图,表示GPS传感器的时间与每个其他传感器和RTC的时间之间的差异。系统根据差异直方图对传感器和RTC进行排序。系统从传感器或RTC中的相对于GPS传感器的时间差最小的一个选择时间源。系统基于所选择的时间源生成时间戳,以便为ADV的传感器单元的传感器数据加时间戳。
[0044] 在一个实施方式中,差异直方图包括平均差异直方图,平均差异直方图包括GPS传感器与每个其他传感器和RTC的平均时间差分布。在一个实施方式中,当差异直方图不可用时,系统默认为传感器或RTC的默认排序列表。
[0045] 在一个实施方式中,系统将CPU-RTC的时间信息存储到日志文件中,包括CPU-RTC和GPS传感器的时间的时间差。系统监控CPU-RTC和GPS传感器的时间的时间差。系统根据监控的时间差更新日志文件中的时间信息。在一个实施方式中,时间源包括:LTE、WIFI、CPU RTC、FPGA RTC、FM接收器、V2X传感器或GPS传感器。在一个实施方式中,系统将差异直方图和传感器和RTC的排序记录到日志缓冲器中。
[0046] 根据第四方面,系统确定本地时间源与GPS传感器的时间之间的时间差。系统确定差异的最大限度,以及平稳时间源恢复的最大恢复增量或最大恢复时间间隔。系统确定本地时间源与GPS传感器的时间之间的差异小于最大限度。系统规划时间源的平滑恢复,以在最大恢复时间间隔内将本地时间源收敛(或对准)到GPS传感器的时间。系统基于恢复的时间源生成时间戳,以便为ADV的传感器单元的传感器数据加时间戳。
[0047] 在一个实施方式中,系统确定本地时间源与GPS传感器的时间之间的差值大于最大限度。系统规划时间源的突发恢复,以将本地时间源分配为GPS传感器的时间。
[0048] 在一个实施方式中,系统规划时间源的平滑恢复,以基于与最大恢复增量不同的预定或设定时间增量将本地时间源收敛到GPS传感器的时间。在一个实施方式中,预定时间增量是单个时钟周期间隔。在一个实施方式中,单个时钟周期间隔是10纳秒。
[0049] 在一个实施方式中,最大限度和恢复增量或最大恢复时间间隔由用户预先配置。在一个实施方式中,在检测到来自GPS传感器的信号恢复时,确定本地时间源与GPS传感器的时间之间的时间差。
[0050] 图1是示出根据本公开的一个实施方式的自动驾驶车辆网络配置的框图。参考图1,网络配置100包括可以通过网络102通信地联接到一个或多个服务器103至104的自动驾驶车辆101。尽管示出一个自动驾驶车辆,但多个自动驾驶车辆可以通过网络102联接到彼此和/或联接到服务器103至104。网络102可以是任何类型的网络,例如,有线或无线的局域网(LAN)、诸如互联网的广域网(WAN)、蜂窝网络、卫星网络或其组合。服务器103至104可以是任何类型的服务器或服务器群集,诸如,网络或云服务器、应用服务器、后端服务器或其组合。服务器103至104可以是数据分析服务器、内容服务器、交通信息服务器、地图和兴趣点(MPOI)服务器或者位置服务器等。
[0051] 自动驾驶车辆是指可以被配置成处于自动驾驶模式下的车辆,在所述自动驾驶模式下车辆在极少或没有来自驾驶员的输入的情况下导航通过环境。这种自动驾驶车辆可以包括传感器系统,所述传感器系统具有被配置成检测与车辆运行环境有关的信息的一个或多个传感器。所述车辆和其相关联的控制器使用所检测的信息来导航通过所述环境。自动驾驶车辆101可以在手动模式下、在全自动驾驶模式下或者在部分自动驾驶模式下运行。
[0052] 在一个实施方式中,自动驾驶车辆101包括,但不限于,感知与规划系统110、车辆控制系统111、无线通信系统112、用户接口系统113、信息系统114和传感器系统115。自动驾驶车辆101还可以包括普通车辆中包括的某些常用部件,诸如:发动机、车轮、方向盘、变速器等,所述部件可以由车辆控制系统111和/或感知与规划系统110使用多种通信信号和/或命令进行控制,该多种通信信号和/或命令例如,加速信号或命令、减速信号或命令、转向信号或命令、制动信号或命令等。
[0053] 部件110至115可以经由互连件、总线、网络或其组合通信地联接到彼此。例如,部件110至115可以经由控制器局域网(CAN)总线通信地联接到彼此。CAN总线是被设计成允许微控制器和装置在没有主机的应用中与彼此通信的车辆总线标准。它是最初是为汽车内的复用电气布线设计的基于消息的协议,但也用于许多其它环境。
[0054] 现在参考图2,在一个实施方式中,传感器系统115包括但不限于一个或多个摄像机211、全球定位系统(GPS)单元212、惯性测量单元(IMU)213、雷达单元214以及光探测和测距(LIDAR)单元215。GPS系统212可以包括收发器,所述收发器可操作以提供关于自动驾驶车辆的位置的信息。IMU单元213可以基于惯性加速度来感测自动驾驶车辆的位置和定向变化。雷达单元214可以表示利用无线电信号来感测自动驾驶车辆的本地环境内的对象的系统。在一些实施方式中,除感测对象之外,雷达单元214可以另外感测对象的速度和/或前进方向。LIDAR单元215可以使用激光来感测自动驾驶车辆所处环境中的对象。除其它系统部件之外,LIDAR单元215还可以包括一个或多个激光源、激光扫描器以及一个或多个检测器。摄像机211可以包括用来采集自动驾驶车辆周围环境的图像的一个或多个装置。摄像机211可以是静物摄像机和/或视频摄像机。摄像机可以是可机械地移动的,例如,通过将摄像机安装在旋转和/或倾斜平台上。
[0055] 传感器系统115还可以包括其它传感器,诸如:声纳传感器、红外传感器、转向传感器、油门传感器、制动传感器以及音频传感器(例如,麦克风)。音频传感器可以被配置成从自动驾驶车辆周围的环境中采集声音。转向传感器可以被配置成感测方向盘、车辆的车轮或其组合的转向角度。油门传感器和制动传感器分别感测车辆的油门位置和制动位置。在一些情形下,油门传感器和制动传感器可以集成为集成式油门/制动传感器。
[0056] 在一个实施方式中,车辆控制系统111包括但不限于转向单元201、油门单元202(也被称为加速单元)和制动单元203。转向单元201用来调整车辆的方向或前进方向。油门单元202用来控制电动机或发动机的速度,电动机或发动机的速度进而控制车辆的速度和加速度。制动单元203通过提供摩擦使车辆的车轮或轮胎减速而使车辆减速。应注意,如图2所示的部件可以以硬件、软件或其组合实施。
[0057] 回到图1,无线通信系统112允许自动驾驶车辆101与诸如装置、传感器、其它车辆等外部系统之间的通信。例如,无线通信系统112可以与一个或多个装置直接无线通信,或者经由通信网络进行无线通信,诸如,通过网络102与服务器103至104通信。无线通信系统112可以使用任何蜂窝通信网络或无线局域网(WLAN),例如,使用WiFi,以与另一部件或系统通信。无线通信系统112可以例如使用红外链路、蓝牙等与装置(例如,乘客的移动装置、显示装置、车辆101内的扬声器)直接通信。用户接口系统113可以是在车辆101内实施的外围装置的部分,包括例如键盘、触摸屏显示装置、麦克风和扬声器等。
[0058] 自动驾驶车辆101的功能中的一些或全部可以由感知与规划系统110控制或管理,尤其当在自动驾驶模式下操作时。感知与规划系统110包括必要的硬件(例如,处理器、存储器、存储设备)和软件(例如,操作系统、规划和路线安排程序),以从传感器系统115、控制系统111、无线通信系统112和/或用户接口系统113接收信息,处理所接收的信息,规划从起始点到目的地点的路线或路径,随后基于规划和控制信息来驾驶车辆101。替代地,感知与规划系统110可以与车辆控制系统111集成在一起。
[0059] 例如,作为乘客的用户可以例如经由用户接口来指定行程的起始位置和目的地。感知与规划系统110获得行程相关数据。例如,感知与规划系统110可以从MPOI服务器中获得位置和路线信息,所述MPOI服务器可以是服务器103至104的一部分。位置服务器提供位置服务,并且MPOI服务器提供地图服务和某些位置的POI。替代地,此类位置和MPOI信息可以本地高速缓存在感知与规划系统110的永久性存储装置中。
[0060] 当自动驾驶车辆101沿着路线移动时,感知与规划系统110也可以从交通信息系统或服务器(TIS)获得实时交通信息。应注意,服务器103至104可以由第三方实体进行操作。替代地,服务器103至104的功能可以与感知与规划系统110集成在一起。基于实时交通信息、MPOI信息和位置信息以及由传感器系统115检测或感测的实时本地环境数据(例如,障碍物、对象、附近车辆),感知与规划系统110可以规划最佳路线并且根据所规划的路线例如经由控制系统111来驾驶车辆101,以安全且高效到达指定目的地。
[0061] 服务器103可以是用于为各种客户端执行数据分析服务的数据分析系统。在一个实施方式中,数据分析系统103包括数据收集器121和机器学习引擎122。数据收集器121从各种车辆(自动驾驶车辆或由人类驾驶员驾驶的常规车辆)收集驾驶统计123。驾驶统计123包括指示在不同时间点发出的驾驶命令(例如,油门、制动、转向命令)和由车辆的传感器采集的车辆的响应(例如,速度、加速、减速、方向)的信息。驾驶统计123还可以包括描述在不同时间点的驾驶环境的信息,例如,路线(包括起始和目的地位置)、MPOI、道路状况、天气状况等。
[0062] 基于驾驶统计123,机器学习引擎122出于各种目的生成或训练一组规则、和/或算法和/或预测模型124。在一个实施方式中,算法124可以包括用于感知、预测、决策、规划和/或控制过程的规则或算法,这将在下面进一步详细描述。然后,可以将算法124上传到ADV上,以在实时自动驾驶期间使用。
[0063] 图3A至图3B是示出根据一个实施方式的与自动驾驶车辆一起使用的感知与规划系统的示例的框图。系统300可以被实施为图1的自动驾驶车辆101的一部分,包括但不限于感知与规划系统110、控制系统111和传感器系统115。参考图3A至图3B,感知与规划系统110包括但不限于定位模块301、感知模块302、预测模块303、决策模块304、规划模块305、控制模块306以及路线模块307。
[0064] 模块301至307中的一些或全部可以以软件、硬件或其组合实施。例如,这些模块可以安装在永久性存储装置352中、加载到存储器351中,并且由一个或多个处理器(未示出)执行。应注意,这些模块中的一些或全部可以通信地联接到图2的车辆控制系统111的一些或全部模块或者与它们集成在一起。模块301至307中的一些可以一起集成为集成模块。
[0065] 定位模块301确定自动驾驶车辆300的当前位置(例如,利用GPS单元212)和管理与用户的行程或路线相关的任何数据。定位模块301(也被称为地图与路线模块)管理与用户的行程或路线相关的任何数据。用户可以例如经由用户接口登录并且指定行程的起始位置和目的地。定位模块301与自动驾驶车辆300的诸如地图和路线信息311的其它部件通信,以获得行程相关数据。例如,定位模块301可以从位置服务器和地图与POI(MPOI)服务器获得位置和路线信息。位置服务器提供位置服务,并且MPOI服务器提供地图服务和某些位置的POI,从而可以作为地图和路线信息311的一部分高速缓存。当自动驾驶车辆300沿着路线移动时,定位模块301也可以从交通信息系统或服务器获得实时交通信息。
[0066] 基于由传感器系统115提供的传感器数据和由定位模块301获得的定位信息,感知模块302确定对周围环境的感知。感知信息可以表示普通驾驶员在驾驶员正驾驶的车辆周围将感知到的东西。感知可以包括例如采用对象形式的车道配置、交通灯信号、另一车辆的相对位置、行人、建筑物、人行横道或其它交通相关标志(例如,停止标志、让行标志)等。车道配置包括描述一条或多条车道的信息,例如,车道的形状(例如,直线车道或弯曲车道)、车道的宽度、道路中的车道数量、单向或双向车道、合流或分流车道、出口车道等。
[0067] 感知模块302可以包括计算机视觉系统或计算机视觉系统的功能,以处理并分析由一个或多个摄像机采集的图像,从而识别自动驾驶车辆环境中的对象和/或特征。所述对象可以包括交通信号、道路边界、其它车辆、行人和/或障碍物等。计算机视觉系统可以使用对象识别算法、视频跟踪以及其它计算机视觉技术。在一些实施方式中,计算机视觉系统可以绘制环境地图,跟踪对象,以及估算对象的速度等。感知模块302也可以基于由诸如雷达和/或LIDAR的其它传感器提供的其它传感器数据来检测对象。
[0068] 针对每个对象,预测模块303预测在不同情况下对象将如何表现。预测是鉴于地图/路线信息311和交通规则312的集合、基于在时间点感知驾驶环境的感知数据来执行的。例如,如果对象是在相对方向上的车辆并且当前驾驶环境包括交叉路口,预测模块303将预测车辆是否可能直线前进或转弯。如果感知数据指示交叉路口没有交通信号灯,则预测模块303可预测车辆可能要在进入交叉路口之前完全停止。如果感知数据指示车辆当前位于仅限左转的车道或仅限右转的车道,则预测模块303可预测车辆将非常可能分别进行左转或右转。
[0069] 针对每个对象,决策模块304作出关于如何处置对象的决定。例如,针对特定对象(例如,交叉路线中的另一车辆)以及描述对象的元数据(例如,速度、方向、转弯角度),决策模块304决定如何与所述对象相遇(例如,超车、让行、停止、超过)。决策模块304可以根据诸如交通规则或驾驶规则312的规则集来作出此类决定,所述规则集可以存储在永久性存储装置352中。
[0070] 路线模块307被配置成提供从起始点到目的地点的一个或多个路线或路径。例如,对于从用户接收的从起始位置到目的地位置的给定行程,路线模块307获得路线和地图信息311并确定从起始位置到达目的地位置的所有可能路线或路径。路线模块307可以以地形图的形式为确定的每个路线生成从起始位置到达目的地位置的参考路线。参考路线指的是不受任何其他事物诸如其他车辆、障碍物或交通状况等干扰的理想的路线或路径。换而言之,如果道路上没有其他车辆、行人或障碍物,则ADV应该精确或严密地跟从参考路线。然后,地形图被提供给决策模块304和/或规划模块305。决策模块304和/或规划模块305检查所有可能的路线,以考虑到由其他模块提供的其他数据,诸如来自定位模块301的交通状况、感知模块302感知的驾驶环境以及预测模块303预测的交通状况来选择和修改最佳路线中的一个。用于控制ADV的实际路径或路线可以与路线模块307提供的参考路线接近或不同于参考路线,这取决于在那个时间点的具体驾驶环境。
[0071] 基于针对所感知到的对象中的每个的决定,规划模块305为自动驾驶车辆规划路径或路线以及驾驶参数(例如,距离、速度和/或转弯角度),使用由路线模块307提供的参考路线作为基准。换而言之,针对给定的对象,决策模块304决定对该对象做什么,而规划模块305确定如何去做。例如,针对给定的对象,决策模块304可以决定超过所述对象,而规划模块305可以确定在所述对象的左侧还是右侧超过。规划和控制数据由规划模块305生成,包括描述车辆300在下一移动循环(例如,下一路线段/路径段)中将如何移动的信息。例如,规划和控制数据可以指示车辆300以30英里每小时(mph)的速度移动10米,随后以25mph的速度变到右侧车道。
[0072] 基于规划和控制数据,控制模块306根据由规划和控制数据限定的路线或路径通过将适当的命令或信号发送到车辆控制系统111来控制并驾驶自动驾驶车辆。所述规划和控制数据包括足够的信息,以沿着路径或路线在不同的时间点使用适当的车辆设置或驾驶参数(例如,油门、制动和转弯命令)将车辆从路线或路径的第一点驾驶到第二点。
[0073] 在一个实施方式中,规划阶段在多个规划周期中执行,规划周期也被称为驾驶周期,例如,在100毫秒(ms)的每个时间间隔中。对于每个规划周期或驾驶周期,将基于规划和控制数据发出一个或多个控制命令。换而言之,针对每100ms,规划模块305规划下一个路线段或路径段,例如,包括目标位置和ADV到达目标位置所需的时间。替代地,规划模块305可以进一步指定具体的速度、方向和/或转向角度等。在一个实施方式中,规划模块305针对下一个预先确定的时间段(诸如5秒)规划路线段或路径段。针对每个规划周期,规划模块305基于在前一个周期中规划的目标位置规划当前周期(例如,接下来的5秒)的目标位置。然后,控制模块306基于当前周期的规划和控制数据生成一个或多个控制命令(例如,油门、制动和转向控制命令)。
[0074] 应注意,决策模块304和规划模块305可以集成为集成模块。决策模块304/规划模块305可以包括导航系统或导航系统的功能,以确定自动驾驶车辆的驾驶路径。例如,导航系统可以确定用于实现自动驾驶车辆沿着以下路径移动的一系列速度和前进方向:所述路径在使自动驾驶车辆沿着通往最终目的地的基于车行道的路径前进的同时,基本上避免感知到的障碍物。目的地可以根据经由用户接口系统113进行的用户输入来设定。导航系统可以在自动驾驶车辆正在运行的同时动态地更新驾驶路径。导航系统可以将来自GPS系统和一个或多个地图的数据合并,以确定用于自动驾驶车辆的驾驶路径。
[0075] 图4是示出根据一个实施方式的自动驾驶的系统架构的框图。系统架构400可以表示如图3A和3B所示的自动驾驶系统的系统架构。参考图4,系统架构400包括但不限于应用层401、规划和控制(PNC)层402、感知层403、驱动层404、固件层405和硬件层406。应用层401可以包括与自动驾驶车辆的用户或乘客交互的用户接口或配置应用程序,例如,与用户接口系统113相关联的功能。PNC层402可以至少包括规划模块305和控制模块306的功能。感知层403可以至少包括感知模块302的功能。在一个实施方式中,具有包括预测模块303和/或决策模块304的功能的附加层。替代地,这样的功能可以包括在PNC层402和/或感知层403中。系统架构400还包括驱动层404、固件层405和硬件层406。固件层405可以至少表示传感器系统115的功能,所述功能可以以现场可编程门阵列(FPGA)的形式实现。硬件层406可以表示自动驾驶车辆的硬件,例如控制系统111和/或传感器系统115。层401-403可以经由装置驱动层404与固件层405和硬件层406通信。
[0076] 图5是示出根据本公开的一个实施方式的传感器系统的示例的框图。参考图5,传感器系统115包括多个传感器510和联接到主机系统110的传感器单元500。主机系统110表示如上所述的规划和控制系统,所述的规划和控制系统可以至少包括一些模块,如图3A和3B所示。传感器单元500可以以FPGA装置或ASIC(专用集成电路)装置的形式实现。在一个实施方式中,传感器单元500尤其包括一个或多个传感器数据处理模块501(也简称为传感器处理模块)、数据传送模块502和传感器控制模块或逻辑503。模块501-503可以通过传感器接口504与传感器510通信,并通过主机接口505与主机系统110通信。可选地,可以利用内部或外部缓冲器506来缓冲数据以进行处理。
[0077] 在一个实施方式中,针对接收路径或上游方向,传感器处理模块501被配置为经由传感器接口504从传感器接收传感器数据并处理传感器数据(例如,格式转换、错误检查),传感器数据可以临时存储在缓冲器506中。数据传送模块502被配置为使用与主机接口505兼容的通信协议将处理后的数据传送到主机系统110。类似地,针对传输路径或下游方向,数据传送模块502被配置为接收来自主机系统110的数据或命令。然后,数据由传感器处理模块501处理成与相应的传感器兼容的格式。然后,处理后的数据被传输到传感器。
[0078] 在一个实施方式中,传感器控制模块或逻辑503被配置为响应于从主机系统(例如,感知模块302)经由主机接口505接收到的命令,控制传感器510的某些操作,例如,激活采集传感器数据的时间。主机系统110可以配置传感器510以协作和/或同步的方式采集传感器数据,使得可以在任何时间点利用传感器数据感知车辆周围的驾驶环境。
[0079] 传感器接口504可以包括以太网、USB(通用串行总线)、LTE(长期演进)或蜂窝、WiFi、GPS、摄像机、CAN、串行(例如,通用异步接收发射器或UART)中的一个或多个、SIM(用户识别模块)卡和其他通用输入/输出(GPIO)接口。主机接口505可以是任何高速或高带宽接口,例如PCIe。传感器510可以包括在自动驾驶车辆中使用的各种传感器,例如摄像机、LIDAR装置、RADAR装置、GPS接收器、IMU、超声波传感器、GNSS(全球导航卫星系统)接收器、LTE或蜂窝SIM卡、车辆传感器(例如,油门传感器、制动器传感器、转向传感器)和系统传感器(例如,温度传感器、湿度传感器、压力传感器)等。
[0080] 例如,摄像机可以通过以太网或GPIO接口联接。GPS传感器可以通过USB或特定的GPS接口联接。车辆传感器可以通过CAN接口联接。RADAR传感器或超声波传感器可以通过GPIO接口联接。LIDAR装置可以通过以太网接口联接。外部SIM模块可以通过LTE接口联接。类似地,可以将内部SIM模块插入传感器单元500的SIM插口上。诸如UART的串行接口可以与控制台系统联接以用于调试目的。
[0081] 应注意,传感器510可以是任何类型的传感器并且由各个销售商或供应商提供。传感器处理模块501被配置为处理不同类型的传感器及其各自的数据格式和通信协议。根据一个实施方式,每个传感器510与特定通道相关联,该特定通道用于处理传感器数据并在主机系统110和相应的传感器之间传送处理后的传感器数据。每个通道包括已被配置或编程为处理相应的传感器数据和协议的特定传感器处理模块和特定数据传送模块。
[0082] 在一个实施方式中,传感器单元500包括高精度时间生成电路517。高精度时间生成电路517可以生成每个传感器510使用的时间和/或时间戳,以跟踪传感器数据何时被传感器510传输或采集/触发,和/或由传感器单元500接收,如图6A至图6B所示。
[0083] 现在参考图6A,高精度时间生成电路517可以包括时间同步单元550、GPS传感器551和本地定时器553。时间同步单元550可以相对于从GPS传感器551的每秒脉冲(PPS)信号导出的时间同步本地定时器553。PPS可以用于对准本地定时器553以进行达到纳秒的精确时间测量。GPS传感器551可以是图2的传感器系统115的GPS单元212的一部分,或者GPS传感器551可以是集成在高精度时间生成电路517内的专用GPS传感器。本地定时器553可以为传感器单元500生成时间。本地定时器553可以是来自任何本地RTC(例如,CPU RTC或FPGA RTC)或传感器单元500的传感器的定时器,或者是从诸如蜂窝源的外部源(例如,4G、长期演进(LTE))、5G、WIFI信号源、FM接收器等)获取的定时器。
[0084] 参考图6B,时间同步单元550可以包括监控器模块555、调整模块557、毫秒生成器603、微秒生成器605、纳秒生成器607、解复用器609和配置611。毫秒生成器603、微秒生成器
605和纳秒生成器607可以基于本地定时器553的振荡器分别生成毫秒、微秒和纳秒振荡周期(例如,三个不同粒度的振荡器计数器)。配置611可以配置选择信号以选择毫秒生成器
603、微秒生成器605和纳秒生成器607的输出中的哪个将被路由到监控器模块555。监控器模块555可以监控生成的振荡周期以对这些周期进行计数。调整模块557可以调整计数(或修改计数表示),以使本地定时器553与来自GPS传感器551的PPS信号同步。在一个实施方式中,用于配置611的选择信号可以由传感器单元500的用户或由反馈回路中的监控器模块
555/调整模块557编程。例如,如果确定本地定时器553是相对精确的,则用户可以配置禁用毫秒生成器。
[0085] 取决于所使用的晶体振荡器的类型,本地定时器553可以具有0.1至100ppm的精度,例如,任何脉冲可能以0.1至100微秒偏移,而来自GPS传感器551的每秒脉冲(PPS)信号具有小于0.1ppm的精确度,或者对于每秒每个脉冲其偏差小于0.1微秒。对于0.1ppm GPS PPS信号,来自GPS传感器551的接收到的PPS信号可以维持连续脉冲每秒在999,999.9和1,000,000.1微秒之间,而典型的100ppm本地定时器553可以维持连续脉冲每秒在999,900和
1,000,100微秒之间。此外,由于本地定时器553使用的晶体振荡器IC的环境温度的变化,本地定时器553的脉冲偏差的变化可以实时改变。因此,目的在于实时调整或同步本地定时器
553以匹配GPS传感器551。
[0086] 为了将本地定时器553与GPS传感器551同步,在一个实施方式中,GPS传感器551接收GPS脉冲信号(PPS),所述GPS脉冲信号是由以一定的精确度,例如,<0.1ppm在空间中广播其信号的卫星传输的RF信号。在一些实施方式中,GPS传感器551从第一GPS卫星接收PPS信号,如果第一GPS卫星超出范围,则接着接收来自第二GPS卫星的PPS信号。由于GPS卫星使用自己的精确时间测量,每颗卫星都有自己的机载原子钟组,因此来自GPS卫星的PPS信号可以被视为一个或多个参考定时器。然而,应注意,因为本地定时器553被实时调整以匹配任何一个GPS PPS信号,因此假设当存在两个或多个不同GPS卫星的GPS PPS信号时,任何时间差不构成问题,这是因为本地定时器553可以实时平滑地同步,如下面进一步描述的。
[0087] 一旦接收到GPS PPS信号,监控器模块555可以确定PPS信号的时间和本地定时器553的时间的任何偏移,并且可以基于所确定的偏移生成第二本地实时时钟/定时器。例如,基于PPS信号,最初可以由GPS(国家海洋电子协会)NMEA数据信息提供精确到秒的日期和时间信息(协调世界时或UTC格式)。接下来,在一个实施方式中,毫秒生成器603可以使用本地定时器553生成接近一毫秒的振荡计数(例如,第一粒度)。可以使用分频器电路生成接近1毫秒的振荡计数,以划分本地定时器553的信号频率。然后,监控器模块555可以从毫秒生成器603检测或计数多个周期(例如,999个周期),用于一秒的GPS PPS信号时间间隔,例如,本地定时器553将GPS PPS信号滞后约1毫秒。因为毫秒生成器603滞后于GPS PPS,在一个实施方式中,调整模块557调整毫秒生成器输出以表示每次振荡1.001毫秒。毫秒生成器603然后为每秒生成以下1000个振荡表示:0.000,1.001,2.002,......,999.999和1001毫秒。因此,从毫秒生成器603开始的第999个周期计数到999.999毫秒。
[0088] 接下来,微秒生成器605可以使用本地定时器553生成接近1微秒的振荡计数。可以使用第二分频器电路生成接近1微秒的振荡计数(例如,第二粒度),以划分本地定时器553的信号频率。监控器模块555可以从微秒生成器605计数998个周期,或者针对1毫秒的GPS PPS时间间隔计数2微秒偏移。同样地,因为微秒生成器605滞后于GPS PPS,所以调整模块557调整微秒生成器输出以表示每次振荡1.002微秒。微秒生成器605然后为每毫秒生成以下1000个振荡表示:0.000,1.002,2.004,......,999.996,1000.998和1002微秒。因此,第
998个周期计数到999.996微秒。
[0089] 接下来,纳秒生成器607可以使用本地定时器553生成接近1纳秒的振荡计数。可以使用第三分频器电路生成接近1纳秒的振荡计数(例如,第三粒度),以划分本地定时器553的信号频率。监控器模块555可以从纳秒生成器607计数997个周期,或者检测1微秒的GPS PPS信号时间间隔的3纳秒偏移。同样地,调整模块557可以调整纳秒生成器输出以表示每次振荡1.003纳秒。纳秒生成器607然后为每微秒生成以下1000个振荡表示:0.000,1.003,2.006,......,999.991,1000.994,1001.997和1003纳秒。因此,从纳秒生成器607开始的第
997个周期计数到999.991纳秒。这样,任何生成器输出(例如,表示)或其组合可以实时地生成高精度时间。然后,高精度时间可以被提供给传感器单元500的传感器。在上面的示例中,使用纳秒生成器,生成的时间具有高达1纳秒的精度。应注意,尽管描述了三个生成器(例如,三个粒度),但是可以使用任何数量的生成器和粒度来生成高精度时间。
[0090] 在一些实施方式中,配置611可以通过解复用器609选择性地启用/禁用生成器603至607中的任何一个。该选择可以打开/关闭任何生成器。当仅需要输出的子集时,该选择用于选择生成器输出(例如,仅纳秒生成器)的子集。在另一个实施方式中,监控器模块555缓冲(例如,保存)不同粒度的偏移,并且如果GPS传感器信号丢失则保持第一、第二和第三计数值(例如,每次振荡的值表示),直到再次重新获得GPS传感器信号。
[0091] 图7是示出根据一个实施方式的方法的流程图。过程700可以由处理逻辑执行,所述处理逻辑可以包括软件、硬件或其组合。例如,过程700可以由图5的传感器单元500执行。参考图7,在框701处,处理逻辑在传感器单元处接收来自ADV的GPS传感器的全球定位系统(GPS)脉冲信号,其中GPS脉冲信号是卫星传输到GPS传感器的RF信号,其中传感器单元联接到安装在ADV上的多个传感器和主机系统,其中主机系统包括感知模块和规划控制(PNC)模块,其中感知模块基于从传感器获得并由传感器单元的处理模块处理的传感器数据来感知ADV周围的驾驶环境,并且其中PNC模块用于基于感知数据规划路径以自动地驾驶ADV。在框
702处,处理逻辑接收来自传感器单元的本地振荡器的第一本地振荡器信号。在框703处,处理逻辑实时同步第一本地振荡器信号到GPS脉冲信号,包括基于GPS脉冲信号修改第一本地振荡器信号。在框704处,处理逻辑基于同步的第一本地振荡器信号生成第二振荡器信号,其中第二振荡器信号被提供给至少一个传感器,以用作操作传感器单元的时钟信号。
[0092] 在一个实施方式中,同步本地振荡器包括:使用本地振荡器生成具有第一粒度的第一计数器,监控第一计数器以计数在第一粒度的振荡达到GPS脉冲信号的时间间隔的次数,其中每个计数表示在第一粒度的振荡,基于在第一粒度的被监控的第一计数器计算第一计数值,以及基于计算的第一计数值修改第一计数器,以使得每个计数表示在第一粒度的振荡的一部分,以同步在第一粒度的本地振荡器。
[0093] 在另一个实施方式中,同步本地振荡器包括:使用本地振荡器生成具有第二粒度的第二计数器,监控第二计数器以计数在第二粒度的振荡达到GPS脉冲信号的时间间隔的次数,其中每个计数表示在第二粒度的振荡,基于在第二粒度的被监控的第二计数器计算第二计数值,以及基于计算的第二计数值修改第二计数器,以使得每个计数表示在第二粒度的振荡的一部分,以同步在第二粒度的本地振荡器。
[0094] 在另一个实施方式中,同步本地振荡器包括:使用本地振荡器生成具有第三粒度的第三计数器,监控第三计数器以计数在第三粒度的振荡达到GPS脉冲信号的时间间隔的次数,其中每个计数表示在第三粒度的振荡,基于在第三粒度的被监控的第三计数器计算第三计数值,以及基于计算的第三计数值修改第三计数器,以使得每个计数表示在第三粒度的振荡的一部分,以同步在第三粒度的本地振荡器。
[0095] 在另一个实施方式中,第一粒度是毫秒粒度,第二粒度是微秒粒度,第三粒度是纳秒粒度。
[0096] 在另一个实施方式中,处理逻辑进一步禁止生成用于同步的第一、第二或第三计数器中的任何一个。在另一个实施方式中,如果GPS传感器信号丢失,处理逻辑进一步保持第一、第二和第三计数值,直到再次重新获得GPS传感器信号。
[0097] 图8是示出根据一个实施方式的传感器单元的示例的框图。图8类似于图5,除了添加了时间戳同步集线器装置519。时间戳同步集线器装置519可以为任何传感器生成一个或多个时间戳(例如,接收RX时间戳、传输TX时间戳和/或触发时间戳),或者简单地向任何传感器510提供时间信息。时间戳同步集线器装置519可以以各种方式联接到每个传感器,而每个传感器联接到TX时间戳生成器、RX时间戳生成器或联接到两者。RX/TX和触发时间戳的准确度对于跟踪传感器数据采集时间至关重要。
[0098] 图9是示出根据一个实施方式的时间戳同步集线器装置的示例的框图。时间戳同步集线器装置519包括时间生成或GPS脉冲单元901、时间戳格式转换器903、TX时间戳生成器911至913和RX时间戳生成器921至923。时间戳同步集线器装置519与多个传感器(例如,S1、S2和S3)联接,以为传感器提供TX/RX和/或触发时间戳。时间生成或GPS脉冲单元901可以为传感器S1至S3生成时间或提供GPS脉冲。时间戳格式转换器903可以将一种时间戳格式转换为另一种时间戳格式,例如,时间戳可以从ms:us:ns:mm:ss:hh:month:day:year的格式转换为mm:ss:hh:month:day:year的格式。时间戳格式可以包括年、月、日、小时、分钟、秒、毫秒、微秒和纳秒的任何组合和/或排序。因此,时间戳格式转换器903可以应一些传感器(例如传感器S1和S3)的时间输入参数的要求将一种格式转换为另一种格式。
[0099] TX时间戳生成器911至913可以为传感器单元的传感器生成传输时间戳。在一个实施方式中,TX时间戳生成器可以简单地将GPS PPS路由到一个或多个传感器以向传感器(例如,S1)提供GPS PPS信号。S1传感器的示例包括威力登(Velodyne)的LIDAR传感器,其接收GPS时间信息作为输入。GPS时间输入信息用于将LIDAR传感器同步到GPS时钟。在传感器同步之后,LIDAR传感器可以触发/采集深度图像并包括具有深度图像的触发时间戳。第二时间戳可以是传输时间戳,所述传输时间戳表示传感器S1将传感器数据从S1传输到传感器单元500的时间。在这里,触发时间戳和/或传输时间戳可以作为元数据与来自传感器S1的深度图像一起发送到传感器单元500。
[0100] S1传感器的另一示例包括摄像机传感器,所述摄像机传感器可以接收mm:ss:hh:month:day:year格式化时间信息作为输入参数。在这种情况下,TX时间戳生成器生成要发送到摄像机传感器的mm:ss:hh:month:day:year格式TX时间戳(由时间生成单元901提供)。
摄像机传感器可以触发/采集具有触发时间戳的RGB图像,所述触发时间戳可以从TX时间戳导出(例如,考虑到其间的任何延迟)。表示传感器数据何时传送到传感器单元的第二时间戳(传输时间戳)可以包括触发时间戳,作为时间信息元数据。传感器数据连同时间信息元数据然后可以从摄像机传感器传输到传感器单元500。S1传感器的其他示例包括RADAR传感器、SONAR传感器和接收时间输入参数的任何传感器。
[0101] 在另一个实施方式中,TX时间戳生成器生成mm:ss:hh:month:day:year格式的时间戳并将生成的时间戳提供给一个或多个传感器,mm:ss:hh:month:day:year时间戳已与GPS PPS信号同步。这些传感器(例如,S3)可以将传感器数据和时间戳元数据(未改变的)直接传输到主机系统110。当不再有可用的通信信道或者当传感器数据仅需要低带宽时,可以建立到主机系统110的直接联接,诸如以太网连接。S3传感器的示例可以包括以太网、摄像机和/或RADAR传感器等。
[0102] RX时间戳生成器921-923可以在传感器单元500接收传感器数据时生成接收时间戳,并将生成的接收时间戳作为时间元数据添加到传感器数据。因此,当传感器数据被发送到主机系统110时,具有关于传感器单元500获取传感器数据的时间的可用信息。使用RX时间戳生成器的传感器的示例是S1和S2。S1和S2之间的区别在于S1还提供传输(TX)和/或触发时间戳信息,而S2仅提供接收(RX)时间戳信息。S2传感器的示例包括LIDAR、摄像机和/或RADAR传感器等。
[0103] 在另一个实施方式中,时间戳同步集线器装置519与主机系统110联接(例如,通过PCIe总线)以向主机系统110提供时间信息(例如,时间信息/时间戳313)。所提供的时间信息允许主机系统110将主机系统110的RTC(例如,CPU-RTC)同步到所提供的时间,使得在传感器单元500和主机系统110之间使用唯一全球时间。此后,用于ADV的主机系统110的规划和控制模块可以使用与传感器单元500同步的主机系统110的本地RTC来自主地规划和控制ADV。
[0104] 图10是示出根据一个实施方式的传感器单元的示例的框图。图10类似于图8,除了添加了时间源排序模块521。时间源排序模块521可以根据要用作本地RTC(例如,如图6A的本地定时器553)的时间源的适合性对可用时间源的数量进行排序。
[0105] 图11是示出根据一个实施方式的时间源排序电路的示例的框图。参考图11,时间源排序模块521可以包括子模块,例如接收模块1101、直方图生成器1103、直方图排序模块1105、直方图选择模块1107、时间戳生成器1109、CPU-RTC监控器模块1111和记录器1113。时间源1120可以包括GPS传感器、LTE、CPU RTC、WIFI、FPGA RTC、FM接收器和V2X传感器。
[0106] 接收模块1101可以从不同时间源1120接收时间戳或时间信息。直方图生成器1103可以基于从不同时间源1120接收的时间戳或时间信息生成差异直方图。在一个实施方式中,差异直方图可以是在一段时间内平均的差异直方图,例如几小时或一天。在另一个实施方式中,在一段时间内平均的差异直方图可以是运行平均值。直方图排序模块1105可以使用GPS传感器时间源作为参考时间源对时间源进行排序,例如,与GPS传感器的时间相比,时间源从最小到最大时间差排序。直方图选择模块1107可以选择具有与GPS传感器时间源的时间差最小的时间的时间源。时间戳生成器1109可以基于所选择的时间源生成时间信息或时间戳。CPU-RTC监控器模块1111可以监控与CPU-RTC和GPS传感器的时间不同的时间。记录器1113可以将CPU-RTC的时间信息存储到日志文件,诸如CPU-RTC和GPS传感器的增量时间或时间的时间差。
[0107] 当在地下停车库中打火ADV点火装置时(例如,当没有GPS信号时),ADV使用时间源排序模块521。在一个实施方式中,因为传感器单元500或主机系统110仍然需要相对准确的时间来生成时间戳,所以如果缺少关于传感器单元500或ADV的可用时间源的准确度的信息,则可以用默认的时间源排序列表确定优选时间源。默认排序列表的示例可以按照诸如GPS、FPGA RTC、WIFI、LTE和CPU RTC的顺序对各种时间源进行排序。在这种情况下,如果唯一可用的时间源来自FPGA RTC和WIFI信号,则FPGA RTC时间源具有优先级,并且是建立本地时间的优选时间源,例如图6A的本地定时器553的本地时间。然而,一旦来自GPS传感器的信号可用,在一个实施方式中,时间源排序模块521基于排序系统确定不同可用时间源的准确度。
[0108] 在一个实施方式中,时间源排序模块521通过排序系统、基于许多可用时间源的绝对差值来生成直方图。可以经过几轮来生成直方图或差异直方图,或者这些直方图可以在预定时间段内被平均,或者只需要GPS信号可用。由差异直方图确定的与GPS传感器的最接近的时间源(例如,最小差异)被选择为当GPS信号不可用时(例如,下次ADV在地下车库中开始点火时)要使用的最佳时间源。在一个实施方式中,CPU RTC被预先配置为优选的时间源。在这种情况下,记录器1113将CPU RTC的差异直方图、增量时间或平均增量时间写入日志文件或日志缓冲区。差异直方图、增量时间或平均增量时间记录CPU RTC和GPS时间的时间差。
在下一次没有GPS信号的情况下点火时,传感器单元500则可以基于增量时间调整CPU RTC并使用调整后的CPU RTC作为本地时间。在一个实施方式中,当GPS信号可用时,可以更新增量时间以反映CPU RTC的任何偏差。
[0109] 图12是根据一个实施方式排序时间源的方法的流程图。过程1200可以由处理逻辑执行,所述处理逻辑可以包括软件、硬件或其组合。例如,过程1200可以由图11的时间源排序模块521执行。参考图12,在框1201处,处理逻辑从包括传感器和RTC的多个时间源接收多个时间,其中传感器在与ADV的通信中并且传感器至少包括GPS传感器,并且其中RTC至少包括中央处理单元实时时钟(CPU-RTC)。应注意,CPU-RTC是传感器单元的CPU的RTC。RTC和传感器时间源的示例包括GPS传感器、LTE、CPU RTC、WIFI、FPGARTC、FM接收器和V2X传感器。在框1202处,处理逻辑基于每个时间源的时间生成差异直方图,表示GPS传感器的时间与其他传感器和RTC中的每个的时间之间的差异。在框1203处,处理逻辑基于差异直方图对传感器和RTC进行排序。在框1204处,处理逻辑从传感器或RTC中的相对于GPS传感器的时间差最小的一个选择时间源。在框1205处,处理逻辑基于所选择的时间源生成时间戳,以对ADV的传感器单元的传感器数据加时间戳。
[0110] 在一个实施方式中,差异直方图包括平均差异直方图,平均差异直方图包括GPS传感器和其他传感器和RTC中的每个的平均时间差分布。在一个实施方式中,当差异直方图不可用时,处理逻辑默认为传感器或RTC的默认排序列表。
[0111] 在一个实施方式中,处理逻辑进一步将CPU-RTC的时间信息存储到日志文件中(包括CPU-RTC和GPS传感器的时间的时间差),监控CPU-RTC和GPS传感器的时间的时间差,并根据监控的时间差更新日志文件中的时间信息。在另一个实施方式中,时间信息存储为二进制数据。在一个实施方式中,时间信息存储在日志缓冲器中。在一个实施方式中,时间源包括:LTE、WIFI、CPU RTC、FPGA RTC、FM接收器、V2X传感器或GPS传感器。在一个实施方式中,处理逻辑进一步将差异直方图和传感器和RTC的排序记录到日志文件或日志缓冲器中。
[0112] 图13是示出根据一个实施方式的传感器单元的示例的框图。除了添加了时间源恢复模块523之外,图13类似于图10。当GPS信号不可用一段时间然后变得可用时,时间源恢复模块523可以恢复本地时间源,例如,恢复本地时间源和GPS时间源之间的时间差异在一段时间内的积聚或时钟漂移。
[0113] 图14是示出根据一个实施方式的时间源恢复电路的示例的框图。参考图14,时间源恢复模块523包括子模块,诸如时间差确定器模块1401、最大限度/步长确定器模块1403、平滑恢复模块1405、突发恢复模块1407和GPS传感器恢复检测器1409。
[0114] 时间差确定器模块1401可以确定本地时间源和GPS时间源之间的时间差或时间差异。最大限度/步长确定器模块1403可以确定在时间恢复待被平滑地执行而非突然执行的情况下时间差异的最大限度。例如,如果时间差异低于预定的最大限度,则根据平滑逻辑执行时间恢复。如果时间差异高于最大限度,则根据突发逻辑执行时间恢复,例如,将本地时间与GPS时间立即对准。最大限度/步长确定器模块1403还可以根据平滑逻辑确定用于平滑时间源恢复的恢复增量/步长(或恢复时间间隔)。平滑恢复模块1405包括平滑逻辑并且可以执行平滑时间源恢复。平滑地恢复是当本地时间源使用预定的增量步长在预定时间段内赶上或与GPS时间对准的情况。突发恢复模块1407可以执行突发时间源恢复,例如,突然或立即将时间源的时间与GPS时间对准。当GPS信号从不可用转换为可用时和/或当GPS信号从可用转换为不可用时,GPS传感器恢复检测器1409可以检测GPS信号的转换。
[0115] 为了说明,当ADV在地面道路上并且可以访问可用的GPS信号,本地时间(或本地实时时钟)可以由GPS PPS获取和同步。当ADV进入一段隧道时,GPS信号可能变得不可用,并且诸如CPU RTC的本地RTC或传感器可以接管时间源的功能。在隧道的范围内,因为本地时间源可能是不准确的,所以由于时钟漂移而产生时间差异(例如,本地时间源的时间与GPS时间之间的时间差)。一旦ADV离开隧道,GPS传感器恢复检测器1409检测到GPS信号转换。然后,时间差确定器模块1401确定或计算本地时间源(可以基于如上所述的时间源差异直方图选择本地时间源)和GPS时间之间的时间差异。然后,最大限度/步长确定器模块1403将时间差与最大限度(最大限度可以由用户预先配置)进行比较,如果时间差小于最大限度,则将平滑逻辑应用于(使用用户预先配置的恢复增量/步长)本地时间源以将本地时间源与GPS时间对准。否则,将突发逻辑应用于本地时间源以将本地时间源与GPS时间对准。
[0116] 图15是示出根据一个实施方式的平滑时间源恢复的示例的时间图。参考图15,在时间=0,当检测到GPS信号从不可用转换为可用(例如,变得可用)时,初始时间差被确定为滞后200纳秒(ns)。将初始时间差与预定的最大限度(例如,500ms)进行比较,并确定其小于最大限度。在这种情况下,因为确定初始时间差小于最大限度,所以应用平滑逻辑。此外,由于本地时间源滞后于GPS时间,因此本地时间源递增地增加(根据预先配置的步增量或最大增量间隔)以赶上GPS时间。在一个实施方式中,基于传感器单元的数字时钟的数字时钟周期时间间隔预先确定增量步长。例如,增量步长可以是10ns,因为传感器单元的时钟周期具有10ns的时间间隔。在这种情况下,对于每个数字时钟周期(例如,10ns),本地时间源将时间增加周期间隔再加上增量,例如20ns。在20个数字时钟周期(或200ns)之后,本地时钟源将与GPS时间对准。应注意,增量步长为10ns的500ms的最大限度将提供500ms的最大时间恢复周期。在这里,可以调整增量步长以加速或减慢平滑恢复时间间隔。
[0117] 如果确定初始时间差大于500ms,则本地时间源突然与GPS时间对准而无需任何平滑逻辑。应注意,调整时间源不会干扰传感器单元的本地数字时钟,但是只调整为传感器单元的一个或多个传感器提供TX/RX和触发时间戳的时间戳时钟源。虽然500ms和10ns分别被描述为最大限度和恢复增量/步长,但是任何时间间隔都可以用作最大限度和时间增量。
[0118] 图16是根据一个实施方式恢复时间源的方法的流程图。过程1600可以由处理逻辑执行,所述处理逻辑可以包括软件、硬件或其组合。例如,过程1600可以由图14的时间源恢复模块523执行。参考图16,在框1601处,处理逻辑确定本地时间源与GPS传感器的时间之间的时间差。在框1602处,处理逻辑确定差的最大限度和用于平滑时间源恢复的最大恢复增量(例如,步增量)或最大恢复时间间隔。在框1603处,处理逻辑确定本地时间源与GPS传感器的时间之间的差异小于最大限度。在框1604处,处理逻辑规划时间源的平滑恢复,以在最大恢复时间间隔内将本地时间源收敛到GPS传感器的时间。在框1605处,处理逻辑基于恢复的时间源生成时间戳(RX/TX或触发时间戳),以对ADV的传感器单元的传感器数据加时间戳。
[0119] 在一个实施方式中,处理逻辑进一步确定本地时间源与GPS传感器的时间之间的差值大于最大限度。处理逻辑然后规划时间源的突发恢复以将本地时间源分配为GPS传感器的时间。在一个实施方式中,处理逻辑进一步规划时间源的平滑恢复,以基于与最大恢复增量不同的预定时间增量将本地时间源收敛到GPS传感器的时间。
[0120] 在一个实施方式中,预定时间增量(或步长)是传感器单元的单个时钟周期间隔。在另一个实施方式中,单个时钟周期间隔是10纳秒。在一个实施方式中,最大限度和恢复增量或最大恢复时间间隔由用户预先配置。在一个实施方式中,在检测到来自GPS传感器的信号恢复时,确定本地时间源与GPS传感器的时间之间的时间差。
[0121] 图17是示出可以与本公开的一个实施方式一起使用的数据处理系统的示例的框图。例如,系统1500可以表示以上所述的执行上述过程或方法中的任一个的任何数据处理系统,例如,图1的感知与规划系统110或者服务器103至104中的任一个。系统1500可以包括许多不同的部件。这些部件可以实施为集成电路(IC)、集成电路的部分、分立电子装置或适用于电路板(诸如,计算机系统的主板或插入卡)的其它模块或者实施为以其它方式并入计算机系统的机架内的部件。
[0122] 还应注意,系统1500旨在示出计算机系统的许多部件的高阶视图。然而,应当理解的是,某些实施例中可以具有附加的部件,此外,其它实施例中可以具有所示部件的不同布置。系统1500可以表示台式计算机、膝上型计算机、平板计算机、服务器、移动电话、媒体播放器、个人数字助理(PDA)、智能手表、个人通信器、游戏装置、网络路由器或集线器、无线接入点(AP)或中继器、机顶盒或其组合。此外,虽然仅示出了单个机器或系统,但是术语“机器”或“系统”还应当被理解为包括单独地或共同地执行一个(或多个)指令集以执行本文所讨论的任何一种或多种方法的机器或系统的任何集合。
[0123] 在一个实施方式中,系统1500包括通过总线或互连件1510连接的处理器1501、存储器1503以及装置1505至1508。处理器1501可以表示其中包括单个处理器内核或多个处理器内核的单个处理器或多个处理器。处理器1501可以表示一个或多个通用处理器,诸如,微处理器、中央处理单元(CPU)等。更具体地,处理器1501可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其它指令集的处理器、或实施指令集组合的处理器。处理器1501还可以是一个或多个专用处理器,诸如,专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、通信处理器、加密处理器、协处理器、嵌入式处理器、或者能够处理指令的任何其它类型的逻辑。
[0124] 处理器1501(其可以是低功率多核处理器套接口,诸如超低电压处理器)可以充当用于与所述系统的各种部件通信的主处理单元和中央集线器。这种处理器可以实施为片上系统(SoC)。处理器1501被配置成执行用于执行本文所讨论的操作和步骤的指令。系统1500还可以包括与可选的图形子系统1504通信的图形接口,图形子系统1504可以包括显示控制器、图形处理器和/或显示装置。
[0125] 处理器1501可以与存储器1503通信,存储器1503在一个实施方式中可以经由多个存储器装置实施以提供给定量的系统存储。存储器1503可以包括一个或多个易失性存储(或存储器)装置,诸如,随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或者其它类型的存储装置。存储器1503可以存储包括由处理器1501或任何其它装置执行的指令序列的信息。例如,各种操作系统、装置驱动程序、固件(例如,输入输出基本系统或BIOS)和/或应用的可执行代码和/或数据可以加载到存储器1503中并由处理器1501执行。操作系统可以是任何类型的操作系统,例如,机器人操作系统(ROS)、来自公司的 操作系统、来自苹果公司的Mac 来自 公司的LINUX、UNIX,或者其它实时或嵌入式操作系统。
[0126] 系统1500还可以包括IO装置,诸如装置1505至1508,包括网络接口装置1505、可选的输入装置1506,以及其它可选的IO装置1507。网络接口装置1505可以包括无线收发器和/或网络接口卡(NIC)。所述无线收发器可以是WiFi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(GPS)收发器)或其它射频(RF)收发器或者它们的组合。NIC可以是以太网卡。
[0127] 输入装置1506可以包括鼠标、触摸板、触敏屏幕(其可以与显示装置1504集成在一起)、指针装置(诸如,手写笔)和/或键盘(例如,物理键盘或作为触敏屏幕的一部分显示的虚拟键盘)。例如,输入装置1506可以包括联接到触摸屏的触摸屏控制器。触摸屏和触摸屏控制器例如可以使用多种触敏技术(包括但不限于电容、电阻、红外和表面声波技术)中的任一种,以及其它接近传感器阵列或用于确定与触摸屏接触的一个或多个点的其它元件来检测其接触和移动或间断。
[0128] IO装置1507可以包括音频装置。音频装置可以包括扬声器和/或麦克风,以促进支持语音的功能,诸如语音识别、语音复制、数字记录和/或电话功能。其它IO装置1507还可以包括通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如,PCI-PCI桥)、传感器(例如,诸如加速度计运动传感器、陀螺仪、磁强计、光传感器、罗盘、接近传感器等)或者它们的组合。装置1507还可以包括成像处理子系统(例如,摄像机),所述成像处理子系统可以包括用于促进摄像机功能(诸如,记录照片和视频片段)的光学传感器,诸如电荷耦合装置(CCD)或互补金属氧化物半导体(CMOS)光学传感器。某些传感器可以经由传感器集线器(未示出)联接到互连件1510,而诸如键盘或热传感器的其它装置可以根据系统1500的具体配置或设计由嵌入式控制器(未示出)控制。
[0129] 为了提供对诸如数据、应用、一个或多个操作系统等信息的永久性存储,大容量存储设备(未示出)也可以联接到处理器1501。在各种实施方式中,为了实现更薄且更轻的系统设计并且改进系统响应性,这种大容量存储设备可以经由固态装置(SSD)实施。然而,在其它实施方式中,大容量存储设备可以主要使用硬盘驱动器(HDD)实施,其中较小量的SSD存储设备充当SSD高速缓存以在断电事件期间实现上下文状态以及其它此类信息的非易失性存储,从而使得在系统活动重新启动时能够实现快速通电。另外,闪存装置可以例如经由串行外围接口(SPI)联接到处理器1501。这种闪存装置可以提供系统软件的非易失性存储,系统软件包括所述系统的BIOS以及其它固件。
[0130] 存储装置1508可以包括计算机可访问的存储介质1509(也被称为机器可读存储介质或计算机可读介质),其上存储有体现本文所述的任何一种或多种方法或功能的一个或多个指令集或软件(例如,模块、单元和/或逻辑1528)。处理模块/单元/逻辑1528可以表示上述部件中的任一个,例如感知模块302、规划模块305、控制模块306和/或传感器单元500。处理模块/单元/逻辑1528还可以在其由数据处理系统1500、存储器1503和处理器1501执行期间完全地或至少部分地驻留在存储器1503内和/或处理器1501内,数据处理系统1500、存储器1503和处理器1501也构成机器可访问的存储介质。处理模块/单元/逻辑1528还可以通过网络经由网络接口装置1505进行传输或接收。
[0131] 计算机可读存储介质1509也可以用来永久性地存储以上描述的一些软件功能。虽然计算机可读存储介质1509在示例性实施方式中被示为单个介质,但是术语“计算机可读存储介质”应当被认为包括存储所述一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被认为包括能够存储或编码指令集的任何介质,所述指令集用于由机器执行并且使得所述机器执行本公开的任何一种或多种方法。因此,术语“计算机可读存储介质”应被认为包括但不限于固态存储器以及光学介质和磁性介质,或者任何其它非暂时性机器可读介质。
[0132] 本文所述的处理模块/单元/逻辑1528、部件以及其它特征可以实施为分立硬件部件或集成在硬件部件(诸如,ASICS、FPGA、DSP或类似装置)的功能中。此外,处理模块/单元/逻辑1528可以实施为硬件装置内的固件或功能电路。此外,处理模块/单元/逻辑1528可以以硬件装置和软件部件的任何组合来实施。
[0133] 应注意,虽然系统1500被示出为具有数据处理系统的各种部件,但是并不旨在表示使部件互连的任何特定架构或方式;因为此类细节和本公开的实施方式没有密切关系。还应当认识到,具有更少部件或可能具有更多部件的网络计算机、手持计算机、移动电话、服务器和/或其它数据处理系统也可以与本公开的实施方式一起使用。
[0134] 前述详细描述中的一些部分已经根据在计算机存储器内对数据位的运算的算法和符号表示而呈现。这些算法描述和表示是数据处理领域中的技术人员所使用的方式,以将他们的工作实质最有效地传达给本领域中的其他技术人员。本文中,算法通常被认为是导致所期望结果的自洽操作序列。这些操作是指需要对物理量进行物理操控的操作。
[0135] 然而,应当牢记,所有这些和类似的术语均旨在与适当的物理量关联,并且仅仅是应用于这些量的方便标记。除非在以上讨论中以其它方式明确地指出,否则应当了解,在整个说明书中,利用术语(诸如所附权利要求书中所阐述的术语)进行的讨论是指计算机系统或类似电子计算装置的动作和处理,所述计算机系统或电子计算装置操控计算机系统的寄存器和存储器内的表示为物理(电子)量的数据,并将所述数据变换成计算机系统存储器或寄存器或者其它此类信息存储设备、传输或显示装置内类似地表示为物理量的其它数据。
[0136] 本公开的实施方式还涉及用于执行本文中的操作的设备。这种计算机程序被存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存存储器装置)。
[0137] 前述附图中所描绘的过程或方法可以由处理逻辑来执行,所述处理逻辑包括硬件(例如,电路、专用逻辑等)、软件(例如,体现在非暂时性计算机可读介质上)或两者的组合。尽管所述过程或方法在上文是依据一些顺序操作来描述的,但是应当了解,所述操作中的一些可以按不同的顺序执行。此外,一些操作可以并行地执行而不是顺序地执行。
[0138] 本公开的实施方式并未参考任何特定的编程语言进行描述。应认识到,可以使用多种编程语言来实施如本文描述的本公开的实施方式的教导。
[0139] 在以上的说明书中,已经参考本公开的具体示例性实施方式对本公开的实施方式进行了描述。将显而易见的是,在不脱离所附权利要求书中阐述的本公开的更宽泛精神和范围的情况下,可以对本公开做出各种修改。因此,应当在说明性意义而不是限制性意义上来理解本说明书和附图。