无人驾驶信息存储和回放方法、装置及存储介质
文献发布时间:2023-06-19 11:16:08
技术领域
本申请涉及无人驾驶技术领域,尤其涉及一种无人驾驶信息存储和回放方法、装置及存储介质。
背景技术
研究表明,在增强道路安全性、缓解交通拥堵、疏解停车难问题和减少空气污染等方面,全自动无人驾驶车辆均具有一定的优势。因此近年来,面向车辆的全自动无人驾驶技术已得到了越来越多的关注与发展。然而,在现阶段,无人驾驶技术仍面临着巨大的挑战,除了需要依赖于大量昂贵的高速传感器、强大安全的高性能计算硬件平台、深度学习算法以及其他各种复杂的软件算法模块之外,无人驾驶技术还会遇到行车安全、隐私保护、基础设施不完善、行车立法和事故追责等问题。尤其地,由于无人驾驶的车辆不是通过驾驶员来操纵车辆的,因此无人驾驶车辆将更多的责任从驾驶员转移到了车辆制造商和软件设计者身上,从而彻底地改变了以往行车事故的法律责任归属,完全颠覆了在此基础上建立的法律体系和保险规则。由于无人车投入市场需要一个过程,新老汽车混合的负责局面将长期存在,一旦无人驾驶车辆出现故障和事故,事故的追责问题就很难进行界定。因此,在无人驾驶车辆出现异常状况的时候,如何保存异常现场数据并使所保存的异常现场数据保持正确、完整、公正、可信就显得非常重要。另外,如何使得无人驾驶厂商能够对所保存的异常现场数据进行离线回放并分析异常原因以修正系统缺陷和优化无人驾驶算法对于整个无人驾驶系统而言也非常重要。
在目前已有的一种技术中,将无人驾驶车辆在行车过程中所产生的所有行车数据都存储在分布式存储设备上,并将所有这些数据的根哈希存储在区块链中,然而由于无人驾驶车辆在行车过程中所产生的行车数据量非常大,使得需要大量的带宽和存储空间来存储这些行车信息,而且鉴于分布式存储设备的特性,无法做到所保存的数据的完整性、公正性和可信性。
因此,有必要提供一种无人驾驶信息存储和回放方法、装置及存储介质,使得可以保证异常现场数据的正确性、完整性、公正性和可信性,同时不会占用太多的存储空间。
发明内容
鉴于以上技术问题,本申请提供了一种无人驾驶信息存储和回放方法、装置及存储介质,使得可以有效地保证异常现场数据的正确性、完整性、公正性和可信性,同时不会占用太多的存储空间。
在本申请的第一方面,提供了一种无人驾驶信息存储方法,所述方法包括:监测到无人驾驶车辆发生异常事件时,获取与所述异常事件相关联的多个数据信号;为每一数据信号计算第一哈希值;分别将每一第一哈希值与相应的数据信号作为键值对保存在键值数据库中;基于每一第一哈希值,生成第一默克尔树;以及将所述第一默克尔树以及所述多个数据信号中的关键数据信号存储到区块链中,并产生相应的电子货币地址和交易时间戳。
在一种实现中,该无人驾驶信息存储方法还包括:为每一数据信号计算第一哈希值之前,对每一数据信号进行压缩,并用密钥对经压缩的每一数据信号进行加密;以及在将所述第一默克尔树以及所述多个数据信号的关键数据信号保存到区块链中的同时,将所述密钥也存储到所述区块链中。
在一种实现中,该无人驾驶信息存储方法还包括:将所述第一默克尔树的根哈希值与所述第一默克尔树的所有叶哈希值作为键值对保存在所述键值数据库中。
在一种实现中,该无人驾驶信息存储方法还包括:分别为所述电子货币地址和所述交易时间戳计算第二哈希值;将两个所述第二哈希值合并后计算第二根哈希值;将所述第二根哈希值与所述货币交易地址和所述交易时间戳作为键值对保存在键值数据库中。
在一种实现中,所述关键数据信号为所述多个数据信号中对于确定所述异常事件发生的原因所必须的数据信号。
在本申请的第二方面,还提供了一种无人驾驶信息回放方法,包括:获取与无人驾驶车辆的异常事件相关联的电子货币地址和交易时间戳;基于所述电子货币地址和所述交易时间戳,从区块链获取第一默克尔树;基于所述第一默克尔树的根哈希值,从键值数据库获取多个数据信号;基于所述多个数据信号生成第二默克尔树;将所述第二默克尔树与所述第一默克尔树进行比较;以及在所述第二默克尔树与所述第一默克尔树不一致的情况下,基于所述电子货币地址和所述交易时间戳,从所述区块链获取关键数据信号。
在一种实现中,获取与无人驾驶车辆所发生的异常事件相关联的电子货币地址和交易时间戳包括:根据第二根哈希值,从键值数据库中获取所述电子货币地址和交易时间戳。
在一种实现中,基于所述第一默克尔树的根哈希值,从键值数据库获取多个数据信号包括:基于所述第一默克尔树的根哈希值,从键值数据库中获取多个第一哈希值;以及基于每一所述第一哈希值,从所述键值数据库中获取所述多个数据信号。
在一种实现中,基于所述多个数据信号生成第二默克尔树包括:为每一数据信号计算第三哈希值;基于所述第三哈希值,生成所述第二默克尔树。
在一种实现中,所述方法还包括:在所述第二默克尔树与所述第一默克尔树不一致的情况下,标识出所述第二默克尔树与所述第一默克尔树不一致的叶子节点,以确定所述多个数据信号中已被篡改的数据信号。
在一种实现中,所述方法还包括:在从区块链获取第一默克尔树的同时,从所述区块链获取密钥;以及在所述第二默克尔树与所述第一默克尔树一致的情况下,利用所述密钥对所述多个数据信号进行解密。
在本申请的第三方面,还提供了一种无人驾驶信息存储装置,包括:存储器,所述存储器存储有机器可执行程序;以及处理器,所述处理器在执行所述机器可执行程序时,实现根据本申请的第一方面所述的无人驾驶异常信息存储方法。
在本申请的第四方面,还提供了一种无人驾驶信息回放装置,包括:存储器,所述存储器存储有机器可执行程序;以及处理器,所述处理器在执行所述机器可执行程序时,实现根据本申请的第二方面所述的无人驾驶信息回放方法。
在本申请的第五方面,还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序在被处理器执行时实现根据本申请的第一方面所述的无人驾驶异常信息存储方法。
在本申请的第六方面,还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序在被处理器执行时实现根据本申请的第二方面所述的无人驾驶信息回放方法。
附图说明
图1示出了根据本申请的一个实施例的无人驾驶信息存储方法的示例流程图;
图2示出了根据本申请的其他实施例的无人驾驶信息存储方法的示例流程图;
图3示出了根据本申请的实施例的进行哈希计算的示例示意图;
图4示出了根据本申请的实施例的第一默克尔树的示例示意图;
图5示出了根据本申请的实施例的无人驾驶信息回放方法的示例流程图;
图6示出了根据本申请的实施例的无人驾驶信息存储装置或无人驾驶信息回放装置的示意性结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。
在本说明书的描述中,术语“第一”、“第二”仅用于对不同的技术特征进行区分,而不能理解为指示或暗示所指示技术特征的相对重要性或顺序。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在一个实施例中,如图1所示,本申请提供了一种无人驾驶信息存储方法,该无人驾驶信息存储方法可包括步骤101-105。
在步骤101,在监测到无人驾驶车辆发生异常事件时,获取与异常事件相关联的多个数据信号。仅作为示例,异常事件可以包括例如车辆碰撞事件、车辆失控事件、车辆报警事件(即车辆发生故障)等等。与异常事件相关联的多个数据信号可包括用于指示无人驾驶车辆发生异常事件的时间的时间戳信号、用于指示无人驾驶车辆在发生异常事件时所处的位置的位置信号、安装或固定在无人驾驶车辆上的各个传感器在发生异常事件时所检测到的传感器信号、以及相应的规划、决策和控制指令数据信号。仅作为示例,安装或固定在无人驾驶车辆上的各个传感器在发生异常事件时检测到的传感器信号可包括摄像头所采集到的视频帧、激光雷达点云数据、超声波雷达数据、毫米波雷达数据等等。规划、决策和控制指令数据信号由无人车辆的软件系统利用各传感器数据信号以及算法模块经过计算得到的,其主要指示与无人驾驶车辆的自动驾驶路径规划、自动驾驶行为决策以及自动驾驶的执行控制相关联的数据信号。无人驾驶车辆在行驶过程中实际上会产生海量的数据,在本申请中,仅获取与异常事件相关联的多个数据信号,而非像现有技术那样获取无人驾驶车辆在行驶过程中产生的全部数据,因此本申请可以大大减少需要保存和处理的数据量。
在步骤102,为每一数据信号计算第一哈希值。例如,可使用诸如SHA1、SHA256之类哈希算法来依次为每一数据信号(数据信号的示例为例如图3中的左边的一串字符)计算相应的第一哈希值(哈希值的示例为例如图3中右边的一串字符)。由于利用哈希算法计算出的各个第一哈希值是唯一的,因此其可作为相应数据信号的唯一标识。
在步骤103,分别将每一第一哈希值与相应的数据信号作为键值对保存在键值数据库中。也就是说,在本申请中,将每一第一哈希值作为键(key),并将相应的数据信号作为值(value)存储在键值数据库中的第一表格中。为了便于理解,以下通过表格1示出了该第一表格的一个示例。值得一提的是,虽然在表格1中包括四个第一个哈希值和四个相应的数据信号,但是根据实际情况,可包括更多或更少的第一哈希值和数据信号。
表格1
在步骤104,基于每一第一哈希值,生成第一默克尔树(Merkel Tree)。生成第一默克尔树的目的是为了能够更高效地组织数据信号的第一哈希值,从而可以提高对其进行检索和匹配的效率,进而有助于提高对其完整性和可靠性进行验证的效率。
具体地,在本申请中,第一默克树可通过以下方式生成:将两个相邻的第一哈希值合并成一个字符串,然后利用SHA1或SHA256之类的哈希算法计算该字符串的哈希值,从而得到相应的子哈希值,以此方法每两个第一哈希值作为一对计算相应的子哈希值,从而得到了一组“子哈希值”,并如此递归直到生成该第一默克尔树以及该第一默克尔树的根哈希值(root-hash)为止。
仅用于说明的目的,图4中示出了生成第一默克尔树的方法的一个示例。在图4中,已分别为数据信号0、数据信号1、数据信号2和数据信号3生成了第一哈希值00、第一哈希值01、第一哈希值02和第一哈希值03。为了生成第一默克尔树,将相邻的第一哈希值00和第一哈希值01合并成一个字符串,并利用诸如SHA1、SHA256之类的哈希算法计算该字符串的哈希值,从而得到子哈希值0;将相邻的第一哈希值02和第一哈希值03合并成一个字符串,并利用诸如SHA1、SHA256之类的哈希算法计算该字符串的哈希值,从而得到子哈希值1;然后,将子哈希值0和子哈希值1合并成一个字符串,并利用诸如SHA1、SHA256之类的哈希算法计算该字符串的哈希值,从而得到整个默克尔树以及相应的根哈希值。在图4中是以存在四个数据信号,即存在四个第一哈希值的情况来进行说明的,但是在实际应用,有可能存在更多或更少的数据信号,从而存在更多或更少的第一哈希值,因此在这些情况下可基于更多或更少的第一哈希值生成第一默克尔树以及相应的根哈希值。
虽然在图1中,将步骤103描绘为在步骤104之前发生,但是在实际使用中步骤103也可在步骤104之后发生,或者与其同时发生,而不背离本申请所要求保护的范围。
在步骤105,将第一默克尔树以及多个数据信号中的关键数据信号存储到区块链中,并生成相应的电子货币地址和交易时间戳。在本申请中,关键数据信号指的是多个数据信号中对于确定异常事件发生的原因所必须的数据信号,例如规划、决策和控制指令数据信号。在本申请中,由于将关键数据保存到了区块链中,因此可以有效地确保这些关键数据信号的完整性、公正性和可信性。应理解,在该实施例中,电子货币地址指的是第一默克尔树以及关键数据信号存储在区块链上的地址,交易时间戳指的是将第一默克尔树以及关键数据信号存储到区块链上的时间,因此基于电子货币地址和交易时间戳,可以在需要时将第一默克尔树以及关键数据信号从区块链中读取出。
参考图2,在本申请的实施例中,本申请的无人驾驶信息存储方法在为每一数据信号计算第一哈希值之前,还可包括步骤201。在步骤201,利用压缩算法对每一数据信号进行压缩,并用密钥对每一经压缩的数据信号进行加密。通过压缩,可有助于进一步减少供保存到键值数据库和区块链中的数据的量,从而可以节省存储空间和带宽。用密钥对每一经压缩的数据信号进行加密可以保证各个数据信号的安全性和隐私性。
值得一提的是,在执行了步骤201的情况下,在步骤105,在将第一默克尔树以及多个数据信号的关键数据信号保存到区块链中的同时,还需将密钥存储到区块链中。应理解,在该实施例中,电子货币地址指的是第一默克尔树、密钥以及关键数据信号存储在区块链上的地址,交易时间戳指的是将第一默克尔树、密钥以及关键数据信号存储到区块链上的时间,因此基于电子货币地址和交易时间戳,可以在需要时将第一默克尔树、密钥以及关键数据信号从区块链中读取出。
继续参考图2,在本申请的实施例中,本申请的无人驾驶信息存储方法还可包括步骤202。在步骤202,可将在步骤105生成的第一默克尔树的根哈希值与所有叶哈希值作为键值对保存在键值数据库中。具体地,将第一默克尔树的根哈希值作为键,并将第一默克尔树的所有叶哈希值作为值保存在键值数据库的第二表格中。为了便于理解,以下通过表格2示出了该第二表格的一个示例,具体地该示例是将图4所示的第一默克尔树的根哈希值和所有叶哈希值保存在键值数据库中的示例。
表格2
虽然在附图2中,将步骤105描绘为在步骤202之前发生,但是在实际使用中步骤105也可在步骤202之后发生,或者与其同时发生,而不背离本申请所要求保护的范围。
继续参考图2,在本申请的实施例中,本申请所述的无人驾驶信息存储方法还可进一步包括步骤203-205。
在步骤203,分别为电子货币地址和交易时间戳计算第二哈希值。例如,可使用诸如SHA1、SHA256之类的哈希算法来依次为电子货币地址和交易时间戳计算相应的第二哈希值。
在步骤204,将两个第二哈希值合并后计算第二根哈希值。具体地,可通过将为电子货币地址计算的第二哈希值和为交易时间戳计算的第二哈希值合并成一个字符串,然后利用诸如SHA1、SHA256之类的哈希算法计算该字符串的哈希值,就可得到该第二根哈希值。
在步骤205,将第二根哈希值与货币交易地址和交易时间戳作为键值对保存在键值数据库中。具体地,可通过将第二根哈希值作为键,并将货币交易地址和交易时间戳作为值来将第二根哈希值与货币交易地址和交易时间戳保存在键值数据库的第三表格中。为了便于理解,以下通过表格3示出了该第三表格的一个示例。在一种实现中,可将第二根哈希值发送给用户并向用户开放查询相应的键值数据库表格(例如,表格3)的权限,使得用户可根据该第二根哈希值检索出相应的货币交易地址和交易时间戳,以供在数据回放时使用。在另一种实现中,也可直接将货币交易地址和交易时间戳发送给用户,以供在数据回放时使用。
表格3
经存储的无人驾驶信息在需要的时候可以被回放,从而使得相关部门可以使用这些信息来例如对事故现场进行还原和事故定责。因此,在本申请中,还提供了一种无人驾驶信息回放方法。如图5所示,在一实施例中,该方法可包括步骤501-506。
在步骤501,获取与无人驾驶车辆的异常事件相关联的电子货币地址和交易时间戳。在一种实现中,在相应的无人驾驶信息存储方法包括步骤203-205的实施例中,步骤501可包括,根据第二根哈希值,从键值数据库表格中(例如,从键值数据库的第三表格中)获取电子货币地址和交易时间戳。在另一种实现中,在电子货币地址和交易时间戳被直接发送给用户的情况下,用户可直接获取电子货币地址和交易时间戳。
在步骤502,基于电子货币地址和交易时间戳,从区块链获取第一默克尔树。在一种实现中,在相应的无人驾驶信息存储方法还包括步骤201的情况下,在基于电子货币地址和交易时间戳,从区块链获取第一默克尔树的同时,还从区块链获取相应的密钥。正如前面所提到的,在本申请中,电子货币地址指的是第一默克尔树、密钥以及关键数据信号存储在区块链上的地址,交易时间戳指的是将第一默克尔树、密钥以及关键数据信号存储到区块链上的时间,因此基于该电子货币地址和交易时间戳,可以从区块链中读取出第一默克尔树、密钥以及关键数据信号。在本申请中,关键数据信号指的是多个数据信号中对于确定异常事件发生的原因所必须的数据信号,例如规划、决策和控制指令数据信号。
在步骤503,基于第一默克尔树的根哈希值,从键值数据库获取多个数据信号。这些数据信号可包括例如用于指示无人驾驶车辆发生异常事件的时间的时间戳信号、用于指示无人驾驶车辆在发生异常事件时所处的位置的位置信号、安装或固定在无人驾驶车辆上的各个传感器在发生异常事件时检测到的传感器信号、以及相应的规划、决策和控制指令数据信号等。在一种实现中,该步骤503可包括:基于第一默克尔树的根哈希值,从键值数据库中(例如,从键值数据库的第二表格中)获取多个第一哈希值,以及基于每一第一哈希值,从键值数据库中(例如,从键值数据库的第一表格中)获取多个数据信号。
在步骤504,基于多个数据信号生成第二默克尔树。在一种实现中,该步骤504可包括:为每一数据信号计算第三哈希值,以及基于第三哈希值,生成第二默克尔树。
在步骤505,将在步骤504生成的第二默克尔树与第一默克尔树进行比较。
在步骤506,在第二默克尔树与第一默克尔树不一致的情况下,基于电子货币地址和交易时间戳,从区块链获取关键数据信号。在相应的无人驾驶信息存储方法还包括步骤201的情况下,步骤506可进一步包括,用密钥对关键数据信号进行解密,从而获得对于确定异常事件发生的原因所必须的数据信号。在第二默克尔树与所述第一默克尔树不一致的情况下,说明存储在数据库中的数据至少有一项被篡改了,而通过从区块链获取关键数据信号,可以确保能够完整地还原出可信的关键数据信号,从而在无人车发生交通事故之类的异常情况的时候,可以帮助有关部门对事故现场进行还原和事故定责。
继续参考图5,在本申请的实施例中,该无人驾驶信息回放方法还可包括步骤507。在步骤507,在第二默克尔树与第一默克尔树不一致的情况下,还可标识出第二默克尔树与第一默克尔树不一致的叶子节点,以确定多个数据信号中已被篡改的数据信号。通过该步骤,使得可以容易地甄别出到底哪部分数据被篡改,从而可帮助无人车厂商进行复盘来不断的修正和优化自动驾驶算法。
在一种实现中,即在相应的无人驾驶信息存储方法还包括步骤201的情况下,本申请还可包括步骤508。在步骤508,在第二默克尔树与第一默克尔树一致的情况下,利用密钥对多个数据信号进行解密,从而获得与这些数据信号的原始数据信号。
根据一实施例,本申请还提供了一种无人驾驶信息存储装置以及相应的无人驾驶信息回放装置,如图6所示,这两个装置都包括存储器601和处理器602,存储器601内存储有机器可执行程序。处理器602在执行该机器可执行程序时,实现上述实施例中描述的无人驾驶信息存储装置以及相应的无人驾驶信息回放装置。在本申请中,存储器601和处理器602的数量可以为一个或多个。在本申请中,该无人驾驶信息存储装置以及相应的无人驾驶信息回放装置可以采用电子设备来实现,该电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。在本申请中,这两种装置可以在分开的电子设备中实现,也可以在同一电子设备中实现。
无人驾驶信息存储装置以及相应的无人驾驶信息回放装置均还可包括通信接口603,该通信接口603用于与外界设备(例如,用于实现区块链的区块链系统和键值数据库等)进行通信(有线或无线),以与其进行数据交互。在一种实现中,键值数据库可以与无人驾驶信息存储装置以及相应的无人驾驶信息回放装置在同一电子设备中实现。在另一实现中,键值数据库也可以与无人驾驶信息存储装置以及相应的无人驾驶信息在分开的电子设备中实现。
存储器601可以包括非易失性存储器和易失性存储器。非易失性存储器可包括例如只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括例如随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
存储器601、处理器602和通信接口603可以通过总线相互连接并实现相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Component,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 无人驾驶信息存储和回放方法、装置及存储介质
- 信息处理装置和方法、存储介质、回放装置、及回放方法