具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请的第一实施例涉及一种定位方法,应用于定位装置,例如,智能机器人、无人驾驶车辆、盲人导航装置等。如图1所示,定位方法包括:
步骤101:获取第一图像数据。
具体地说,定位装置通过视觉传感器,获取用于定位的第一图像数据。第一图像数据可以是视觉传感器拍摄的图像,也可以是解析图像后得到的数据,例如,图像中的角点信息。
步骤102:将第一图像数据传输至处于工作状态的N个处理装置。其中,N为正整数。
具体地说,每个处于工作状态的处理装置根据各自存储的地图和第一图像数据,确定第一反馈信息,并将第一反馈信息传输至定位装置。其中,每个处于工作状态的处理装置中存储的地图不同,第一反馈信息用于指示定位成功或定位失败。
需要说明的是,处理装置的个数可以根据地图的个数确定。定位过程中,处于工作状态的处理装置可以是一个处理装置,也可以是多个处理装置。处理装置的工作状态根据上一次定位过程中,处理装置确定的第一反馈信息确定。
需要说明的是,每个处理装置中存储的地图可以是描述同一空间的多幅地图中的一幅地图,也可以是一幅地图中的某一部分。该地图可以由定位装置创建,可以由处理装置创建,本实施例不限制地图的创建方式。
具体实现中,定位装置使用VSLAM技术,建立某一空间的多幅地图。其中,每幅地图各自对应的拍摄条件不同,存储的信息也不同。定位装置将多幅地图分别传输至不同的处理装置,以使每个处理装置中存储有不同的地图,减小定位装置的数据存储量。
步骤103:接收每个处于工作状态的处理装置各自传输的第一反馈信息。
步骤104:根据每个处于工作状态的处理装置各自传输的第一反馈信息,确定定位结果。
以下结合实际场景举例说明处理装置确定第一反馈信息的方法和定位装置根据第一反馈信息确定定位结果的方法。
例如,在一次定位过程中,处理装置A和处理装置B处于工作状态。处理装置A中存储有地图C,处理装置B中存储有地图D。定位装置获取用于定位的第一图像数据,将该第一图像数据传输至处理装置A和处理装置B。处理装置A根据第一图像数据和地图C,确定地图C中与第一图像数据相对应的信息,利用位姿测量算法,例如,采用点透视(Perspective nPoints,PnP)位姿测量算法,确定定位装置的位姿信息。处理装置A确定处理装置A的第一反馈信息中包括处理定位装置的位姿信息,该第一反馈信息指示处理装置A定位成功。处理装置A将处理装置A的第一反馈信息传输至定位装置。处理装置B根据第一图像数据和地图D,确定地图D中不存在与第一图像数据相对应的信息,传输指示定位失败的第一反馈信息至定位装置。定位装置根据处理装置A的第一反馈信息和处理装置B的第一反馈信息,确定处理装置A定位成功,将处理装置A确定的位姿信息作为定位结果。
值得一提的是,N个处理装置独立工作,并行地寻找当前的定位点,提高了定位效率。
与现有技术相比,本实施例中提供的定位方法,将多个地图存储于不同的处理装置,减少了定位装置的数据存储量,避免了数据存储量过大导致加载困难的情况。定位装置在进行定位时,将接收的第一图像数据传输至每个处于工作状态的处理装置,由每个处于工作状态的处理装置根据各自存储的地图和第一图像信息进行定位,减少了定位装置的数据处理量。并且,由于N个处理装置独立工作,并行地寻找当前的定位点,提高了采用多个地图进行定位的定位效率。
本申请的第二实施例涉及一种定位方法,本实施例是对第一实施例的进一步细化,在步骤103后增加了其他相关步骤,并具体说明了步骤104。
如图2所示,本实施例包括步骤201至步骤208。其中,步骤201、步骤202和步骤203分别与第一实施例中的步骤101、步骤102和步骤103大致相同,此处不再详述,下面主要介绍不同之处:
执行步骤201至步骤203。
步骤204:判断每个处于工作状态的处理装置各自传输的第一反馈信息中,是否存在指示定位成功的第一反馈信息。
具体地说,定位装置若确定每个处于工作状态的处理装置各自传输的第一反馈信息中,存在指示定位成功的第一反馈信息,执行步骤205,若确定不存在,执行步骤206。
步骤205:根据指示定位成功的第一反馈信息,确定定位结果。之后结束流程。
具体地说,第一反馈信息中包括位姿信息。若定位装置确定只有一个指示定位成功的第一反馈信息,将该第一反馈信息中的位姿信息作为定位结果。若定位装置确定指示定位成功的第一反馈信息的个数大于1,计算指示定位成功的第一反馈信息中的位姿信息的平均值,将平均值作为定位结果。
值得一提的是,根据多个第一反馈信息中的位姿信息的平均值确定定位结果,提高了定位精度。
具体实现中,某一处理装置的第一反馈信息指示定位失败,说明该处理装置无法在自身存储的地图中寻找到与第一图像数据相匹配的信息,该处理装置中的存储的地图在当前环境下无法用于定位。定位装置在确定每个处于工作状态的处理装置各自传输的第一反馈信息中,存在指示定位失败的第一反馈信息后,可以发送休眠指令至指示定位失败的第一反馈信息对应的处理装置。指示定位失败的第一反馈信息对应的处理装置在接收到休眠指令后,从工作状态切换至休眠状态,以减小定位系统的功耗。
另一具体实现中,定位装置中存储有状态信息表。状态信息表如表1所示,其中,1表示在上一次定位过程中,该处理装置定位成功,0表示在上一次过程中,该处理装置定位失败。定位装置在确定每个处于工作状态的处理装置各自传输的第一反馈信息中,存在指示定位失败的第一反馈信息后,将指示定位失败的第一反馈信息的处理装置的状态更改为0。定位装置在接收到用于定位的图像数据时,根据存储的状态信息表,将该用于定位的图像数据传输至状态为1的处理装置。
表1
处理装置名称 |
处理装置的状态 |
A |
1 |
B |
0 |
…… |
…… |
值得一提的是,将当前定位失败的处理装置从工作状态切换至休眠状态,避免定位装置传输第一图像数据至定位失败的处理装置造成的资源浪费,也避免了定位失败的处理装置在无法定位成功的情况下持续定位造成的资源浪费。
步骤206:发送唤醒指令至处于休眠状态的处理装置。
具体地说,定位装置在当前处于工作状态的处理装置各自传输的第一反馈信息均指示定位失败后,发送唤醒指令至处于休眠状态的处理装置。处于休眠状态的在接收到唤醒指令后,从休眠状态切换至工作状态。若当前处于工作状态的处理装置均定位失败,表明与当前环境相对应的地图存储于处于休眠状态的处理装置中,或,未建立与当前环境相对应的地图。通过唤醒处于休眠状态的处理装置,使用处于休眠状态的处理装置重新定位,可以确定本当前处于工作状态的处理装置均定位失败的具体原因。
步骤207:获取第二图像数据,将第二图像数据传输至所有处于工作状态的处理装置,接收每个处于工作状态的处理装置各自传输的第二反馈信息。
具体地说,将处于休眠状态的处理装置从休眠状态切换至工作状态,当前处于工作状态的处理装置根据各自存储的地图,以及第二图像数据,确定第二反馈信息,第二反馈信息用于指示定位成功或定位失败。
步骤208:根据每个处于工作状态的每个处理装置各自传输的第二反馈信息,确定定位结果。
具体地说,若每个处于工作状态的每个处理装置各自传输的第二反馈信息中,存在指示定位成功的第二反馈信息,根据指示定位成功的第二反馈信息中的位姿信息,确定定位结果;若不存在指示定位成功的第二反馈信息,确定定位失败。
需要说明的是,本领域技术人员可以理解,若确定定位失败,可以利用VSLAM技术,建立该环境的地图。
与现有技术相比,本实施例中提供的定位方法,将定位失败的处理装置从工作状态切换至休眠状态,降低了处理装置的功耗,进一步减少了定位装置的数据处理量。在当前的处于工作状态的处理装置定位失败时,唤醒处于休眠状态的处理装置,利用定位系统的所有资源进行定位,提高了定位系统的定位效率。
本申请的第三实施例涉及一种定位装置,如图3所示,包括获取模块301、第一传输模块302、第二传输模块303和第一确定模块304。
获取模块301用于获取第一图像数据。第一传输模块302用于将第一图像数据传输至处于工作状态的N个处理装置,N为正整数。其中,每个处于工作状态的处理装置根据各自存储的地图和第一图像数据,确定第一反馈信息。每个处于工作状态的处理装置中存储的地图不同,第一反馈信息用于指示定位成功或定位失败。第二传输模块303用于接收每个处于工作状态的处理装置各自传输的第一反馈信息。第一确定模块304用于根据每个处于工作状态的处理装置各自传输的第一反馈信息,确定定位结果。
不难发现,本实施例为与第一实施例相对应的装置实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
本申请的第四实施例涉及一种定位装置,本实施例是对第三实施例的进一步改进,增加了第二确定模块305,并具体说明了第一确定模块304的功能。
如图4所示,第二确定模块305用于在确定每个处于工作状态的处理装置各自传输的第一反馈信息中,存在指示定位失败的第一反馈信息后,发送休眠指令至指示定位失败的第一反馈信息对应的处理装置。其中,指示定位失败的第一反馈信息对应的处理装置在接收到休眠指令后,从工作状态切换至休眠状态。
第一确定模块304具体用于在确定每个处于工作状态的处理装置各自传输的第一反馈信息中,存在指示定位成功的第一反馈信息后,根据指示定位成功的第一反馈信息,确定定位结果。若第一确定模块304确定每个处于工作状态的处理装置各自传输的第一反馈信息中,不存在指示定位成功的第一反馈信息,发送唤醒指令至处于休眠状态的处理装置;处于休眠状态的处理装置接收到唤醒指令后,从休眠状态切换至工作状态;获取第二图像数据;将第二图像数据传输至所有处于工作状态的处理装置;其中,处于工作状态的每个处理装置根据各自存储的地图,以及第二图像数据,确定第二反馈信息;其中,第二反馈信息用于指示定位成功或定位失败;接收每个处于工作状态的处理装置各自传输的第二反馈信息;根据第二反馈信息,确定定位结果。
不难发现,本实施例为与第二实施例相对应的装置实施例,本实施例可与第二实施例互相配合实施。第二实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第二实施例中。
本申请的第五实施例涉及一种定位装置,如图5所示,包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;以及,与处理装置通信连接的通信组件403,通信组件在处理器401的控制下接收和发送数据。其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述定位方法。
本实施例中,处理器401以中央处理器(Central Processing Unit,CPU)为例,存储器402以可读写存储器(Random Access Memory,RAM)为例。处理器401、存储器402可以通过总线或者其他方式连接,图5中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述定位方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的定位方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请的第六实施例涉及一种定位系统,如图6所示,包括定位装置501和处理装置502。定位装置501用于获取第一图像数据;将第一图像数据传输至处于工作状态的N个处理装置502,N为正整数;接收每个处于工作状态的处理装置502各自传输的第一反馈信息;根据每个处于工作状态的处理装置502各自传输的第一反馈信息,确定定位结果。每个处于工作状态的处理装置502用于根据各自存储的地图和第一图像数据,确定第一反馈信息。其中,每个处于工作状态的处理装置中存储的地图不同,第一反馈信息用于指示定位成功或定位失败。
不难发现,本实施例为与第一实施例相对应的系统实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
本申请的第七实施例涉及一种定位系统,本实施例是对第六实施例的进一步细化,具体说明了定位装置的功能。
具体地说,定位装置501还用于:在确定每个处于工作状态的处理装置各自传输的第一反馈信息中,存在指示定位失败的第一反馈信息后,发送休眠指令至指示定位失败的第一反馈信息对应的处理装置。其中,指示定位失败的第一反馈信息对应的处理装置在接收到休眠指令后,从工作状态切换至休眠状态。定位装置501在确定每个处于工作状态的处理装置各自传输的第一反馈信息中,存在指示定位成功的第一反馈信息后,根据指示定位成功的第一反馈信息,确定定位结果。定位装置501若确定每个处于工作状态的处理装置各自传输的第一反馈信息中,不存在指示定位成功的第一反馈信息,发送唤醒指令至处于休眠状态的处理装置;处于休眠状态的处理装置接收到唤醒指令后,从休眠状态切换至工作状态;获取第二图像数据;将第二图像数据传输至所有处于工作状态的处理装置;其中,处于工作状态的每个处理装置根据各自存储的地图,以及第二图像数据,确定第二反馈信息;其中,第二反馈信息用于指示定位成功或定位失败;根据第二反馈信息,确定定位结果。
不难发现,本实施例为与第二实施例相对应的系统实施例,本实施例可与第二实施例互相配合实施。第二实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第二实施例中。
本申请的第八实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现以上任意方法实施例所描述的定位方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。