时间同步方法、多传感器系统及可移动平台
技术领域
本发明涉及通信技术领域,尤其是涉及一种时间同步方法、多传感器系统及可移动平台。
背景技术
诸如无人飞行器等无人机,已经被开发用于各种领域,包括消费者应用和行业应用等领域。例如,可以操纵无人机用于娱乐、摄影/摄像、监视、递送或者其它应用,显然,无人机的应用已经拓展了个人生活的方方面面。
随着无人机的普及,无人机上部署的传感器数量也越来越多,例如,相机、IMU(Inertial Measurement Unit,惯性测量单元)、激光雷达等。在某些应用场景中,需要获取同一时刻的传感器数据,并将这些传感器数据进行融合。例如,将相机在时刻A采集的数据与IMU在时刻A采集的数据进行融合。
显然,为了准确的对数据进行融合,需要每个传感器保证时间同步。这样,才能够将同一时刻的传感器数据进行融合。因此,亟需一种时间同步方法,能够实现传感器之间的时间同步。
发明内容
本发明提供一种时间同步方法、多传感器系统及可移动平台,能够实现各个传感器之间的时间同步,能够满足业务需求。
本发明第一方面,提供一种时间同步方法,应用于一硬件设备,所述硬件设备包括多个传感器;其中一个所述传感器为主传感器,其他所述传感器为从传感器,所述主传感器和所述从传感器通过串口总线连接,包括:
所述主传感器获取所述主传感器当前的时间数据;
所述主传感器通过串口总线将所述时间数据发送给所述从传感器;其中,所述串口总线用于连接所述主传感器与所述从传感器;
所述从传感器在通过所述串口总线接收到所述时间数据后,根据所述时间数据更新所述从传感器的本地时间。
本发明第二方面,提供一种多传感器系统,所述多传感器系统包括多个传感器;其中一个所述传感器为主传感器,其他所述传感器为从传感器,所述主传感器与所述从传感器通过串口总线连接;
所述主传感器,用于获取所述主传感器当前的时间数据,并通过所述串口总线将所述时间数据发送给所述从传感器;
所述从传感器,用于在通过所述串口总线接收到所述时间数据后,根据所述时间数据更新所述从传感器的本地时间。
本发明第三方面,提供一种多传感器系统,所述多传感器系统包括多个传感器;其中一个所述传感器为主传感器,其他所述传感器为从传感器,所述主传感器与所述从传感器通过串口总线连接;
所述主传感器包括第一处理器和第一存储器;所述第一存储器,用于存储所述第一处理器可执行的第一计算机指令;
所述从传感器包括第二处理器和第二存储器;所述第二存储器,用于存储所述第二处理器可执行的第二计算机指令;
所述第一处理器,用于从所述第一存储器读取所述第一计算机指令以实现:获取所述主传感器当前的时间数据,并通过所述串口总线将所述时间数据发送给所述从传感器;所述第二处理器,用于从所述第二存储器读取所述第二计算机指令以实现:在通过所述串口总线接收到所述时间数据后,根据所述时间数据更新所述从传感器的本地时间。
本发明第四方面,提供一种可移动平台,包括:
机体;
动力系统,设于所述机体,所述动力系统用于为所述可移动平台提供动力;以及上述的多传感器系统。
本发明第五方面,提供一种时间同步方法,应用于一传感器,所述方法包括:
接收通过串口总线发送的时间数据;
根据所述时间数据更新所述传感器的本地时间。
本发明第六方面,提供一种传感器,包括处理器;
所述处理器,用于接收通过串口总线发送的时间数据;
根据所述时间数据更新所述传感器的本地时间。
本发明第七方面,提供一种机器可读存储介质,所述机器可读存储介质上存储有计算机指令,所述计算机指令被执行时,实现上述的时间同步方法。
基于上述技术方案,本发明实施例中,主传感器能够通过串口总线将时间数据发送给从传感器,从传感器通过串口总线接收到时间数据后,根据该时间数据更新从传感器的本地时间。上述方式是通过串口总线同步时间数据,能够保证传感器的时间同步精度,能够满足业务需求,同步方式的成本大幅降低,制板和安装布线非常方便,对特定硬件的依赖低。
附图说明
为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其它的附图。
图1是一种实施方式中的串口总线的连接示意图;
图2是一种实施方式中的时间同步方法的实施例示意图;
图3是另一种实施方式中的时间同步方法的实施例示意图;
图4是一种实施方式中的两条RS485总线的示意图;
图5是另一种实施方式中的时间同步方法的实施例示意图;
图6是一种实施方式中的一条RS485总线的示意图;
图7是一种实施方式中的第一种冗余设计的示意图;
图8是一种实施方式中的第二种冗余设计的示意图;
图9是一种实施方式中的第三种冗余设计的示意图;
图10是一种实施方式中的硬件设备的实施例框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发明和权利要求书所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。应当理解,本文中使用的术语“和/或”是指包含一个或者多个相关联的列出项目的任何或所有可能的组合。
尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或者“当……时”,或者“响应于确定”。
实施例1:
本发明实施例中提出一种时间同步方法,可以应用于一硬件设备,该硬件设备可以包括多个传感器;其中一个传感器为主传感器,其他传感器为从传感器,从传感器的数量为至少一个,且主传感器通过串口总线与从传感器连接。参见图1所示,为主传感器与从传感器通过串口总线连接的示意图,也就是说,主传感器通过串口总线与每个从传感器连接。
可选地,针对所述多个传感器,可以获取多个传感器中的一个传感器作为主传感器,并将主传感器之外的其他传感器作为从传感器。进一步的,若当前的主传感器故障,则可以获取多个传感器中的另一个传感器作为新的主传感器,并将新的主传感器之外的其他传感器作为从传感器。
硬件设备可以包括多传感器系统,多传感器系统可以获取多个传感器中的一个传感器作为主传感器,对此获取方式不做限制。例如,可以将多个传感器中的任意一个传感器作为主传感器,或者,采用某种策略从多个传感器中选择一个传感器作为主传感器,对此策略不做限制,根据需要任意配置。
可选地,在一个例子中,串口总线可以包括RS485(Recommeded Standard485,推荐标准485)总线。当然,RS485总线只是一个示例,串口总线还可以为其它类型的串口总线,例如,RS232(推荐标准232)总线、CAN(Controller Area Network,控制器局域网络)总线、SPI(Serial Peripheral Interface,串行外设接口)总线、I2C(Inter Integrated Circuit,内部集成电路)总线等,对此串口总线的类型不做限制。为了方便描述,以RS485总线为例进行说明。
可选地,在一个例子中,硬件设备可以包括但不限于可移动平台。而且,所述可移动平台可以包括但不限于无人飞行器(如无人机等)、机器人、普通车辆等,对此不做限制,只要硬件设备可以包括多个传感器,所述多个传感器之间通过串口总线连接,且所述多个传感器需要进行时间同步即可。
可选地,在一个例子中,硬件设备的传感器可以包括但不限于:IMU传感器、图像传感器、激光雷达传感器(如LiDAR(Light Detection And Ranging,激光探测与测量)等)、电子控制单元(如ECU(Electronic Control Unit,电子控制单元)等)。当然,上述只是传感器类型的几个示例,对此不做限制,只要是部署在硬件设备的传感器,均在本发明的保护范围之内。
其中,主传感器可以包括IMU传感器。当然,主传感器还可以为其它类型的传感器,对此不做限制,如主传感器可以为图像传感器、激光雷达传感器、电子控制单元等,以主传感器是IMU传感器为例。由于IMU传感器的时钟精度较高,故障的概率较低,且方便做主从设计、冗余设计,因此,可以将IMU传感器作为主传感器,将IMU传感器的时间同步至从传感器。
从传感器包括但不限于以下至少一种:IMU传感器、图像传感器、激光雷达传感器、电子控制单元。当然,上述只是示例,对此从传感器不做限制,只要是部署在硬件设备的传感器,均在本发明的保护范围之内。
参见图2所示,为时间同步方法的流程示意图,该方法可以包括:
步骤201,主传感器获取主传感器当前的时间数据。
步骤202,主传感器通过串口总线将所述时间数据发送给从传感器。
步骤203,从传感器在通过串口总线接收到所述时间数据后,根据所述时间数据更新从传感器的本地时间,即根据所述时间数据更新自身的本地时间。
可选地,在一个例子中,串口总线可以连接所有传感器,可以从所有传感器中选择一个传感器(如IMU传感器)作为时钟源,即这个传感器是主传感器。具体地,主传感器和从传感器通过串口转换器连接。主传感器周期性获取自身当前的时间数据,并通过串口总线将时间数据发送给每个从传感器,以使每个从传感器根据时间数据更新自身的本地时间,即将自身时间同步到主传感器的时间,从而使所有传感器的时间同步。
本申请实施例中,所述串口总线以单向协议的方式传输数据。即在主传感器和从传感器的时间同步过程中,只需要进行单向通信,而不需要进行双向通信,就可以实现时间同步,同步过程比较简单,适用于无人机、云台等链路比较短的设备。例如,主传感器可以向从传感器发送时间数据,从传感器不需要向主传感器返回任何信息,从传感器就可以直接利用时间数据更新本地时间,而不是主传感器和从传感器进行几个交互后,从传感器才利用多次交互的信息更新从传感器的本地时间。
可选地,在一个例子中,从传感器根据所述时间数据更新从传感器的本地时间,可以包括但不限于:从传感器接收到主传感器的触发信号时,记录触发信号的接收时间,根据触发信号的接收时间和所述时间数据更新从传感器的本地时间;其中,触发信号为独立于所述时间数据的同步信号;或者,触发信号为所述时间数据的前N个比特信号,N大于或者等于1。
情况一、若触发信号为独立于所述时间数据的同步信号,且串口总线包括第一串口子总线和第二串口子总线,则主传感器通过串口总线将所述时间数据发送给从传感器,可以包括:主传感器通过第一串口子总线向从传感器发送触发信号,并通过第二串口子总线同时向从传感器发送所述时间数据。
进一步的,从传感器接收到主传感器的触发信号时,记录触发信号的接收时间,可以包括但不限于:当从传感器通过所述第一串口子总线接收到主传感器发送的触发信号时,则可以记录触发信号的接收时间。
情况二、若触发信号为时间数据的前N个比特信号,所述串口总线为单路串口总线,主传感器通过串口总线将所述时间数据发送给从传感器,可以包括:主传感器通过所述单路串口总线向从传感器发送所述时间数据。
进一步的,从传感器接收到主传感器的触发信号时,记录触发信号的接收时间,可以包括但不限于:当从传感器检测到所述时间数据的第一个比特信号的上升沿或者下降沿时,记录当前时间为触发信号的接收时间。
可选地,在上述实施例中,从传感器根据所述时间数据更新从传感器的本地时间,可以包括但不限于:从传感器根据触发信号的接收时间、从传感器的当前时间以及所述时间数据,更新从传感器的本地时间。
进一步的,所述时间数据可以包括一个时间戳;从传感器根据触发信号的接收时间、从传感器的当前时间以及所述时间数据,更新从传感器的本地时间,可以包括但不限于:从传感器确定从传感器的当前时间与所述触发信号的接收时间的差值,并根据所述时间戳与所述差值更新从传感器的本地时间;或者,从传感器确定所述时间戳与所述触发信号的接收时间的差值,并根据从传感器的当前时间与所述差值更新从传感器的本地时间。
可选地,在一个例子中,从传感器根据所述时间数据更新从传感器的本地时间,可以包括:从传感器根据所述时间数据更新从传感器的本地系统时间;和/或,从传感器根据所述时间数据更新从传感器的本地硬件时间。
可选地,在一个例子中,从传感器根据所述时间数据更新从传感器的本地时间,可以包括但不限于:从传感器根据所述时间数据更新从传感器的虚拟时钟;从传感器根据所述虚拟时钟更新从传感器的本地时间。
其中,所述时间数据包括时间戳,且虚拟时钟的起始虚拟时间为所述时间戳,基于此,从传感器根据所述虚拟时钟更新从传感器的本地时间,可以包括但不限于:在预设时长后,将所述虚拟时钟的目标虚拟时间更新为所述时间戳与所述预设时长之和,并将从传感器的本地时间更新为目标虚拟时间。
可选地,在一个例子中,从传感器根据所述时间数据更新从传感器的本地时间,可以包括但不限于:从传感器判断所述时间数据是否为有效时间数据;如果是,则从传感器根据所述时间数据更新从传感器的本地时间。
可选地,在一个例子中,从传感器根据所述时间数据更新从传感器的本地时间,可以包括但不限于:从传感器判断所述时间数据中是否存在起始标记;如果是,则从传感器根据所述时间数据更新从传感器的本地时间。
可选地,在一个例子中,从传感器还可以根据多个时间数据确定时间漂移信息,并根据所述时间漂移信息对晶体振荡器进行时间补偿。
可选地,在一个例子中,从传感器接收到多个时间数据时,还可以确定多个时间数据所对应的发送方式,并根据所述发送方式确定多个时间数据对应的优先级;其中,所述发送方式包括串口总线发送方式和除串口总线外的其他发送方式,串口总线发送方式的时间数据对应的优先级高于其他发送方式的时间数据对应的优先级。进一步的,传感器可以根据多个时间数据对应的优先级,通过优先级最高的时间数据更新从传感器的本地时间。
显然,由于存在串口总线发送方式和除串口总线外的其他发送方式,因此,当串口总线发送方式的时间数据存在问题(如未接收到串口总线发送方式的时间数据)时,作为一种冗余方式,还可以利用其他发送方式的时间数据更新从传感器的本地时间,即存在备选的同步方案,保证能够实现时间同步,提高从传感器的可靠性。当串口总线发送方式的时间数据正常时,可以利用串口总线发送方式的时间数据更新从传感器的本地时间,保证时间准确。
可选地,在一个例子中,主传感器与从传感器还可以通过以太网线(即以太网接口)连接;从传感器可以通过以太网线与主传感器进行信息交互,以实现时间同步。其中,主传感器和从传感器可以通过以太网结构转换器进行连接。从传感器同时接收到主传感器通过串口总线发送的时间数据和主传感器通过以太网线发送的时间数据,且串口总线的优先级大于以太网线的优先级时,则从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间。或者,从传感器只接收到主传感器通过串口总线发送的时间数据时,则从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间。或者,从传感器只接收到主传感器通过以太网线发送的时间数据时,则从传感器可以基于主传感器通过以太网线发送的时间数据更新本地时间。
在一种应用场景中,当主传感器无法通过串口总线发送时间数据时,也可以通过以太网线发送时间数据,从而使得从传感器仍然能够根据主传感器的时间数据更新本地时间,保证从传感器的本地时钟是与主传感器同步的。
可选地,在一个例子中,从传感器可以包括但不限于第一从传感器和至少一个第二从传感器,第一从传感器与第二从传感器通过以太网线连接;第二从传感器通过以太网线与第一从传感器进行信息交互,以实现时间同步。其中,第一从传感器可以包括IMU传感器,当然,第一从传感器还可以为其它类型的传感器,对此不做限制,例如,图像传感器、激光雷达传感器、电子控制单元等,后续以IMU传感器为例。第二从传感器包括但不限于以下至少一种:IMU传感器、图像传感器、激光雷达传感器、电子控制单元。当然,上述只是示例,对此不做限制。
示例性的,若第一从传感器在预设时间内未接收到主传感器通过串口总线发送的时间数据,则第一从传感器可以通过第一从传感器与第二从传感器之间的以太网线,将第一从传感器的时间数据发送给第二从传感器,以使第二从传感器根据第一从传感器的时间数据进行时间同步。
示例性的,主传感器和第一从传感器可以分别与预设的优先级对应,若第二从传感器同时接收到主传感器的时间数据和第一从传感器的时间数据,且主传感器的优先级大于第一从传感器的优先级,第二从传感器基于主传感器的时间数据更新本地时间;若第二从传感器同时接收到主传感器的时间数据和第一从传感器的时间数据,且主传感器的优先级小于第一从传感器的优先级,第二从传感器基于第一从传感器的时间数据更新本地时间。
串口总线和以太网线可以分别与预设的优先级对应,若第二从传感器同时接收到通过串口总线发送的时间数据和通过以太网线发送的时间数据,且串口总线的优先级大于以太网线的优先级,第二从传感器基于串口总线发送的时间数据更新本地时间;若第二从传感器同时接收到通过串口总线发送的时间数据和通过以太网线发送的时间数据,且串口总线的优先级小于以太网线的优先级,第二从传感器基于以太网线发送的时间数据更新本地时间。
基于上述技术方案,本发明实施例中,主传感器能够通过串口总线将时间数据发送给从传感器,从传感器通过串口总线接收到时间数据后,根据该时间数据更新从传感器的本地时间。上述方式是通过串口总线同步时间数据,能够保证传感器的时间同步精度,即同步精度可以在毫秒级,能够满足业务需求,同步方式的成本大幅降低,制板和安装布线非常方便,对特定硬件的依赖低。而且,由于能够借助传感器上常见的硬件接口(串口)进行时间同步,因此,兼顾了低成本、布线简单、接口通用、保证精度的要求。
由于串口是常用硬件接口,协议简单,可移动平台的传感器均支持串口协议,因此,通过串口总线实现时间同步,硬件改动和布线比较方便。由于串口波特率固定(如选用115200bps,一个字节需要传输的时间为0.0868ms),且可移动平台的传感器之间的距离较短,链路传输可忽略不计,从而能够满足毫秒级的精度要求。相对于NTP(Network TimeProtocol,网络时间协议)等软件同步方式,串口总线的同步方式,不受系统负载和非实时系统调度延迟的影响。相对于GPS(Global Positioning System,全球定位系统)同步方式,串口总线的同步方式,制板和安装布线非常方便。相对于IEEE1588(Institute ofElectrical and Electronics Engineers,电气和电子工程师协会)等高精度同步协议,串口总线的同步方式,对特定硬件依赖低,毫秒级别精度完全够用。
以下结合几个具体实施例,对上述技术方案进行进一步的说明。
实施例2:
本发明实施例中提出一种时间同步方法,可以应用于无人飞行器,无人飞行器可以包括主传感器和从传感器,主传感器通过串口总线(如RS485总线)与从传感器连接。本实施例中,串口总线包括两根总线,为了区分方便,将所述两根总线称为第一串口子总线和第二串口子总线,即串口总线包括第一串口子总线(如一条485总线1)和第二串口子总线(如另一条485总线2)。
参见图3所示,为时间同步方法的流程示意图,该方法可以包括:
步骤301,主传感器获取主传感器当前的时间数据,所述时间数据可以包括时间戳,该时间戳可以表示主传感器当前的时间值。例如,主传感器当前的时间值为时刻A,则所述时间数据包括的时间戳可以为时刻A。
在一个例子中,主传感器可以周期性的进行时间同步,也就是说,在每个同步周期,主传感器均需要获取当前的时间数据,并执行后续步骤。由于每个同步周期的时间同步流程相同,因此,以一次时间同步过程为例。
步骤302,主传感器通过第一串口子总线向从传感器发送触发信号,并通过第二串口子总线同时向从传感器发送所述时间数据(如时间戳)。
在一个例子中,触发信号为独立于所述时间数据的同步信号,主传感器可以通过第一串口子总线向从传感器发送触发信号,在发送触发信号的同时,主传感器还可以通过第二串口子总线向从传感器发送所述时间数据。
步骤303,从传感器通过第一串口子总线接收到主传感器发送的触发信号,并记录触发信号的接收时间。例如,从传感器在时刻B接收到主传感器发送的触发信号时,则可以记录触发信号的接收时间为时刻B。
步骤304,从传感器通过第二串口子总线接收到主传感器发送的时间数据,并从所述时间数据中获取主传感器的时间戳,如时刻A。
步骤305,从传感器根据触发信号的接收时间和所述时间戳更新从传感器的本地时间;其中,触发信号为独立于所述时间数据的同步信号。
在一个例子中,从传感器可以根据触发信号的接收时间、从传感器的当前时间以及所述时间戳,更新从传感器的本地时间。具体的,确定从传感器的当前时间与触发信号的接收时间的差值,并根据所述时间戳与所述差值更新从传感器的本地时间;或者,确定所述时间戳与触发信号的接收时间的差值,并根据从传感器的当前时间与所述差值更新从传感器的本地时间。
例如,假设从传感器的当前时间为时刻C,所述时间戳为时刻A,触发信号的接收时间为时刻B,则计算时刻C与时刻B的差值1(即二者的差值的绝对值),并根据时刻A与差值1更新从传感器的本地时间,例如,将从传感器的本地时间更新为时刻A与差值1的和。或者,计算时刻A与时刻B的差值2(即二者的差值的绝对值),并根据时刻C与差值2更新从传感器的本地时间,例如,将从传感器的本地时间更新为时刻C与差值2的差。
由于主传感器同时发送触发信号和时间数据(包括时间戳),且触发信号/时间数据的传输延时可以忽略,因此,从传感器同时接收到触发信号和时间数据。触发信号是一个脉冲信号,从传感器接收到触发信号的时间,可以近似为主传感器发送触发信号的时间,即触发信号的接收时间(时刻B)应该与主传感器发送触发信号的时间(时刻A)相同。若主传感器与从传感器的时间未同步,时刻B与时刻A不同,若主传感器与从传感器的时间同步,时刻B与时刻A相同。显然,在时刻B与时刻A不同时,需要进行时间同步。
由于时间数据的内容比较多,从传感器需要完整接收到时间数据的所有内容后,才能够从时间数据中获取主传感器的时间戳(即时刻A),显然,从传感器得到时间戳的时刻已经不是时刻B,假设得到时间戳的时刻为时刻C。
针对上述发现,本实施例中,从传感器可以根据触发信号的接收时间(即时刻B)、从传感器的当前时间(即时刻C,从传感器在时刻C得到时间数据中的时间戳,且在时刻C进行时间同步)、以及所述时间戳(即时刻A),更新从传感器的本地时间,具体更新方式参见上述实施例,在此不再赘述。
在一个例子中,参见图4所示,主传感器在上电后,通过一条RS485总线(即第一串口子总线)向从传感器发送1PPS(Pulse Per Second,每秒脉冲数)的脉冲作为触发信号,并通过另一条RS485总线(即第二串口子总线)向从传感器发送携带时间戳的数据包(这个数据包在本文称为时间数据)。
在图4中,T表示触发信号,TS表示携带时间戳的数据包。从图4可以看出,主传感器在通过第一串口子总线向从传感器发送触发信号的同时,主传感器可以通过第二串口子总线向从传感器发送携带时间戳的数据包。
从传感器在通过第一串口子总线接收到主传感器发送的触发信号时,可以记录触发信号的接收时间。从传感器在接收到触发信号后,可以通过第二串口子总线接收主传感器发送的时间数据,并从时间数据中获取主传感器的时间戳(如通过解析数据包得到时间戳)。进一步的,从传感器根据触发信号的接收时间、从传感器的当前时间和所述时间戳更新从传感器的本地时间。
可选地,在一个例子中,针对主传感器向从传感器发送的触发信号,除了用于触发从传感器进行时间同步外,触发信号还可以作为从传感器的数据触发信号,即控制从传感器基于触发信号进行数据处理,对此不做限制。
实施例3:
本发明实施例中提出一种时间同步方法,可以应用于无人飞行器,无人飞行器可以包括主传感器和从传感器,主传感器通过串口总线(如RS485总线)与从传感器连接。本实施例中,串口总线包括一根串口总线,即串口总线为单路串口总线(如单路485总线),且通过单路串口总线来实现时间同步。
参见图5所示,为时间同步方法的流程示意图,该方法可以包括:
步骤501,主传感器获取主传感器当前的时间数据,所述时间数据可以包括时间戳,该时间戳可以表示主传感器当前的时间值。例如,主传感器当前的时间值为时刻A,则所述时间数据包括的时间戳可以为时刻A。
步骤502,主传感器通过单路串口总线向从传感器发送时间数据。
本实施例中,触发信号为时间数据的前N个比特信号,N为大于或者等于1的正整数,因此,主传感器不需要通过单路串口总线单独向从传感器发送触发信号,而是通过时间数据的前N个比特信号表示触发信号。
步骤503,从传感器在检测到时间数据(其中包括时间戳)的第一个比特信号的上升沿或者下降沿时,记录当前时间为触发信号的接收时间。
例如,从传感器在时刻B检测到时间数据的第一个比特信号的上升沿或者下降沿时,可以将时间数据的前N个(如1个)比特信号作为触发信号,也就是说,确定自身在时刻B接收到主传感器发送的触发信号,并记录当前时间为触发信号的接收时间,即记录触发信号的接收时间为时刻B。
步骤504,从传感器通过单路串口总线接收到主传感器发送的时间数据,并从所述时间数据中获取主传感器的时间戳,例如,时间戳为时刻A。
步骤505,从传感器根据触发信号的接收时间和所述时间戳更新从传感器的本地时间;其中,触发信号为时间数据的前N个比特信号。
在一个例子中,从传感器可以根据触发信号的接收时间、从传感器的当前时间以及所述时间戳,更新从传感器的本地时间。具体的,确定从传感器的当前时间与触发信号的接收时间的差值,并根据所述时间戳与所述差值更新从传感器的本地时间;或者,确定所述时间戳与触发信号的接收时间的差值,并根据从传感器的当前时间与所述差值更新从传感器的本地时间。
例如,假设从传感器的当前时间为时刻C,所述时间戳为时刻A,触发信号的接收时间为时刻B,则计算时刻C与时刻B的差值1(即二者的差值的绝对值),并根据时刻A与差值1更新从传感器的本地时间,例如,将从传感器的本地时间更新为时刻A与差值1的和。或者,计算时刻A与时刻B的差值2(即二者的差值的绝对值),并根据时刻C与差值2更新从传感器的本地时间,例如,将从传感器的本地时间更新为时刻C与差值2的差。
主传感器通过单路串口总线发送时间数据(包括时间戳)时,时间数据的传输延时可以忽略,假设从传感器在时刻B接收到时间数据的前N个比特信号(如第一个比特信号)。其中,前N个比特信号的接收时间,可以近似为主传感器发送时间数据的时间,即前N个比特信号的接收时间(时刻B)应该与主传感器发送时间数据的时间(时刻A)相同。若主传感器与从传感器的时间未同步,则时刻B与时刻A不同,若主传感器与从传感器的时间同步,时刻B与时刻A相同。显然,在时刻B与时刻A不同时,需要进行时间同步。
由于时间数据的内容比较多,从传感器需要完整接收到时间数据的所有内容后,才能够从时间数据中获取主传感器的时间戳(即时刻A),显然,从传感器得到时间戳的时刻已经不是时刻B,假设得到时间戳的时刻为时刻C。
针对上述发现,本实施例中,从传感器可以检测时间数据的第一个比特信号的上升沿或者下降沿,假设从传感器在时刻B检测到检测时间数据的第一个比特信号的上升沿或者下降沿,则从传感器记录时刻B为触发信号的接收时间。进一步的,从传感器可以根据触发信号的接收时间(即时刻B)、从传感器的当前时间(即时刻C,从传感器在时刻C得到时间数据中的时间戳,并且在时刻C进行时间同步)、以及所述时间戳(即时刻A),更新从传感器的本地时间,具体更新方式可以参见上述实施例,在此不再赘述。
在一个例子中,参见图6所示,主传感器在上电后,可以通过RS485总线(即单路串口总线)周期性的向从传感器发送携带时间戳的数据包(这个数据包在本文称为时间数据)。在图6中,TS表示携带时间戳的数据包。
从传感器可以使用EXTI(External interrupt/event controller,外部中断/事件控制器)GPIO(General Purpose Input/Output,通用输入/输出)捕获时间数据的第一个下降沿。在捕获到时间数据的第一个下降沿时,从传感器记录当前时间为触发信号的接收时间。在完整接收到时间数据的全部内容后,从时间数据中获取主传感器的时间戳。进一步的,从传感器根据触发信号的接收时间、从传感器的当前时间和所述时间戳更新从传感器的本地时间。
示例性的,在使用单路串口总线实现时间同步时,从传感器默认关闭EXTI GPIO中断,在接收到第一个完整的时间数据后打开EXTI GPIO中断,等待下一次触发信号的到来,依此循环,从传感器通过1PPS的时间戳进行时间同步,由从传感器内部定时器触发传感器的数据采集,给数据打上正确时间戳。
实施例4:
本发明实施例中提出一种时间同步方法,可以应用于无人飞行器,无人飞行器可以包括主传感器和从传感器,主传感器通过串口总线与从传感器连接,主传感器还通过以太网线(即以太网接口)与从传感器连接。
参见图7所示,主传感器可以通过串口总线(如RS485总线)与从传感器连接。其中,该串口总线可以为上述实施例中的双路串口总线(即由第一串口子总线和第二串口子总线组成的串口总线),该串口总线也可以为上述实施例中的单路串口总线(即由一根RS485总线组成的串口总线)。
参见图7所示,主传感器还通过以太网线与从传感器连接,从传感器可以通过以太网线与主传感器进行信息交互,以实现时间同步。
本实施例中,主传感器可以获取主传感器当前的时间数据,该时间数据包括时间戳,该时间戳可以表示主传感器当前的时间值,并通过串口总线向从传感器发送所述时间数据,具体发送方式参见实施例2和实施例3。
本实施例中,主传感器可以通过以太网线将时间数据发送给从传感器,以实现时间数据的同步。例如,以IEEE1588为例,主传感器可以采用IEEE1588方式获取时间数据,并将时间数据发送给从传感器。
可选地,在一个例子中,若从传感器同时接收到主传感器通过串口总线发送的时间数据和主传感器通过以太网线发送的时间数据,且串口总线的优先级大于以太网线的优先级时,则从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间,具体更新方式参见实施例2和实施例3。若串口总线的优先级小于以太网线的优先级,则从传感器可以基于主传感器通过以太网线发送的时间数据更新本地时间,具体更新方式参见IEEE1588,IEEE1588的时间同步方式参见后续实施例。
可选地,在另一个例子中,若从传感器只接收到主传感器通过串口总线发送的时间数据,未接收到主传感器通过以太网线发送的时间数据,则从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间。
可选地,在另一个例子中,若从传感器只接收到主传感器通过以太网线发送的时间数据,未接收到主传感器通过串口总线发送的时间数据,则从传感器可以基于主传感器通过以太网线发送的时间数据更新本地时间,具体更新方式参见后续实施例的IEEE1588时间同步方式。
实施例5:
本发明实施例中提出一种时间同步方法,可以应用于无人飞行器,无人飞行器可以包括主传感器、多个从传感器。所述多个从传感器可以包括第一从传感器和至少一个第二从传感器(后续以一个第二从传感器为例)。主传感器通过串口总线与第一从传感器连接,主传感器通过串口总线与第二从传感器连接,第一从传感器通过以太网线与第二从传感器连接。
参见图8所示,主传感器可以通过串口总线(如RS485总线)与第一从传感器连接,主传感器可以通过串口总线(如RS485总线)与第二从传感器连接。其中,该串口总线可以为上述实施例中的双路串口总线(即由第一串口子总线和第二串口子总线组成的串口总线),该串口总线也可以为上述实施例中的单路串口总线(即由一根RS485总线组成的串口总线)。
第一从传感器通过以太网线与第二从传感器连接,第二从传感器通过以太网线与第一从传感器进行信息交互,以实现时间同步。
本实施例中,主传感器可以获取主传感器当前的时间数据,该时间数据包括时间戳,该时间戳可以表示主传感器当前的时间值,并通过串口总线向第一从传感器发送所述时间数据,并通过串口总线向第二从传感器发送所述时间数据,具体发送方式参见实施例2和实施例3,在此不再赘述。
本实施例中,若第一从传感器在预设时间内接收到主传感器通过串口总线发送的时间数据,则可以基于主传感器通过串口总线发送的时间数据更新本地时间,具体更新方式参见实施例2和实施例3。若第一从传感器在预设时间内未接收到主传感器通过串口总线发送的时间数据,则可以通过第一从传感器与第二从传感器之间的以太网线,将第一从传感器的时间数据发送给第二从传感器,以使第二从传感器根据第一从传感器的时间数据进行时间同步。例如,以IEEE1588为例,第一从传感器可以采用IEEE1588方式获取时间数据,并将时间数据发送给第二从传感器,实现时间数据的同步。
在一个例子中,主传感器和第一从传感器分别与预设的优先级对应,若第二从传感器同时接收到主传感器的时间数据(主传感器通过串口总线发送的时间数据)和第一从传感器的时间数据(第一从传感器通过以太网线发送的时间数据),且主传感器的优先级大于第一从传感器的优先级,则第二从传感器基于主传感器的时间数据更新本地时间,即根据主传感器通过串口总线发送的时间数据更新本地时间,更新方式参见实施例2和实施例3。
若第二从传感器同时接收到主传感器的时间数据(如主传感器通过串口总线发送的时间数据)和第一从传感器的时间数据(如第一从传感器通过以太网线发送的时间数据),且主传感器的优先级小于第一从传感器的优先级,则第二从传感器基于第一从传感器的时间数据更新本地时间,即根据第一从传感器通过以太网线发送的时间数据更新本地时间,具体更新方式参见IEEE1588,IEEE1588的时间同步方式参见后续实施例。
在另一个例子中,串口总线和以太网线分别与预设的优先级对应,若第二从传感器同时接收到通过串口总线发送的时间数据(主传感器通过串口总线发送的时间数据)和通过以太网线发送的时间数据(第一从传感器通过以太网线发送的时间数据),且串口总线的优先级大于以太网线的优先级,则第二从传感器基于串口总线发送的时间数据更新本地时间,也就是说,第二从传感器基于主传感器通过串口总线发送的时间数据更新本地时间,更新方式参见实施例2和实施例3。
若第二从传感器同时接收到通过串口总线发送的时间数据(主传感器通过串口总线发送的时间数据)和通过以太网线发送的时间数据(第一从传感器通过以太网线发送的时间数据),且串口总线的优先级小于以太网线的优先级,则第二从传感器基于以太网线发送的时间数据更新本地时间,即基于第一从传感器通过以太网线发送的时间数据更新本地时间,具体更新方式参见后续实施例的IEEE1588。
可选地,若第二从传感器只接收到主传感器通过串口总线发送的时间数据,未接收到第一从传感器通过以太网线发送的时间数据,则第二从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间。若第二从传感器只接收到第一从传感器通过以太网线发送的时间数据,未接收到主传感器通过串口总线发送的时间数据,则第二从传感器可以基于第一从传感器通过以太网线发送的时间数据更新本地时间。
实施例6:
本发明实施例中提出一种时间同步方法,可以应用于无人飞行器,无人飞行器可以包括主传感器、多个从传感器。所述多个从传感器可以包括第一从传感器和至少一个第二从传感器。主传感器通过串口总线与第一从传感器连接,主传感器通过串口总线与第二从传感器连接,主传感器通过以太网线与第一从传感器连接,主传感器通过以太网线与第二从传感器连接,第一从传感器通过以太网线与第二从传感器连接。
参见图9所示,主传感器可以通过串口总线(如RS485总线)与第一从传感器连接,主传感器可以通过串口总线(如RS485总线)与第二从传感器连接。其中,该串口总线可以为上述实施例中的双路串口总线(即由第一串口子总线和第二串口子总线组成的串口总线),该串口总线也可以为上述实施例中的单路串口总线(即由一根RS485总线组成的串口总线)。
主传感器可以通过以太网线与第一从传感器连接,主传感器可以通过以太网线与第二从传感器连接。第一从传感器通过以太网线与主传感器进行信息交互,以实现时间同步。第二从传感器通过以太网线与主传感器进行信息交互,以实现时间同步。
第一从传感器通过以太网线与第二从传感器连接,第二从传感器通过以太网线与第一从传感器进行信息交互,以实现时间同步。
本实施例中,主传感器可以获取主传感器当前的时间数据,该时间数据包括时间戳,该时间戳可以表示主传感器当前的时间值,并通过串口总线向第一从传感器发送所述时间数据,并通过串口总线向第二从传感器发送所述时间数据,具体发送方式参见实施例2和实施例3,在此不再赘述。
本实施例中,主传感器可以通过以太网线将时间数据发送给第一从传感器,并通过以太网线将时间数据发送给第二从传感器,以实现时间数据的同步。例如,以IEEE1588为例,主传感器可以采用IEEE1588方式获取时间数据,并将时间数据发送给第一从传感器和第二从传感器。
本实施例中,若第一从传感器同时接收到主传感器通过串口总线发送的时间数据和主传感器通过以太网线发送的时间数据,且串口总线的优先级大于以太网线的优先级时,则第一从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间,具体更新方式参见实施例2和实施例3。若串口总线的优先级小于以太网线的优先级,则第一从传感器可以基于主传感器通过以太网线发送的时间数据更新本地时间,具体更新方式参见IEEE1588时间同步方式。或者,若第一从传感器只接收到主传感器通过串口总线发送的时间数据,未接收到主传感器通过以太网线发送的时间数据,则第一从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间。或者,若第一从传感器只接收到主传感器通过以太网线发送的时间数据,未接收到主传感器通过串口总线发送的时间数据,则第一从传感器可以基于主传感器通过以太网线发送的时间数据更新本地时间,具体更新方式参见IEEE1588时间同步方式。
本实施例中,若第一从传感器在预设时间内未接收到主传感器通过串口总线发送的时间数据,也未接收到主传感器通过以太网线发送的时间数据,则通过第一从传感器与第二从传感器之间的以太网线,将第一从传感器的时间数据发送给第二从传感器,以使第二从传感器根据第一从传感器的时间数据进行时间同步。例如,以IEEE1588为例,第一从传感器可以采用IEEE1588方式获取时间数据,并将时间数据发送给第二从传感器。
在一个例子中,针对第二从传感器来说,主传感器和第一从传感器分别与预设的优先级对应,若第二从传感器同时接收到主传感器的时间数据和第一从传感器的时间数据,且主传感器的优先级大于第一从传感器的优先级,第二从传感器基于主传感器的时间数据更新本地时间;若第二从传感器同时接收到主传感器的时间数据和第一从传感器的时间数据,且主传感器的优先级小于第一从传感器的优先级,第二从传感器基于第一从传感器的时间数据更新本地时间。以及,串口总线和以太网线分别与预设的优先级对应,若第二从传感器同时接收到通过串口总线发送的时间数据和通过以太网线发送的时间数据,且串口总线的优先级大于以太网线的优先级,第二从传感器基于串口总线发送的时间数据更新本地时间;若第二从传感器同时接收到通过串口总线发送的时间数据和通过以太网线发送的时间数据,且串口总线的优先级小于以太网线的优先级,第二从传感器基于以太网线发送的时间数据更新本地时间。
基于上述策略,第二从传感器更新本地时间的过程,包括如下情况:
情况1、若第二从传感器只接收到主传感器通过串口总线发送的时间数据,未接收到主传感器通过以太网线发送的时间数据,也未接收到第一从传感器通过以太网线发送的时间数据,则第二从传感器可以基于主传感器通过串口总线发送的时间数据更新本地时间。
情况2、若第二从传感器只接收到主传感器通过以太网线发送的时间数据,未接收到主传感器通过串口总线发送的时间数据,也未接收到第一从传感器通过以太网线发送的时间数据,则第二从传感器可以基于主传感器通过以太网线发送的时间数据更新本地时间。
情况3、若第二从传感器只接收到第一从传感器通过以太网线发送的时间数据,未接收到主传感器通过串口总线发送的时间数据,也未接收到主传感器通过以太网线发送的时间数据,则第二从传感器可以基于第一从传感器通过以太网线发送的时间数据更新本地时间。
情况4、若第二从传感器同时接收到主传感器通过串口总线发送的时间数据、第一从传感器通过以太网线发送的时间数据,未接收到主传感器通过以太网线发送的时间数据。若主传感器的优先级大于第一从传感器的优先级,则第二从传感器根据主传感器通过串口总线发送的时间数据更新本地时间;若主传感器的优先级小于第一从传感器的优先级,则第二从传感器根据第一从传感器通过以太网线发送的时间数据更新本地时间。或者,若串口总线的优先级大于以太网线的优先级,则第二从传感器根据主传感器通过串口总线发送的时间数据更新本地时间;若串口总线的优先级小于以太网线的优先级,则第二从传感器根据第一从传感器通过以太网线发送的时间数据更新本地时间。
情况5、若第二从传感器同时接收到主传感器通过串口总线发送的时间数据、主传感器通过以太网线发送的时间数据,未接收到第一从传感器通过以太网线发送的时间数据。若串口总线的优先级大于以太网线的优先级,第二从传感器根据主传感器通过串口总线发送的时间数据更新本地时间;若串口总线的优先级小于以太网线的优先级,则根据主传感器通过以太网线发送的时间数据更新本地时间。
情况6、若第二从传感器同时接收到主传感器通过以太网线发送的时间数据、第一从传感器通过以太网线发送的时间数据,未接收到主传感器通过串口总线发送的时间数据。若主传感器的优先级大于第一从传感器的优先级,则根据主传感器通过以太网线发送的时间数据更新本地时间;若主传感器的优先级小于第一从传感器的优先级,则根据第一从传感器通过以太网线发送的时间数据更新本地时间。
情况7、若第二从传感器同时接收到主传感器通过串口总线发送的时间数据、第一从传感器通过以太网线发送的时间数据、主传感器通过以太网线发送的时间数据。若主传感器的优先级大于第一从传感器的优先级、且串口总线的优先级大于以太网线的优先级,则第二从传感器根据主传感器通过串口总线发送的时间数据更新本地时间;若主传感器的优先级大于第一从传感器的优先级、且串口总线的优先级小于以太网线的优先级,则第二从传感器根据主传感器通过以太网线发送的时间数据更新本地时间;若主传感器的优先级小于第一从传感器的优先级、串口总线的优先级大于或者小于以太网线的优先级,则第二从传感器根据第一从传感器通过以太网线发送的时间数据更新本地时间。
实施例7:在一个例子中,从传感器接收到多个时间数据时,还可以确定多个时间数据所对应的发送方式,并根据所述发送方式确定多个时间数据对应的优先级;其中,所述发送方式包括串口总线发送方式和除串口总线外的其他发送方式,串口总线发送方式的时间数据对应的优先级高于除串口总线外的其他发送方式的时间数据对应的优先级。进一步的,传感器根据多个时间数据对应的优先级,通过优先级最高的时间数据更新从传感器的本地时间。
显然,由于存在串口总线发送方式和除串口总线外的其他发送方式,因此,当串口总线发送方式的时间数据存在问题(如未接收到串口总线发送方式的时间数据)时,作为一种冗余方式,还可以利用其他发送方式的时间数据更新从传感器的本地时间,即存在备选的同步方案,保证能够实现时间同步,提高从传感器的可靠性。当串口总线发送方式的时间数据正常时,可以利用串口总线发送方式的时间数据更新从传感器的本地时间,保证时间准确。
例如,参见上述实施例,从传感器在接收到主传感器通过串口总线发送的时间数据、主传感器通过以太网线(即除串口总线外的其他发送方式)发送的时间数据时,由于串口总线发送方式的时间数据对应的优先级高于其他发送方式的时间数据对应的优先级,因此,从传感器可以根据主传感器通过串口总线发送的时间数据更新从传感器的本地时间。
又例如,参见上述实施例,第一从传感器在接收到主传感器通过串口总线发送的时间数据、主传感器通过以太网线(即除串口总线外的其他发送方式)发送的时间数据时,由于串口总线发送方式的时间数据对应的优先级高于其他发送方式的时间数据对应的优先级,因此,第一从传感器根据主传感器通过串口总线发送的时间数据更新第一从传感器的本地时间。
又例如,参见上述实施例,第二从传感器在接收到主传感器通过串口总线发送的时间数据、主传感器通过以太网线(即除串口总线外的其他发送方式)发送的时间数据、第一从传感器通过以太网线发送的时间数据时,由于串口总线发送方式的时间数据对应的优先级高于其他发送方式的时间数据对应的优先级,因此,第二从传感器可以根据主传感器通过串口总线发送的时间数据更新第二从传感器的本地时间。
实施例8:从传感器根据时间数据更新从传感器的本地时间时,从传感器可以根据时间数据更新从传感器的本地系统时间(即处理器维护的时间);和/或,从传感器可以根据时间数据更新从传感器的本地硬件时间。
具体的,从传感器可以根据时间数据更新从传感器的本地系统时间,基于从传感器的本地系统时间,从传感器可以根据本地系统时间更新从传感器的本地硬件时间。或者,从传感器可以根据时间数据更新从传感器的本地硬件时间,基于从传感器的本地硬件时间,从传感器可以根据本地硬件时间更新从传感器的本地系统时间。或者,从传感器可以根据时间数据更新从传感器的本地系统时间,并根据时间数据更新从传感器的本地硬件时间。或者,从传感器可以只根据时间数据更新从传感器的本地系统时间。或者,从传感器可以只根据时间数据更新从传感器的本地硬件时间。当然,上述只是更新本地时间的几个示例,对此不做限制,只要根据时间数据更新本地时间即可。
实施例9:从传感器根据时间数据更新从传感器的本地时间时,从传感器可以根据时间数据先更新从传感器的虚拟时钟,并根据所述虚拟时钟更新从传感器的本地时间。例如,时间数据包括时间戳,且虚拟时钟的起始虚拟时间为所述时间戳,在预设时长后,将虚拟时钟的目标虚拟时间更新为时间戳与所述预设时长之和,并将从传感器的本地时间更新为目标虚拟时间。
例如,假设时间数据中的时间戳为时刻A(如2019.6.18-18:00:00),从传感器的本地时间为时刻B(如2019.6.18-18:00:05),在一个例子中,从传感器可以直接将从传感器的本地时间更新为时刻A(即从时刻B变为时刻A)。但是,在上述实现方式中,从传感器的本地时间发生了时间回退现象。
为了防止从传感器的本地时间发生瞬变,从而导致时间回退和超前现象,本实施例中,从传感器可以维护一个虚拟时钟,这个虚拟时钟与从传感器的业务无关,只是用于更新从传感器的本地时间。从传感器从时间数据中解析出时刻A后,将时刻A更新为虚拟时钟的起始虚拟时间,即起始虚拟时间是时刻A。从传感器在将时刻A更新为起始虚拟时间时,从传感器本地的当前时间为时刻B。
在预设时长后,将虚拟时钟的目标虚拟时间更新为时刻A与预设时长之和。预设时长的取值可以大于时刻B与时刻A的差值,如预设时长为6秒(时刻A和时刻B都是精确到毫秒的时刻,且预设时长为毫秒的数值,这个只是为了举例方便),则虚拟时钟的目标虚拟时间为时刻C(如2019.6.18-18:00:06)。
在预设时长后,从传感器还可以将从传感器的本地时间更新为时刻C(如2019.6.18-18:00:06),也就是说,从传感器在起始虚拟时间的本地时间为时刻B(如2019.6.18-18:00:05),在经过6秒的预设时长后,将从传感器的本地时间更新为时刻C(如2019.6.18-18:00:06),即本地时间只增加了1秒,而不是增加6秒。通过上述方式,将从传感器的本地时间同步到主传感器的时间。
由于从传感器在经过6秒的预设时长后,本地时间只增加了1秒,因此,可以对本地时间进行缓慢变化。例如,在预设时长的起始时刻,从传感器的本地时间为时刻B(如2019.6.18-18:00:05)。在预设时长的第1秒,将从传感器的本地时间增加0.2秒;在预设时长的第2秒,将从传感器的本地时间增加0.2秒;在预设时长的第3秒,将从传感器的本地时间增加0.2秒;在预设时长的第4秒,将从传感器的本地时间增加0.2秒;在预设时长的第5秒,将从传感器的本地时间增加0.1秒;在预设时长的第6秒,将从传感器的本地时间增加0.1秒;至此,经过6秒的预设时长后,本地时间增加了1秒,即,在经过6秒的预设时长后,从传感器的本地时间为时刻C(如2019.6.18-18:00:06)。
又例如,假设时间数据中的时间戳为时刻B(如2019.6.18-18:00:05),从传感器的本地时间为时刻A(如2019.6.18-18:00:00),从传感器从时间数据中解析出时刻B后,可以将时刻B更新为虚拟时钟的起始虚拟时间,即起始虚拟时间是时刻B,从传感器本地的当前时间为时刻A。在预设时长后,将虚拟时钟的目标虚拟时间更新为时刻B与预设时长之和。预设时长的取值根据经验配置,如1秒,虚拟时钟的目标虚拟时间为时刻C(如2019.6.18-18:00:06)。
在预设时长后,从传感器还可以将从传感器的本地时间更新为时刻C(如2019.6.18-18:00:06),也就是说,从传感器在起始虚拟时间的本地时间为时刻A(如2019.6.18-18:00:00),在经过1秒的预设时长后,将从传感器的本地时间更新为时刻C(如2019.6.18-18:00:06),即本地时间增加了6秒,而不是增加1秒。通过上述方式,将从传感器的本地时间同步到主传感器的时间。
由于从传感器在经过1秒的预设时长后,本地时间增加了6秒,因此,可以对本地时间进行缓慢变化。例如,在预设时长的起始时刻,从传感器的本地时间为时刻A,在预设时长的第0.2秒,将从传感器的本地时间增加2秒;在预设时长的第0.4秒,将从传感器的本地时间增加3秒;在预设时长的第0.6秒,将从传感器的本地时间增加4秒;在预设时长的第0.8秒,将从传感器的本地时间增加5秒;在预设时长的第1秒,将从传感器的本地时间增加6秒;至此,经过1秒的预设时长后,本地时间增加了6秒,即,在经过1秒的预设时长后,从传感器的本地时间为时刻C(如2019.6.18-18:00:06)。
示例性的,当从传感器接收到多个时间数据(例如,主传感器通过串口总线发送的时间数据、主传感器通过以太网线发送的时间数据等)时,可以针对每个时间数据维护独立的虚拟时钟,而无需考虑多个虚拟时钟之间的差异。当通过哪个时间数据更新从传感器的本地时间时,从传感器就可以根据该时间数据对应的虚拟时钟更新从传感器的本地时间。
实施例10:从传感器根据时间数据更新从传感器的本地时间时,还可以判断该时间数据是否为有效时间数据;如果是,则根据时间数据更新从传感器的本地时间,如果否,则禁止根据时间数据更新从传感器的本地时间。
例如,主传感器在发送时间数据时,还可以根据校验算法计算时间数据的第一校验码,且时间数据包括该第一校验码,对此校验算法不做限制,如码距、奇偶检验、海明校验、循环冗余校验等校验算法。从传感器在接收到时间数据时,还可以根据校验算法(从传感器采用的校验算法需要与主传感器采用的校验算法相同)计算时间数据的第二校验码。如果第二校验码与第一校验码相同,则该时间数据是有效时间数据,从传感器根据时间数据更新从传感器的本地时间;如果第二校验码与第一校验码不同,则该时间数据不是有效时间数据,从传感器禁止根据时间数据更新从传感器的本地时间。
当然,上述方式只是判断是否为有效时间数据的示例,对此不做限制。
实施例11:从传感器根据时间数据更新从传感器的本地时间时,还可以判断时间数据中是否存在起始标记;如果是,则根据时间数据更新从传感器的本地时间;如果否,则禁止根据时间数据更新从传感器的本地时间。
例如,主传感器在发送时间数据时,该时间数据还可以包括起始标记。从传感器在接收到时间数据时,还可以判断时间数据中是否存在起始标记;如果是,则从传感器可以根据时间数据更新从传感器的本地时间;如果否,则从传感器可以禁止根据时间数据更新从传感器的本地时间。
实施例12:从传感器还可以根据多个时间数据确定时间漂移信息,并根据所述时间漂移信息对晶体振荡器进行时间补偿。例如,由于同步信号存在波动,因此,从传感器还可以进行滤波和控制等过程。例如,假设时钟漂移是典型值50ppm(100/10^6s),则1秒漂移0.01毫秒,即60秒漂移3毫秒,因此,从传感器可以根据多个时间数据(即主传感器在60秒内发送的时间数据)确定时间漂移信息(如3毫秒),并根据所述时间漂移信息对晶体振荡器进行时间补偿,对此补偿方式不做限制,可以参见传统的补偿方式。
实施例13:IEEE1588的时间同步方式,IEEE1588协议又称为PTP(Precise TimeProtocol,精确时间协议),可以达到亚微秒级别的时间同步精度,包括:
主时钟(如主传感器/第一从传感器)周期性的发出sync(同步报文)报文,并记录sync报文离开主时钟的精确发送时间t1。主时钟将精确发送时间t1封装到Follow_up(跟随报文)报文中,发送给从时钟(如第一从传感器/第二从传感器)。从时钟记录sync报文到达从时钟的精确到达时间t2。从时钟发出delay_req(延迟请求报文)报文,并且记录精确发送时间t3。主时钟记录delay_req报文到达主时钟的精确到达时间t4。主时钟发出携带精确时间戳信息t4的delay_resp(延迟请求响应报文)报文给从时钟。综上所述,从时钟可以得到t1、t2、t3、t4等四个时间,根据t1、t2、t3、t4得到主从时钟偏差和传输延时,根据主从时钟偏差和传输延时更新本地时间,以进行时间同步。
示例性的,在上述实施例中,是以IEEE1588的时间同步方式作为冗余方式为例,在实际应用中,还可以将其它时间同步方式作为冗余方式,例如,可以将NTP的时间同步方式作为冗余方式,即使用NTP的时间同步方式替换IEEE1588的时间同步方式,具体时间同步过程不再赘述;或者,将GPS的时间同步方式作为冗余方式,即使用GPS的时间同步方式替换IEEE1588的时间同步方式,具体时间同步过程不再赘述;或者,将ROS的时间同步方式作为冗余方式等,即使用ROS的时间同步方式替换IEEE1588的时间同步方式,具体时间同步过程不再赘述。当然,上述只是几个示例,对此不做限制。
实施例14:
基于与上述方法同样的构思,参见图10所示,本发明实施例中还提供一种多传感器系统,所述多传感器系统包括多个传感器;其中一个所述传感器为主传感器,后续记为主传感器1001,其他所述传感器为从传感器,后续记为从传感器1002,主传感器1001与从传感器1002通过串口总线连接;
所述主传感器1001,用于获取所述主传感器1001当前的时间数据,并通过所述串口总线将所述时间数据发送给所述从传感器1002;
所述从传感器1002,用于在通过所述串口总线接收到所述时间数据后,根据所述时间数据更新所述从传感器1002的本地时间。
所述从传感器1002根据所述时间数据更新所述从传感器1002的本地时间时具体用于:接收到所述主传感器1001的触发信号时,记录所述触发信号的接收时间,根据所述触发信号的接收时间和所述时间数据更新所述从传感器1002的本地时间;其中,所述触发信号为独立于所述时间数据的同步信号;或,所述触发信号为所述时间数据的前N个比特信号,N大于或者等于1。
若所述触发信号为独立于所述时间数据的同步信号,且所述串口总线包括第一串口子总线和第二串口子总线,所述主传感器1001通过串口总线将所述时间数据发送给所述从传感器1002时具体用于:通过所述第一串口子总线向所述从传感器1002发送触发信号,并通过所述第二串口子总线同时向所述从传感器1002发送所述时间数据。
所述从传感器1002接收到所述主传感器1001的触发信号时,记录所述触发信号的接收时间时具体用于:当通过所述第一串口子总线接收到所述主传感器1001发送的所述触发信号时,记录所述触发信号的接收时间。
若触发信号为时间数据的前N个比特信号,串口总线为单路串口总线,所述主传感器1001通过串口总线将所述时间数据发送给所述从传感器1002时具体用于:通过所述单路串口总线向所述从传感器1002发送所述时间数据。
所述从传感器1002接收到所述主传感器1001的触发信号时,记录所述触发信号的接收时间时具体用于:当检测到所述时间数据的第一个比特信号的上升沿或者下降沿时,记录当前时间为所述触发信号的接收时间。
所述从传感器1002根据所述时间数据更新所述从传感器1002的本地时间时具体用于:根据所述触发信号的接收时间、所述从传感器1002的当前时间以及所述时间数据,更新所述从传感器1002的本地时间。
所述时间数据包括时间戳;所述从传感器1002根据所述触发信号的接收时间、所述从传感器1002的当前时间以及所述时间数据,更新所述从传感器1002的本地时间时具体用于:确定从传感器1002的当前时间与所述触发信号的接收时间的差值,并根据所述时间戳与所述差值更新从传感器1002的本地时间;或,确定所述时间戳与所述触发信号的接收时间的差值,并根据所述从传感器1002的当前时间与所述差值更新所述从传感器1002的本地时间。
所述从传感器1002根据所述时间数据更新所述从传感器1002的本地时间时具体用于:根据所述时间数据更新所述从传感器1002的本地系统时间;和/或,根据所述时间数据更新所述从传感器1002的本地硬件时间。
所述从传感器1002根据所述时间数据更新所述从传感器1002的本地时间时具体用于:根据所述时间数据更新所述从传感器1002的虚拟时钟;根据所述虚拟时钟更新所述从传感器1002的本地时间。
所述时间数据包括时间戳,所述虚拟时钟的起始虚拟时间为所述时间戳;从传感器1002根据所述虚拟时钟更新从传感器1002的本地时间时具体用于:在预设时长后,将所述虚拟时钟的目标虚拟时间更新为所述时间戳与所述预设时长之和,并将所述从传感器1002的本地时间更新为所述目标虚拟时间。
所述从传感器1002根据所述时间数据更新所述从传感器1002的本地时间时具体用于:判断所述时间数据是否为有效时间数据;如果是,则根据所述时间数据更新所述从传感器1002的本地时间。
所述从传感器1002还用于:根据多个时间数据确定时间漂移信息;根据所述时间漂移信息对晶体振荡器进行时间补偿。
所述从传感器1002根据所述时间数据更新所述从传感器1002的本地时间时具体用于:判断所述时间数据中是否存在起始标记;如果是,则根据所述时间数据更新所述从传感器1002的本地时间。
所述从传感器1002还用于:在接收到多个时间数据时,确定多个所述时间数据所对应的发送方式,根据所述发送方式确定多个所述时间数据对应的优先级;所述发送方式包括串口总线发送方式和除串口总线外的其他发送方式,所述串口总线发送方式的时间数据对应的优先级高于所述其他发送方式的时间数据对应的优先级;根据多个所述时间数据对应的优先级,通过优先级最高的时间数据更新所述从传感器1002的本地时间。
所述主传感器1001与所述从传感器1002通过以太网线连接;所述从传感器1002还用于:通过所述以太网线与所述主传感器1001进行信息交互,以实现时间同步。
所述从传感器1002还用于:在同时接收到所述主传感器1001通过所述串口总线发送的时间数据和所述主传感器1001通过所述以太网线发送的时间数据,且所述串口总线的优先级大于所述以太网线的优先级时,则基于主传感器1001通过所述串口总线发送的时间数据更新本地时间。
从传感器1002包括第一从传感器和至少一个第二从传感器,第一从传感器与第二从传感器通过以太网线连接;第二从传感器还用于:通过所述以太网线与所述第一从传感器进行信息交互,以实现时间同步。
第一从传感器还用于:若在预设时间内未接收到所述主传感器通过所述串口总线发送的时间数据,则通过所述第一从传感器与所述第二从传感器之间的以太网线,将第一从传感器的时间数据发送给所述第二从传感器,以使所述第二从传感器根据所述第一从传感器的时间数据进行时间同步。
所述主传感器1001和所述第一从传感器分别与预设的优先级对应,所述第二从传感器还用于:若同时接收到所述主传感器1001的时间数据和所述第一从传感器的时间数据,且所述主传感器1001的优先级大于所述第一从传感器的优先级,则基于所述主传感器1001的时间数据更新本地时间;
若同时接收到所述主传感器1001的时间数据和所述第一从传感器的时间数据,且所述主传感器1001的优先级小于所述第一从传感器的优先级,则基于所述第一从传感器的时间数据更新本地时间。
所述串口总线和所述以太网线分别与预设的优先级对应,第二从传感器还用于:若同时接收到通过所述串口总线发送的时间数据和通过所述以太网线发送的时间数据,且所述串口总线的优先级大于所述以太网线的优先级,则基于所述串口总线发送的时间数据更新本地时间;若同时接收到通过所述串口总线发送的时间数据和通过所述以太网线发送的时间数据,且所述串口总线的优先级小于所述以太网线的优先级,则基于所述以太网线发送的时间数据更新本地时间。
所述串口总线包括RS485总线。所述主传感器1001包括IMU传感器。所述从传感器1002包括以下至少一种:IMU传感器、图像传感器、激光雷达传感器、电子控制单元。所述第一从传感器包括IMU传感器。其中,所述IMU传感器用于测量所述可移动平台的三轴姿态角及加速度;所述图像传感器用于获取所述可移动平台周围的图像信息;所述激光雷达传感器用于获取所述可移动平台的点云信息;所述电子控制单元用于生成控制信号,控制所述可移动平台的飞行参数。
实施例15:
基于与上述方法同样的构思,本发明实施例中还提供一种多传感器系统,所述多传感器系统包括多个传感器;其中一个所述传感器为主传感器,其他所述传感器为从传感器,所述主传感器与所述从传感器通过串口总线连接;所述主传感器包括第一处理器和第一存储器;所述第一存储器,用于存储所述第一处理器可执行的第一计算机指令;所述从传感器包括第二处理器和第二存储器;所述第二存储器,用于存储所述第二处理器可执行的第二计算机指令;所述第一处理器,用于从所述第一存储器读取所述第一计算机指令以实现:获取所述主传感器当前的时间数据,并通过所述串口总线将所述时间数据发送给所述从传感器;所述第二处理器,用于从所述第二存储器读取所述第二计算机指令以实现:在通过所述串口总线接收到所述时间数据后,根据所述时间数据更新所述从传感器的本地时间。
实施例16:
基于与上述方法同样的构思,本发明实施例中还提供一种可移动平台,包括:
机体;
动力系统,设于所述机体,所述动力系统用于为所述可移动平台提供动力;以及上述的多传感器系统。
实施例17:
基于与上述方法同样的构思,本发明实施例中还提供一种传感器,所述传感器包括处理器;
所述处理器,用于接收通过串口总线发送的时间数据;
根据所述时间数据更新所述传感器的本地时间。
实施例18:
本发明实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有计算机指令,在所述计算机指令被执行时,实现上述的时间同步方法。
上述实施例阐明的系统、装置、模块或单元,可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进,均应包含在本发明的权利要求范围之内。