具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本申请的实施例提供了一种地图更新方法、计算机设备和存储介质。其中,该地图更新方法可以应用于自移动设备中,通过根据第一地图中灰度值变化的栅格点的栅格信息更新第二地图,无需传输整个第一地图的全部栅格点的栅格信息,减小了传输的数据量和时间,提高了地图更新的实时性。
其中,自移动设备可以包括但不限于扫地机、除草机、送餐机器人以及迎宾机器人等可移动的设备。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
如图1所示,地图更新方法包括步骤S10至步骤S40。
步骤S10、获取第一地图在当前时刻的属性信息以及上一时刻的属性信息,所述第一地图的属性信息用于构建第二地图。
需要说明的是,本申请实施例提供的地图更新方法可以应用于自移动设备将构建的地图更新至目标设备的场景中;自移动设备可以根据所在的环境和位置构建第一地图,目标设备可以根据第一地图的属性信息构建第二地图,其中,第一地图和第二地图可以是栅格地图,栅格地图中的每个栅格点都有对应的灰度值;然后,当第一地图发生更新时,自移动设备可以将灰度值变化的栅格点的栅格信息发送至目标设备,以供目标设备根据栅格信息更新第二地图。从而,无需传输整个第一地图的全部栅格点的栅格信息,减小了传输的数据量和时间,提高了地图更新的实时性。
传统地,在使用栅格地图建图时,需要将栅格地图进行离散化,将离散化的数据存储在一个矩阵中,其中,矩阵中的元素对应栅格地图中的栅格点,元素的值为对应的栅格点的灰度值。在将栅格地图更新至目标设备时,需要发送整个矩阵至目标设备,导致了传输数据量大和传输时间长的问题,进而降低了地图更新的实时性。而在本申请实施例中,只需要将灰度值变化的栅格点的栅格信息发送至目标设备,即将栅格地图对应的矩阵中的部分元素发送至目标设备,从而可以减小传输的数据量和时间,提高了地图更新的实时性。
示例性的,目标设备可以是服务器,也可以是终端。其中,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式电脑和可穿戴设备等电子设备。
需要说明的是,在本申请实施例中,在自移动设备构建第一地图之前,需要先设定第一地图的属性信息,然后根据属性信息创建初始的第一地图。其中,属性信息可以包括第一地图的长度、宽度以及分辨率等信息。属性信息可以存储在本地磁盘或本地数据库,还可以存储在属性信息发送区,用于将属性信息发送至目标设备。
在一些实施例中,在设定第一地图的属性信息之后,还可以包括:将属性信息发送至属性信息发送区,对属性信息发送区中的属性信息进行封装,并将得到的封装数据发送至目标设备,以供目标设备根据封装数据构建第二地图。以便后续可以对目标设备构建好第二地图进行更新。
示例性的,当封装数据中的属性信息:长度5cm,宽度5cm,分辨率为0.1,目标设备可以根据该属性信息构建一张5cm×5cm的空白的第二地图,然后根据分辨率,将第二地图切分成50×50个点;其中,第二地图中的每个点相当于一个栅格点。
在一些实施例中,获取第一地图在当前时刻的属性信息以及上一时刻的属性信息。示例性的,在更新第二地图之前,可以获取第一地图在当前时刻T2的属性信息以及上一时刻T1的属性信息;然后,判断在T1和T2两个时刻的属性信息是否发生变化。
需要说明的是,为了确保第一地图的属性信息与目标设备上的第二地图的属性信息一致,需要在更新第二地图之前,确定第一地图的属性信息是否发生变化。若第一地图的属性信息发生变化,则需要更新第二地图的属性信息,以确保后续在设定的范围内对第二地图进行更新,以避免栅格点散乱越界的问题。
可以理解的是,在第一地图建图的过程中,可以根据实际情况调整第一地图的属性信息。例如,调整第一地图的长度或宽度。又例如,调整第一地图的分辨率,等等。因此,第一地图的属性信息是有可能发生变化的。
通过获取第一地图在当前时刻的属性信息以及上一时刻的属性信息,可以检测第一地图的属性信息是否发生变化,进而实现在第一地图的属性信息发生变化时更新第二地图的属性信息,确保后续在设定的范围内对第二地图进行更新,以避免栅格点散乱越界的问题。
步骤S20、在所述第一地图的当前时刻的属性信息相对上一时刻的属性信息未发生改变时,获取所述第一地图中的每个栅格点在当前时刻的灰度值以及上一时刻的灰度值。
在本申请实施例中,在获取第一地图在当前时刻的属性信息以及上一时刻的属性信息后,需要判断第一地图的当前时刻的属性信息相对上一时刻的属性信息是否发生改变。
在一些实施例中,在第一地图的当前时刻的属性信息相对上一时刻的属性信息未发生改变时,获取第一地图中的每个栅格点在当前时刻的灰度值以及上一时刻的灰度值。
可以理解的是,当第一地图的当前时刻的属性信息相对上一时刻的属性信息未发生改变时,此时不需要对第二地图的属性信息进行更新,而是直接检测第一地图中灰度值发生变化的栅格点。
在另一些实施例中,本申请实施例提供的地图更新方法,还可以包括:在当前时刻的属性信息与上一时刻的属性信息不同时,将当前时刻的属性信息保存到属性信息发送区中;获取第一编码值,并对第一编码值与属性信息发送区中保存的属性信息进行封装,并将得到的封装数据发送至目标设备。
在本申请实施例中,编码值作为一种可用于校验的唯一标识编码,可以随机生成,每一次获取的编码值可以相同,也可以设置为不相同。在一实施例中,每次获取的编码值可以以预设规律进行递增或者递减。
因此,第一编码值作为一种编码值,可以根据属性信息的封装次数进行设定,例如,第一编码值每次可以根据当前的封装次数进行自动加1,或者自动减1,当然也可以采用其它方式设定,具体的编码值在此不作限定。第一编码值用于确定属性信息是否成功发送至目标设备,以及用于确定已发送至目标设备的属性信息与属性信息发送区中的属性信息是否一致。
示例性的,可以对第一编码值与属性信息发送区中更新后的属性信息进行封装,得到封装数据。此外,还可以计算第一编码值与更新后的属性信息的校验码,然后,对第一编码值、校验码与更新后的属性信息进行封装,得到封装数据。
需要说明的是,校验码用于目标设备对接收到的属性信息的准确性与完整性进行校验。其中,可以将第一编码值与更新后的属性信息进行组合,将组合得到的字节作为校验码;还可以对第一编码值与更新后的属性信息进行加密,将得到的加密信息作为校验码。
通过在确定当前时刻的属性信息与上一时刻的属性信息不同时,在属性信息发送区中保存属性信息,并对第一编码值与属性信息发送区中保存的属性信息进行封装,将得到的封装数据发送至目标设备,可以实现在第一地图的属性信息发生变化时更新第二地图的属性信息,确保后续在设定的范围内对第二地图进行更新,避免栅格点散乱越界的问题。
在一些实施例中,将得到的封装数据发送至目标设备之后,还可以包括:清除属性信息发送区中的属性信息。
需要说明的是,在本申请实施例中,若属性信息发送区存储有属性信息,则会对属性信息发送区中的属性信息进行封装,得到封装数据。当将封装数据发送至目标设备之后,为避免频繁对属性信息进行封装,需要清除属性信息发送区中的属性信息。
在一些实施例中,将得到的封装数据发送至目标设备之后,还可以包括:若属性信息发送成功,则清除属性信息发送区中的属性信息;若属性信息发送失败,则重新对属性信息发送区中的属性信息进行封装,并将得到的封装数据发送至目标设备。
示例性的,当第一预设时间内接收到目标设备的第一应答消息中的编码值与封装数据中的第一编码值相同时,确定属性信息发送成功。其中,第一预设时间可以根据实际情况设定,具体数值在此不作限定。
示例性的,当第一预设时间内未接收到目标设备的第一应答消息时,更新第一编码值后,返回执行对第一编码值与属性信息发送区中保存的属性信息进行封装的步骤,直至接收到目标设备的第一应答消息。
示例性的,当接收到的目标设备的第一应答消息中的编码值与第一编码值不相同时,更新第一编码值后,返回执行对第一编码值与属性信息发送区中保存的属性信息进行封装的步骤,直至接收到的目标设备的第一应答消息中的编码值与第一编码值相同。
也就是说,第一预设时间内未接收到目标设备的第一应答消息或者接收到目标设备的第一应答消息中的编码值与第一编码值不相同时,确定属性信息发送失败。此时,可能是属性信息发送区中的属性信息已经更新。
其中,第一预设时间可以根据实际情况设定,具体数值在此不作限定。
示例性的,当确定属性信息发送失败时,通过上述随机生成、预设规律递增或递减的任意一种编码值的生成方式,以获取新的第一编码值,并将新的第一编码值作为更新后的第一编码值。将更新后的第一编码值与属性信息发送区中保存的属性信息进行封装,例如,前一个第一编码值为0,则可以通过递增1的方式得到当前更新后的第一编码值是1。在更新第一编码值后,对更新后的第一编码值与属性信息发送区中的属性信息进行封装,以获取更新后的封装数据,并将更新后的封装数据再次发送至目标设备中。需要说明的是,由于时间变化的原因,保存在属性信息发送区中的属性信息可能也会发生变化,也可能未发生变化,不论是否发生变化,本实施例均是对当前时刻保存在属性信息发送区中的属性信息,和当前时刻更新后的第一编码值进行封装。通过在确定属性信息成功发送时,清除属性信息发送区中的属性信息,可以避免频繁对属性信息进行封装,节省资源。通过在确定属性信息发送失败时,重新对属性信息发送区中的属性信息进行封装,并将得到的封装数据发送至目标设备,可以有效提高成功更新第二地图的属性信息的概率。
在一些实施例中,将得到的封装数据发送至目标设备之后,还可以包括:遍历第一地图的每个栅格点,确定每个栅格点对应的栅格信息;将每个栅格点对应的栅格信息发送至目标设备,以供目标设备根据每个栅格点对应的栅格信息对第二地图进行栅格点填充。
可以理解的是,目标设备在接收到封装数据后,根据封装数据中的属性信息构建的第二地图是空白地图。在根据第一地图中灰度值变化的栅格点的栅格信息更新第二地图时,若第一地图在上一时刻并不是空白地图,则会出现更新后的第二地图与第一地图不同步的情况。为了避免这种情况,在将得到的封装数据发送至目标设备之后,需要将第一地图中的每个栅格点对应的栅格信息发送至目标设备,以使得第二地图与第一地图同步。
示例性的,栅格信息可以包括每个栅格点对应的索引值、灰度值以及索引值与灰度值之间的关联关系。其中,索引值用于识别第一地图中的栅格点。例如,可以对第一地图中的每个栅格点进行编号,将编号作为索引值。当然,也可以采用其它方式设定栅格点的索引值,在此不作限定。
通过将每个栅格点对应的栅格信息发送至目标设备,以使得目标设备根据每个栅格点对应的栅格信息对第二地图进行栅格点填充,从而可以确保在根据目标栅格点的属性信息更新第二地图之前,第二地图和第一地图是同步的。
步骤S30、将当前时刻的灰度值和上一时刻的灰度值不同的栅格点确定为目标栅格点。
请参阅图2,图2是本申请实施例提供的一种不同时刻的第一地图的示意图。如图2所示,在第一地图中建图时,可以实时或每隔一段时间记录第一地图中的每个栅格点对应的灰度值。例如,在时刻T1、时刻T2、时刻T3分别记录第一地图中的每个栅格点对应的灰度值。
示例性的,若当前时刻为T2,上一时刻为T1,则可以将第一地图中的栅格点在当前时刻T2的灰度值和上一时刻T1的灰度值进行比对。例如,若第一地图中的栅格点A在当前时刻T2的灰度值和上一时刻T1的灰度值不同,则可以将栅格点A确定为目标栅格点。若第一地图中的栅格点B在当前时刻T2的灰度值和上一时刻T1的灰度值不同,则还可以将栅格点B确定为目标栅格点。
通过将当前时刻的灰度值和上一时刻的灰度值不同的栅格点确定为目标栅格点,后续可以实现将目标栅格点的栅格信息发送至目标设备,无需将第一地图中的全部栅格点的栅格信息发送至目标设备。
步骤S40、将所述目标栅格点的栅格信息发送至目标设备,所述栅格信息用于指示所述目标设备更新第二地图。
在本申请实施例中,在确定第一地图中的目标栅格点之后,需要将目标栅格点的栅格信息发送至目标设备,以供目标设备根据栅格信息更新第二地图。
通过将目标栅格点的栅格信息发送至目标设备,可以实现根据第一地图中灰度值变化的栅格点的栅格信息更新第二地图,无需传输整个第一地图的全部栅格点的栅格信息,减小了传输的数据量和时间,提高了地图更新的实时性。
请参阅图3,图3是本申请实施例提供的一种发送栅格信息的子步骤的示意性流程图,具体可以包括以下步骤S401至步骤S403。
步骤S401、获取所述第一地图中的每个所述目标栅格点的栅格信息,将每个所述目标栅格点的栅格信息发送至等待发送区,直至完成对所述第一地图中的目标栅格点的遍历,将所述等待发送区中的全部栅格信息发送至就绪发送区。
示例性的,可以对第一地图中的目标栅格点进行遍历,依次获取每个目标栅格点的栅格信息,将每个目标栅格点的栅格信息发送至等待发送区。
需要说明的是,在本申请实施例中,对第一地图中的目标栅格点进行遍历时,分别将每个目标栅格点的栅格信息缓存至等待发送区;待完成对第一地图中的目标栅格点的遍历,将等待发送区中的全部栅格信息迁移至就绪发送区,以对全部栅格信息进行封装。
在一些实施例中,获取第一地图中的每个目标栅格点的栅格信息,可以包括:获取每个目标栅格点的索引值;将每个目标栅格点的索引值与每个目标栅格点当前时刻的灰度值进行关联,得到每个目标栅格点的栅格信息。
示例性的,对于目标栅格点A,可以获取目标栅格点A的索引值,并将目标栅格点A的索引值与目标栅格点A当前时刻的灰度值进行关联,得到目标栅格点A的栅格信息。例如,若当前时刻为T2,则可以将目标栅格点A的索引值与目标栅格点A当前时刻T2的灰度值进行关联。
需要说明的是,通过获取每个目标栅格点的索引值,并每个目标栅格点的索引值与每个目标栅格点当前时刻的灰度值进行关联,可以实现目标设备根据目标栅格信息更新第二地图时,便于对需要更新的栅格点进行定位,提高了更新效率以及避免更新出错。
步骤S402、获取第二编码值,对所述第二编码值与所述就绪发送区中的每个所述目标栅格点的栅格信息进行封装,以得到目标栅格信息。
需要说明的是,第二编码值可以根据对栅格信息的封装次数进行设定,当然也可以采用其它方式设定,具体数值在此不作限定。
在一些实施方式中,可以对第二编码值与就绪发送区中的每个目标栅格点的栅格信息进行封装,得到目标栅格信息。
在另一些实施方式中,还可以计算第二编码值与就绪发送区中的每个目标栅格点的栅格信息。然后,对第二编码值、校验码与每个目标栅格点的栅格信息进行封装,得到目标栅格信息。
需要说明的是,校验码用于目标设备校验接收到的目标栅格信息的准确性与完整性。具体的校验过程在此不作限定。其中,可以将第二编码值与就绪发送区中的每个目标栅格点的栅格信息进行组合,将组合得到的字节作为校验码;还可以对第二编码值与就绪发送区中的每个目标栅格点的栅格信息进行加密,将得到的加密信息作为校验码。
通过获取第二编码值,并对第二编码值与就绪发送区中的每个目标栅格点的栅格信息进行封装,后续可以在发送目标栅格信息之后,根据目标设备反馈的编码值与第二编码值判断是否成功发送目标栅格信息以及发送的目标栅格信息是否是最新的。
步骤S403、向所述目标设备发送封装得到的目标栅格信息。
示例性的,在对第二编码值与就绪发送区中的每个目标栅格点的栅格信息进行封装之后,可以向目标设备发送封装得到的目标栅格信息,以使目标设备根据目标栅格信息更新第二地图。其中,具体的发送方式,在此不作限定。
示例性的,目标设备在成功接收到自移动设备发送的目标栅格信息后,可以根据目标栅格信息对第二地图进行更新。请参阅图4和图5,图4是本申请实施例提供的一种更新前的第二地图的示意图,图5是本申请实施例提供的一种更新后的第二地图的示意图。
示例性的,目标设备可以获取目标栅格信息中的栅格信息,根据栅格信息对第二地图进行栅格点填充。例如,根据栅格信息中的索引值查找需要填充的栅格点,然后根据索引值关联的灰度值对需要填充的栅格点进行灰度填充,得到更新后的第二地图,如图5所示。其中,不同的灰度值代表不同的颜色。
在本申请实施例中,还可以通过目标设备对自移动设备的建图过程进行控制。如图4和图5所示,可以在目标设备显示第二地图的界面设置多个按键和选项,其中,“获取地图数据”按键用于获取自移动设备中的地图数据;“开始建图”按键用于触发自移动设备开始构建地图;“停止建图”按键用于触发自移动设备停止建图;“清除数据”按键用于触发自移动设备清除地图数据;“开始任务”按键用于触发自移动设备在建好的地图的基础上,执行作业任务,例如割草任务;“设置自移动设备参数”选项用于设置自移动设备的工作参数等等;“自移动设备控制”选项用于控制自移动设备,例如控制自移动设备的行走轨迹。
在本申请实施例中,自移动设备向目标设备发送封装得到的目标栅格信息,若目标设备接收到目标栅格信息,则目标设备会根据目标栅格信息中的第二编码值生成第二应答消息并将第二应答消息返回自移动设备。其中,在发送目标栅格信息过程中,有可能存在数据丢失的情况,导致目标设备无法接收到目标栅格信息,即目标栅格信息发送失败;也有可能在发送过程中,就绪发送区中的目标栅格信息发生更新,导致目标设备并不是根据最新的目标栅格信息更新第二地图,这种情况也可以视为目标栅格信息发送失败。因此,在向目标设备发送封装得到的目标栅格信息之后,需要判断目标栅格信息是否发送成功。当目标栅格信息发送失败时,需要重新发送,从而可以提高目标栅格信息发送成功的概率,进而提高第二地图更新的准确性。
在一些实施例中,向目标设备发送封装得到的目标栅格信息之后,还可以包括:当第二预设时间内未接收到目标设备的第二应答消息时,返回执行向目标设备发送封装得到的目标栅格信息的步骤,直至发送次数达到预设发送次数仍未接收到第二应答消息时,停止发送操作,并确定目标栅格信息发送失败。
其中,第二预设时间可以根据实际情况设定,具体数值在此不作限定。预设发送次数可以根据实际情况设定,具体数值在此不作限定。
在另一些实施例中,向目标设备发送封装得到的目标栅格信息之后,还可以包括:当接收到的目标设备的第二应答消息中的编码值与就绪发送区封装得到的目标栅格信息中的第二编码值不相同时,返回执行向目标设备发送封装得到的目标栅格信息的步骤;当接收次数达到预设接收次数,目标设备的第二应答消息中的编码值与目标栅格信息中的第二编码值仍不相同时,停止发送操作,确定目标栅格信息发送失败。
需要说明的是,当接收到的目标设备的第二应答消息中的编码值与就绪发送区中目标栅格信息中的第二编码值不相同时,说明就绪发送区中当前的目标栅格信息发生更新,因此需要重新向目标设备发送就绪发送区中的目标栅格信息。
通过在向目标设备发送封装得到的目标栅格信息之后,判断目标栅格信息是否发送成功,可以实现在目标栅格信息发送失败时,重新发送目标栅格信息,提高了目标栅格信息发送成功的概率,进而提高第二地图更新的准确性。
在另一些实施例中,向目标设备发送封装得到的目标栅格信息之后,还可以包括:当接收到的目标设备的第二应答消息中的编码值与目标栅格信息中的第二编码值相同时,确定目标栅格信息发送成功。
在一些实施例中,将封装得到的目标栅格信息发送至目标设备之后,还可以包括:当确定目标栅格信息发送失败时,将等待发送区中的栅格信息与就绪发送区中的栅格信息进行比对,确定等待发送区中的已更新栅格信息;将已更新栅格信息更新至就绪发送区;获取第三编码值,对第三编码值与就绪发送区中的栅格信息进行封装,并向目标设备发送封装得到的目标栅格信息。
示例性的,当确定目标栅格信息发送失败时,可以将等待发送区中的栅格信息与就绪发送区中的栅格信息进行比对,将等待发送区中的与就绪发送区不相同的栅格信息,确定为等待发送区中的已更新栅格信息。例如,将等待发送区中的灰度值与就绪发送区中的灰度值进行比对。
示例性的,根据已更新栅格信息,对就绪发送区中的栅格信息进行更新;然后,对第三编码值与就绪发送区中更新后的栅格信息进行封装,并向目标设备发送封装得到的目标栅格信息。其中,具体的封装过程和发送过程,参见上述实施例的详细说明,具体过程在此不作赘述。
需要说明的是,第三编码值可以根据对栅格信息的封装次数进行设定,当然也可以采用其它方式设定,具体数值在此不作限定。
通过在确定目标栅格信息发送失败时,根据等待发送区中的已更新栅格信息更新至就绪发送区,对第三编码值与就绪发送区中的栅格信息进行封装,并向目标设备发送封装得到的目标栅格信息,可以实现将最新的栅格信息更新至第二地图。
上述实施例提供的地图更新方法,通过获取第一地图在当前时刻的属性信息以及上一时刻的属性信息,可以检测第一地图的属性信息是否发生变化,进而实现在第一地图的属性信息发生变化时更新第二地图的属性信息,确保后续在设定的范围内对第二地图进行更新,避免栅格点散乱越界的问题;通过将每个栅格点对应的栅格信息发送至目标设备,以使得目标设备根据每个栅格点对应的栅格信息对第二地图进行栅格点填充,从而可以确保在根据目标栅格点的属性信息更新第二地图之前,第二地图和第一地图是同步的;通过将目标栅格点的栅格信息发送至目标设备,可以实现根据第一地图中灰度值变化的栅格点的栅格信息更新第二地图,无需传输整个第一地图的全部栅格点的栅格信息,减小了传输的数据量和时间,提高了地图更新的实时性;通过获取每个目标栅格点的索引值,并每个目标栅格点的索引值与每个目标栅格点当前时刻的灰度值进行关联,可以实现目标设备根据目标栅格信息更新第二地图时,便于对需要更新的栅格点进行定位,提高了更新效率以及避免更新出错;通过在向目标设备发送封装得到的目标栅格信息之后,判断目标栅格信息是否发送成功,可以实现在目标栅格信息发送失败时,重新发送目标栅格信息,提高了目标栅格信息发送成功的概率,进而提高第二地图更新的准确性。
请参阅图6,图6是本申请实施例提供的一种地图更新装置1000的示意性框图,该地图更新装置用于执行前述的地图更新方法。其中,该地图更新装置可以配置于自移动设备中。
如图6所示,该地图更新装置1000,包括:属性信息获取模块1001、灰度值获取模块1002、栅格点确定模块1003和地图更新模块1004。
属性信息获取模块1001,被配置为获取第一地图在当前时刻的属性信息以及上一时刻的属性信息;所述第一地图的属性信息用于构建第二地图。
灰度值获取模块1002,被配置为在所述第一地图的当前时刻的属性信息相对上一时刻的属性信息未发生改变时,获取所述第一地图中的每个栅格点在当前时刻的灰度值以及上一时刻的灰度值。
栅格点确定模块1003,被配置为将当前时刻的灰度值和上一时刻的灰度值不同的栅格点确定为目标栅格点。
地图更新模块1004,被配置为将所述目标栅格点的栅格信息发送至目标设备,所述栅格信息用于指示所述目标设备更新第二地图。
上述各个模块实现地图更新方法的过程请参考前述实施例中地图更新方法的描述,此处不再赘述。
请参阅图7,图7是本申请实施例提供的一种计算机设备的结构示意性框图。
请参阅图7,该计算机设备包括通过系统总线连接的处理器和存储器,其中,存储器可以包括存储介质和内存储器。所述存储介质可以是非易失性存储介质,也可以是易失性存储介质。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种地图更新方法。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
获取第一地图在当前时刻的属性信息以及上一时刻的属性信息;在所述第一地图的当前时刻的属性信息相对上一时刻的属性信息未发生改变时,获取所述第一地图中的每个栅格点在当前时刻的灰度值以及上一时刻的灰度值;将当前时刻的灰度值和上一时刻的灰度值不同的栅格点确定为目标栅格点;将所述目标栅格点的栅格信息发送至目标设备,所述栅格信息用于指示所述目标设备更新第二地图,所述第二地图为基于所述第一地图的属性信息构建的地图。
在一个实施例中,所述处理器还用于实现:
在当前时刻的属性信息与上一时刻的属性信息不同时,将当前时刻的属性信息保存到所述属性信息发送区中;获取第一编码值,并对所述第一编码值与所述属性信息发送区中更新后的属性信息进行封装,并将得到的封装数据发送至所述目标设备。
在一个实施例中,所述处理器在实现将得到的封装数据发送至所述目标设备之后,用于实现:
当第一预设时间内未接收到所述目标设备的第一应答消息时,更新所述第一编码值后,返回执行对所述第一编码值与所述属性信息发送区中保存的属性信息进行封装的步骤,直至接收到所述目标设备的第一应答消息;
当接收到的所述目标设备的第一应答消息中的编码值与所述第一编码值不相同时,更新所述第一编码值后,返回执行对所述第一编码值与所述属性信息发送区中保存的属性信息进行封装的步骤,直至接收到的所述目标设备的第一应答消息中的编码值与所述第一编码值相同。
在一个实施例中,所述处理器在实现将得到的封装数据发送至所述目标设备之后,用于实现:
清除所述属性信息发送区中的属性信息。
在一个实施例中,所述处理器在实现将得到的封装数据发送至所述目标设备之后,用于实现:
遍历所述第一地图的每个栅格点,确定每个所述栅格点对应的栅格信息;将每个所述栅格点对应的栅格信息发送至所述目标设备,以供所述目标设备根据每个所述栅格点对应的栅格信息对所述第二地图进行栅格点填充。
在一个实施例中,所述处理器在实现将所述目标栅格点的栅格信息发送至目标设备时,用于实现:
获取所述第一地图中的每个所述目标栅格点的栅格信息,将每个所述目标栅格点的栅格信息发送至等待发送区,直至完成对所述第一地图中的目标栅格点的遍历,将所述等待发送区中的全部栅格信息发送至就绪发送区;获取第二编码值,对所述第二编码值与所述就绪发送区中的每个所述目标栅格点的栅格信息进行封装,以得到目标栅格信息;向所述目标设备发送封装得到的目标栅格信息。
在一个实施例中,所述处理器在实现获取所述第一地图中的每个所述目标栅格点的栅格信息时,用于实现:
获取每个所述目标栅格点的索引值;将每个所述目标栅格点的索引值与每个所述目标栅格点当前时刻的灰度值进行关联,得到每个所述目标栅格点的栅格信息。
在一个实施例中,所述处理器在实现向所述目标设备发送封装得到的目标栅格信息之后,还用于实现:
当第二预设时间内未接收到所述目标设备的第二应答消息时,返回执行向所述目标设备发送封装得到的目标栅格信息的步骤,直至发送次数达到预设发送次数仍未接收到第二应答消息时,停止发送操作,并确定所述目标栅格信息发送失败;当接收到的所述目标设备的第二应答消息中的编码值与所述就绪发送区封装得到的目标栅格信息中的第二编码值不相同时,返回执行向所述目标设备发送封装得到的目标栅格信息的步骤;当接收次数达到预设接收次数,所述目标设备的第二应答消息中的编码值与所述目标栅格信息中的第二编码值仍不相同时,停止发送操作,确定所述目标栅格信息发送失败。
在一个实施例中,所述处理器在实现将封装得到的目标栅格信息发送至所述目标设备之后,还用于实现:
当确定所述目标栅格信息发送失败时,将所述等待发送区中的栅格信息与所述就绪发送区中的栅格信息进行比对,确定所述等待发送区中的已更新栅格信息;将所述已更新栅格信息更新至所述就绪发送区;获取第三编码值,对所述第三编码值与所述就绪发送区中的栅格信息进行封装,并向所述目标设备发送封装得到的目标栅格信息。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项地图更新方法。
例如,该程序被处理器加载,可以执行如下步骤:
获取第一地图在当前时刻的属性信息以及上一时刻的属性信息;在所述第一地图的当前时刻的属性信息相对上一时刻的属性信息未发生改变时,获取所述第一地图中的每个栅格点在当前时刻的灰度值以及上一时刻的灰度值;将当前时刻的灰度值和上一时刻的灰度值不同的栅格点确定为目标栅格点;将所述目标栅格点的栅格信息发送至目标设备,所述栅格信息用于指示所述目标设备更新第二地图,所述第二地图为基于所述第一地图的属性信息构建的地图。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字卡(Secure Digital Card,SD Card),闪存卡(Flash Card)等。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。