具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有基于多线激光雷达进行定位,存在的成本较高,易受环境限制,在空旷环境区域内无法有效定位等技术问题。在本申请一些实施例中,在移动设备定位过程中,融合双目视觉传感器和行进状态感知传感器,利用双目视觉传感器提供定位所需的关键帧图像,利用行进状态感知传感器提供移动设备的行进状态数据,为获取双目视觉传感器的位姿变化量提供数据基础,进而根据关键帧图像、双目视觉传感器的位姿变化量以及双目视觉传感器的外参定位移动设备的位姿。其中,行进状态感知传感器感知自移动设备的行进状态数据,无需依赖外界参照物,双目视觉传感器的观测范围相对较大,可观测到相对较远处的障碍物,即使在空旷区域也能正常为移动设备进行定位,不易受环境限制,具有较高的鲁棒性,有利于提高定位精度;另外,双目视觉传感器和行进状态感知传感器的价格相对便宜,可降低定位成本。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请示例性实施例提供的一种定位方法的流程示意图。如图1所示,该方法包括:
101、获取双目视觉传感器采集到的移动设备所在环境的双目环境图像,并获取行进状态感知传感器采集到的移动设备的行进状态数据。
102、从双目环境图像中识别出关键帧图像,并根据行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量。
103、根据关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿。
本实施例提供的定位方法可定位移动设备的位姿。移动设备的位姿包括移动设备的位置和/或姿态。移动设备的位置是指移动设备在世界坐标系中的位置,移动设备的姿态包括移动设备相对基准坐标轴的俯仰、旋转和/或倾斜等姿态信息。基准坐标轴可以是世界坐标系中的某一坐标轴,也可以是相机坐标系中的某一坐标轴。
其中,移动设备可以是任何能够移动的设备,例如可以是机器人、无人驾驶车辆或无人机等自主移动设备,当然,也可以是一些非自主移动的设备,例如可以是可跟随移动对象(例如用户或用户乘坐的交通工具等)移动的智能手机或可穿戴设备,也可以是用户驾驶或骑行的各种车辆等。本实施例并不限定机器人、无人驾驶车辆或无人机等移动设备的外观形状。例如,机器人可以是圆形、椭圆形、三角形、凸多边形或人形等。又例如,无人驾驶车辆可以为小型汽车、大巴或货运车等等。其中,移动设备可以通过安装软件、APP,或者在相应器件中写入程序代码来实现本实施例提供的定位方法的逻辑。
在本实施例中,移动设备可在移动的基础上完成一定作业任务。下面以机器人为例进行示例性说明。例如,在超市、商场等购物场景中,购物车机器人需要跟随顾客移动,以容纳顾客选购的商品。又例如,在一些公司的仓储分拣场景中,分拣机器人需要跟随分拣人员移动到货架拣货区,然后开始分拣订单货物。又例如,在家庭清扫场景中,扫地机器人需要清扫客厅、卧室、厨房等区域。在这些应用场景中,机器人在自主移动过程中会完成相应的作业任务。
无论是哪种实现形式的移动设备,为了成功完成相应作业任务,可能需要在移动过程中进行定位和导航。在本实施例中,提供一种适用于移动设备的定位方法,既可以降低定位成本,又可以提高定位精度,而且该定位方法不易受移动设备所处环境的限制,具有较高的鲁棒性。下面以对移动设备进行定位的过程为例,对本实施例提供的定位方法进行说明。
在本实施例中,移动设备上设置有双目视觉传感器。双目视觉传感器具有较大的观测范围,可以看作是移动设备的“眼睛”,可采集移动设备所在环境的图像,得到双目环境图像。双目视觉传感器包括左目视觉传感器和右目视觉传感器,左右两目视觉传感器之间固定连接,例如可通过刚体固定连接,且左右两目视觉传感器的视野具有一定重合区域。其中,双目视觉传感器可以是双目相机、双目摄像机或双目摄像头。在双目视觉传感器中,左目视觉传感器和右目视觉传感器会从不同位置或角度采集移动设备所在环境的两幅图像。从双目视觉传感器整体来看,双目视觉传感器采集到移动设备所在环境的图像是一种双目环境图像,包括左目视觉传感器采集到的环境图像(简称为左目环境图像)和右目视觉传感器采集到的环境图像(简称为右目环境图像)。另外,双目视觉传感器具有一定工作频率,会按照自己的工作频率周期性地对移动设备所在环境进行图像采集。在步骤101中,可以获取双目视觉传感器采集到的全部双目环境图像,也可以选择符合相应要求的一部分图像。
在双目视觉传感器采集到移动设备所在环境的双目环境图像的基础上,可从双目环境图像中识别出关键帧图像,将关键帧图像作为对移动设备进行定位所需的数据基础,这可在保证定位精度的基础上,降低计算量,提高实时性。关键帧图像是双目环境图像中对定位比较关键、可发挥重要作用的图像,例如可能是一些图像内容变化较大的双目环境图像,或者是一些包含特定环境特征的双目环境图像等,在本实施例中不做具体限定。
除此之外,移动设备上还设置有行进状态感知传感器,主要用于感知并采集移动设备的行进状态数据。行进状态感知传感器具有一定工作频率,会按照自己的工作频率周期性地对移动设备的行进状态进行采集。值得说明的是,本实施例并不限定行进状态感知传感器的类型,凡是可感知移动设备的行进状态的传感器均适用于本申请实施例。另外,采用不同类型的行进状态感知传感器,所采集到的行进状态数据会有所不同。
对于一些移动设备来说,行进机构是其移动的基本组件。在本实施例中,并不限定行进机构的类型,例如,行进机构可以是轮式行进机构、半履带式行进机构、车轮-履带式行进机构或履带式行进机构等。对于具有行进机构的移动设备来说,根据行进机构的类型,可以适应性选择所使用的行进状态感知传感器的类型。以行进机构采用轮式行进机构为例,下面对可感知轮式行进机构行进状态的传感器进行举例说明:
例如,行进状态感知传感器可以是设置于移动设备的轮式行进机构上的旋转编码器,该旋转编码器可感知轮式行进机构的转动量。基于此,在步骤101中,获取行进状态感知传感器采集到的移动设备的行进机构的行进状态数据可以是:获取设置于移动设备的轮式行进机构上的旋转编码器输出的转动量。
又例如,行进状态感知传感器可以是设置于移动设备的轮式行进机构上的轮速传感器,该轮速传感器可感知轮式行进机构的轮速数据。可选地,轮速传感器可以是磁电式轮速传感器或霍尔式轮速传感器。基于此,在步骤101中,获取行进状态感知传感器采集到的移动设备的行进机构的行进状态数据可以是:获取设置于移动设备的轮式行进机构上的轮速传感器输出的轮速数据。
又例如,行进状态感知传感器可以是设置于移动设备上的里程计,该里程计可感知轮式行进机构行进的里程数据。基于此,在步骤101中,获取行进状态感知传感器采集到的移动设备的行进机构的行进状态数据可以是:获取设置于移动设备上的里程计输出的里程数据。在此说明,本实施例并不限定里程计在移动设备上的具体设置位置。
移动设备的行进状态反映移动设备的状态变化情况,例如,可反应出移动设备是否向前移动、左转、后退或右转等。移动设备的状态发生变化,双目视觉传感器的位姿也会跟着发生变化。因此,移动设备的行进状态数据一定程度上可反映双目视觉传感器的位姿变化情况。在本实施例中,为了准确定位移动设备的位姿,在行进状态感知传感器采集到移动设备的行进状态数据的基础上,结合关键帧图像,可根据该行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量。例如,通过对行进状态感知传感器在相邻关键帧图像之间采集到的行进状态数据进行积分,可得到双目视觉传感器在相邻关键帧图像之间的位姿变化量。这里的位姿变化量可以包括双目视觉传感器在相邻关键帧图像之间的平移量,也可以包括双目视觉传感器在相邻关键帧图像之间的旋转量,或者也可以同时包括双目视觉传感器在相邻关键帧图像之间的平移量和旋转量。
在获取关键帧图像以及行进状态感知传感器在相邻关键帧图像之间的位姿变化量之后,可根据双目视觉传感器采集到的关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿。其中,双目视觉传感器的外参是预先标定的,主要描述双目视觉传感器中左右两目视觉传感器之间的位姿变换关系,该位姿变换关系包括:左右两目视觉传感器之间的旋转(Rotation)关系和转换(Translation)关系。
在本实施例的定位过程中,融合双目视觉传感器和行进状态感知传感器,行进状态感知传感器感知自移动设备的行进状态数据,无需依赖外界参照物,而双目视觉传感器的观测范围相对较大,可观测到相对较远处的障碍物,即使在空旷区域也能正常为移动设备进行定位,不易受环境限制,该定位方法具有较高的鲁棒性,有利于提高定位精度;另外,双目视觉传感器和行进状态感知传感器的价格相对便宜,可降低定位成本。
在本申请一些示例性实施例中,可要求双目环境图像中的左目环境图像和右目环境图像时间同步,即左目环境图像和右目环境图像携带的时间戳相同,这有利于提高定位精度和准确度。
可选地,为了保证左目环境图像和右目环境图像时间同步,可以采用硬件同步的双目视觉传感器。硬件同步的双目视觉传感器是指左右两目视觉传感器在硬件上可做到同步,即左右两目视觉传感器可同时采集环境图像,且会为采集到的环境图像打上相同的时间戳。
在实际应用中,很难保证所使用的双目视觉传感器一定是硬件同步的,或者即使双目视觉传感器是硬件同步的,但随着器件损耗也很难保证双目视觉传感器会一直保持硬件同步。基于该考虑,在本申请一可选实施方式中,采用软件方式,在获取双目环境图像过程中保证双目环境图像中左右两目环境图像之间的时间同步性,该实施方式对双目视觉传感器是否硬件同步不做限定。
在该可选实施方式中,双目视觉传感器中左右两目视觉传感器分别对移动设备所在环境进行图像采集,得到左目环境图像和右目环境图像,并分别将采集到的左目环境图像和右目环境图像上报给移动设备,具体是指上报给移动设备的处理器。移动设备的处理器接收双目视觉传感器中左右两目视觉传感器分别采集到的移动设备所在环境的左目环境图像和右目环境图像。在该过程中,若双目视觉传感器无法做到硬件同步,则左目环境图像和右目环境图像携带的时间戳会有差异。在该可选实施方式中,以每次接收到的左目环境图像为同步基准,则处理器每次接收到左目环境图像时,将接收到的左目环境图像视为待同步左目环境图像,针对该待同步左目环境图像,从已接收到的右目环境图像中选择与待同步左目环境图像的时间戳之差最小的作为待同步右目环境图像;将待同步左目环境图像和待同步右目环境图像的时间戳之差与设定的时间差阈值进行比较;若待同步左目环境图像和待同步右目环境图像的时间戳之差小于设定的时间差阈值,说明这两个环境图像之间的时差可以忽略,可认为是同步的,于是对待同步左目环境图像和待同步右目环境图像进行时间戳同步,经过时间戳同步后的两个环境图像可形成本申请实施例中所述的一帧双目环境图像。当然,若待同步左目环境图像和待同步右目环境图像的时间戳之差大于或等于设定的时间差阈值,说明这两个环境图像之间的时差较大,两者是不同步的,对于这种情况,可以将这两个环境图像丢弃。
在上述实施方式中,对待同步左目环境图像和待同步右目环境图像进行时间戳同步主要是指将待同步左目环境图像和待同步右目环境图像的时间戳同步为一个时间戳。例如,可以将待同步左目环境图像的时间戳替换为待同步右目环境图像的时间戳,也可以将待同步右目环境图像的时间戳替换为待同步左目环境图像的时间戳,还可以将待同步右目环境图像和待同步左目环境图像的时间戳均替换为两者时间戳的平均值,等等。
另外,在上述实施方式中,以每次接收到的左目环境图像为同步基准,也可以以每次接收到的右目环境图像为同步基准。在以每次接收到的右目环境图像为同步基准的情况下,处理器每次接收到右目环境图像时,将接收到的右目环境图像视为待同步右目环境图像,针对该待同步右目环境图像,从已接收到的左目环境图像中选择与待同步右目环境图像的时间戳之差最小的作为待同步左目环境图像;将待同步右目环境图像和待同步左目环境图像的时间戳之差与设定的时间差阈值进行比较;若待同步左目环境图像和待同步右目环境图像的时间戳之差小于设定的时间差阈值,说明这两个环境图像之间的时差可以忽略,可认为是同步的,于是对待同步左目环境图像和待同步右目环境图像进行时间戳同步,经过时间戳同步后的两个环境图像可形成本申请实施例中所述的一帧双目环境图像。
无论是在上述哪种实施方式中,移动设备可以采用两个缓存队列,记为左目缓存队列和右目缓存队列,分别用于缓存左目环境图像和右目环境图像。缓存队列采用先进先出的设计方式,当有新的环境图像到达时,缓存队列中最老的环境图像会被丢弃,只保留最新的若干个环境图像。其中,缓存队列的长度即为被保留环境图像的数量,缓存队列的长度可视应用需求灵活设置。在以每次接收到的左目环境图像为同步基准的情况下,处理器每次接收到左目环境图像时,将接收到的左目环境图像视为待同步左目环境图像,针对该待同步左目环境图像,从右目缓存队列中选择与待同步左目环境图像的时间戳之差最小的作为待同步右目环境图像。在以每次接收到的右目环境图像为同步基准的情况下,处理器每次接收到右目环境图像时,将接收到的右目环境图像视为待同步右目环境图像,针对该待同步右目环境图像,从左目缓存队列中选择与待同步右目环境图像的时间戳之差最小的作为待同步左目环境图像。
在上述实施方式中,可获取时间同步的双目环境图像,且对双目视觉传感器是否硬件同步不做要求,有利于降低对双目视觉传感器的精度要求,进一步降低定位成本。
在本申请实施例中,以双目环境图像中的关键帧图像作为数据基础,对移动设备进行定位,但并不对关键帧图像进行限定。下面从如何获取关键帧图像的角度,对关键帧图像进行示例性说明,但并不限于下述可选实施例。
在可选实施例A1中,可以选择一个双目环境图像作为初始关键帧图像。可选地,可以将第一个获取到的双目环境图像作为初始关键帧图像;或者,也可以将第二个获取到的双目环境图像作为初始关键帧图像;或者,也可以将包含指定环境特征的双目环境图像作为初始关键帧图像,等等。在初始关键帧图像的基础上,对后续每个关键帧图像,可对行进状态感知传感器自识别出上一关键帧图像开始采集到的行进状态数据进行积分处理,得到双目视觉传感器的位姿变化量;随着行进状态数据的不断采集,积分处理不断累积,双目视觉传感器的位姿变化量也会不断累积,当双目视觉传感器的位姿变化量累积到大于或等于设定的变化量阈值时,将此时获取的双目环境图像或在此时之后获取的首个双目环境图像作为下一关键帧图像。相应地,可以将双目标视觉传感器在累积到大于或等于设定的变化量阈值时的位姿变化量,作为双目视觉传感器在上一关键帧图像与下一关键帧图像之间的位姿变化量。
在可选实施例A1中,根据行进状态数据的积分结果可得到双目视觉传感器的位姿变化量,双目视觉传感器的位姿变化量可粗略反应出移动设备是运动还是静止,以及在运动情况下的运动幅度的大小。当双目视觉传感器的位姿变化量累积到大于或等于设定的变化量阈值时,说明移动设备的运动幅度较大,此时双目视觉传感器采集到的双目环境图像可体现移动设备最新的状态,故可以将此时采集的双目环境图像作为新的关键帧图像用于对移动设备进行定位,保证定位精度。对于双目视觉传感器的位姿变化量小于设定的变化量阈值的情况,说明移动设备没动或运动幅度不大,双目视觉传感器采集到的双目环境图像与之前图像相比基本没啥变化,无需插入新的关键帧图像,这可以减少数据冗余,节约计算资源。另外,在可选实施例A1中,可在识别关键帧图像的过程中,同时获取双目视觉传感器在相邻关键帧图像之间的位姿变化量,两个过程一体化,可简化方法流程,提高定位效率。
在可选实施例A2中,可以设定一个时间周期,周期性从双目环境图像中获取关键帧图像。进一步,考虑到双目视觉传感器的工作频率与时间周期之间可能无法对齐,可以设定一时间误差值,每当时间周期到达时,将在该时间周期前后一定时间范围[T-△,T+△]内获取的双目环境图像作为一个关键帧图像。T表示时间周期到达的时间,△表示时间误差值。
在可选实施例A3中,可以设定相邻两个关键帧图像之间需要间隔的帧数,则可以每间隔该帧数个双目环境图像获取一个关键帧图像。例如,假设相邻两个关键帧图像之间需要间隔15帧,这样可以每间隔15帧获取一个关键帧图像。
在可选实施例A4中,可以设定关键帧图像需要包含的特征点数的下限值,则可以从双目环境图像中识别出包含的特征点数不少于该下限值的图像作为关键帧图像。
值得说明的是,在上述可选实施例A2-A4中,可以先识别出关键帧图像,确定与该关键帧图像相邻的上一帧关键帧图像,然后对行进状态感知传感器在这两个相邻关键帧图像之间采集到的行进状态数据进行积分处理,得到双目视觉传感器在这两个相邻关键帧图像之间的位姿变化量。
在得到关键帧图像和双目视觉传感器在相邻关键帧图像之间的位姿变化量的基础上,可以根据关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿。
可选地,可以根据需求对移动设备进行一次定位,也可以在移动设备移动过程中,不断对移动设备进行定位。
在不断对移动设备进行定位的方案中,在对移动设备的每次定位操作中,可以获取最新识别出的N个关键帧图像,根据N个关键帧图像、双目视觉传感器在N个关键帧图像中相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿。其中,N是≥2的整数。
在一可选实施例中,可以采用滑窗法,固定每次参与定位计算的关键帧图像的数量。例如,可以设置一个长度为N的滑动窗口,每次定位操作使用滑动窗口里的关键帧图像。该滑动窗口采用先进先出的方式进行管理,每当识别出新的关键帧图像时,将新的关键帧图像滑入滑动窗口,并将滑动窗口中最老的关键帧图像滑出。
进一步,将滑动窗口与上述可选实施例A1相结合,每次识别出新的关键帧图像,意味着移动设备的动作幅度较大,即移动设备的位姿发生了较大变化,此时有必要重新定位移动设备的位姿。基于此,每当采用上述可选实施例A1识别出新的关键帧图像时,可将新的关键帧图像加入滑动窗口中,每当滑动窗口中有新的关键帧图像出现时,可以确定需要对移动设备进行定位,并获取滑动窗口中的N个关键帧图像,作为本次对移动设备进行定位所需的最新的N个关键帧图像。
值得说明的是,除了上述获取每次定位操作所需的N个关键帧图像的方式之外,也可以采用其它方式,本申请实施例对此不做限定。无论采用何种方式,在获取每次定位操作所需的N个关键帧图像之后,可以采用但不限于图2所示方法实施例中的方式,根据N个关键帧图像定位移动设备的位姿。
图2为本申请示例性实施例提供的另一种定位方法的流程示意图。如图2所示,该方法包括:
201、获取双目视觉传感器采集到的移动设备所在环境的双目环境图像,并获取行进状态感知传感器采集到的移动设备的行进状态数据。
202、从双目环境图像中识别出关键帧图像,并根据行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量。
203、在对移动设备的每次定位操作中,获取最新识别出的N个关键帧图像;N是≥2的整数。
204、根据N个关键帧图像中的特征点匹配关系,得到移动设备所在环境中的目标路标点以及目标路标点对应的观测序列。
205、根据目标路标点对应的观测序列和双目视觉传感器在N个关键帧图像中相邻关键帧图像之间的位姿变化量,结合双目视觉传感器的外参,采用三角化算法计算目标路标点在相机坐标系中的位置坐标。
206、根据双目视觉传感器的外参和目标路标点在相机坐标系中的位置坐标进行BA优化,得到双目视觉传感器在世界坐标系中的位姿。
207、根据双目视觉传感器在世界坐标系中的位姿和双目视觉传感器与移动设备之间已知的位姿变换关系,得到移动设备在世界坐标系统中的位姿。
关于步骤201-203的详细实施方式,可参见前述实施例的描述,在此不再赘述。
在本实施例中,每次对移动设备进行定位,利用最新识别出的N个关键帧图像,定位移动设备在世界坐标系统中的位姿。
首先,对N个关键帧图像进行特征点匹配,根据N个关键帧图像中的特征点匹配关系,得到目标路标点以及目标路标点对应的观测序列。其中,路标点是移动设备所在环境中被观测(或追踪)的环境点,是根据N个关键帧图像中的特征点匹配关系确定出的。该路标点在世界坐标系中的位置坐标是待求的。路标点对应的观测序列中记录有该路标点在不同关键帧图像中对应的特征点,这些特征点反映了路标点在不同时刻被双目视觉传感器观测到的情况。如果路标点在第一时刻同时被双目视觉传感器中左右两目视觉传感器观测到,则双目视觉传感器在第一时刻采集到的左右两目环境图像中都会包含与该路标点对应的特征点,若在第一时刻采集到的双目环境图像被识别为关键帧图像,则路标点在第一时刻采集到的关键帧图像中对应的特征点包括该路标点在第一时刻采集到的左目环境图像中对应的特征点和该路标点在第一时刻采集到的右目环境图像中对应的特征点。其中,目标路标点是被选择用于定位的路标点,可以是确定出的路标点中的全部或部分。
接着,根据目标路标点对应的观测序列和双目视觉传感器在N个关键帧图像中相邻关键帧图像之间的位姿变化量,结合双目视觉传感器的外参,利用三角算法可计算出目标路标点在相机坐标系中的位置坐标。其中,通过目标路标点对应的观测序列,结合双目视觉传感器在N个关键帧图像中相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,可为目标路标点在相邻关键帧图像之间的观测以及目标路标点在同一关键帧图像中左右两目之间的观测提供极线约束,每个极线约束都可以构建出一个方程,对一个目标路标点,可根据其在多个相邻关键帧图像之间的观测以及在多个关键帧图像中的左右目之间的观测得到多个方程,通过联立这些方程,求其最小二乘解,从而得到目标路标点在相机坐标系中的位置坐标。
然后,将双目视觉传感器的外参和目标路标点在相机坐标系中的位置坐标作为约束条件,将双目视觉传感器在世界坐标系中的位姿以及目标路标点在世界坐标系中的位置坐标作为待求量参与BA优化,从而输出最终的双目视觉传感器在世界坐标系中的位姿以及目标路标点在世界坐标系中的位置坐标。在BA优化过程中,通过不断迭代调整上述待求量,使其尽量满足所有关键帧图像的观测,在每次迭代调整后会得到双目视觉传感器在世界坐标系中的新位姿和目标路标点在世界坐标系中的新位置坐标,然后根据双目视觉传感器在世界坐标系中的新位姿,计算目标路标点在世界坐标系中的新位置坐标在相关关键帧图像中的投影坐标,并计算该投影坐标与目标路标点在该关键帧图像中对应的特征点的坐标(可简称为观测坐标)的误差,然后把所有的误差求和,然后继续调整待求量,尝试最小化上述总误差,直到总误差小于一定阈值后停止调整,从而得到双目视觉传感器在世界坐标系中的位姿以及目标路标点在世界坐标系中的位置坐标。
最后,根据双目视觉传感器与移动设备之间已知的位姿变换关系,对双目视觉传感器在世界坐标系中的位姿进行转换处理,得到移动设备在世界坐标系统中的位姿。
在一可选实施例中,步骤204的实现方式如图3a所示,包括以下步骤:
2041、对N个关键帧图像中每个关键帧图像中的左右两目环境图像分别进行特征点提取,得到每个关键帧图像中左右两目环境图像各自包含的特征点。
2043、对N个关键帧图像中相邻关键帧图像中的同目环境图像进行特征点关联,得到得到相邻关键帧图像之间的左目特征点对和右目特征点对。
2045、将每个关键帧图像中的左右两目环境图像中分别属于左目特征点对和右目特征点对中的特征点进行双目匹配,得到每个关键帧图像中的双目特征点对。
2047、根据相邻关键帧图像之间的左目特征点对和右目特征点对以及每个关键帧图像中的双目特征点对,确定目标路标点以及所述目标路标点对应的观测序列。
值得说明的是,每次对移动设备进行定位所需的N个关键帧图像,是随着双目环境图像的不断采集,从双目环境图像中逐渐被识别出来的。基于此,在步骤2041-2045中,可以每识别到一个关键帧图像,就对该关键帧图像进行相应处理。即,每当识别到一个关键帧图像时,首先,对当前识别到的关键帧图像进行特征提取;接着,对当前识别到的关键帧图像与其上一关键帧图像进行特征关联,得到当前识别到的关键帧图像与上一关键帧图像之间的左目特征点对和右目特征点对;然后,对当前识别到的关键帧图像中左右两目环境图像进行双目匹配,即将当前识别到的关键帧图像中左目环境图像中属于左目特征点对中的特征点与右目环境图像中属于右目特征点对中的特征点进行关联,将左右两目环境图像中建立关联的特征点作为当前识别到的关键帧图像中的双目特征点对。当然,在步骤2041-2045中,也可以在将N个关键帧图像全部识别出来之后,集中对N个关键帧图像进行相应处理。
在步骤2041中,并不限定特征点提取方式,也不限定特征点的类型。例如,可以提取左右两目环境图像中的Fast特征点。Fast特征点是基于像素点周围的图像灰度值,对于某个像素点,获取该像素点周围一圈像素点的灰度值,若该像素点的圆形邻域上有3/4的像素点和该像素点的灰度值之差足够大,则认为该像素点为一个特征点。
在步骤2043中,以步骤2041中得到的每个关键帧图像中左右两目环境图像各自包含的特征点为基础,对任意两个相邻关键帧图像,对其中两个左目环境图像进行特征点关联,得到两个左目环境图像之间相互关联的特征点对,简称为左目特征点对;对其中两个右目环境图像进行特征点关联,得到两个左目环境图像之间相互关联的特征点对,简称为右目特征点对。该关联过程是一个在时间维度上进行特征点匹配的过程。对任意两个相邻关键帧图像,其左目特征点对或右目特征点对的数量可以是一个,也可能是多个;另外,左目特征点对的数量与右目特征点对的数量之间没有直接关系。
如图3b所示,以第k帧和第k+1帧为例,对第k帧中的左目环境图像和第k+1帧中的左目环境图像进行特征点关联,得到左目特征点对M1输出至下一环节(即步骤2045中);对第k帧中的右目环境图像和第k+1帧中的右目环境图像进行特征点关联,得到右目特征点对M2输出至下一环节(即步骤2045中)。
可选地,可以使用光流法,对前后相邻关键帧图像中同目环境图像之间特征点进行跟踪并识别出特征点之间的关联关系。这里同目环境图像包括相邻关键帧图像中两个左目环境图像,以及相邻关键帧图像中两个右目环境图像。
在步骤2045中,以步骤2043中得到的左目特征点对和右目特征点对为基础,对每个关键帧图像,对其中的左右两目环境图像进行双目匹配,得到每个关键帧图像中左右两目环境图像之间相互关联的特征点对,简称为双目特征点对。对每一帧中左右两目环境图像进行双目匹配,主要是指将左目环境图像中属于该帧与上一帧形成的左目特征点对中的特征点与右目环境图像中属于该帧与上一帧形成的右目特征点对中的特征点进行匹配的过程。
如图3b所示,以第k+1帧为例,将第k+1帧中的左目环境图像中属于左目特征点对M1的特征点与右目环境图像中属于右目特征点对M2的特征点进行匹配,得到相互关联的双目特征点对M3;当然,根据第k-1帧与第k帧形成的左目特征点对和右目特征点对,还会得到第k帧中左右两目环境图像进行匹配得到的双目特征点对,在图3b中未示出。值得说明的是,在步骤2045中,会对N个关键帧图像中每个关键帧图像进行双目匹配,并会得到N个双目匹配结果,每个双目匹配结果包括至少一个双目特征点对。
在步骤2047中,以步骤2043中得到的左目特征点对和右目特征点对和步骤2045中得到的双目特征点对为基准,确定目标路标点以及目标路标点对应的观测序列。
可选地,可以根据相邻关键帧图像之间的左目特征点对和右目特征点对,确定N个关键帧图像中的双目特征点对之间的关联关系;将存在关联的双目特征点对中的特征点汇总在一起形成一个观测序列,每个观测序列对应一个路标点;根据路标点对应的观测序列的长度,选择对应的观测序列的长度大于设定长度阈值的路标点及其对应的观测序列分别作为目标路标点及所述目标路标点对应的观测序列。其中,路标点对应的观测序列的长度是指该观测序列中包含的特征点的数量,一定程度上可反映该路标点被观测到的次数。在该可选实施例中,通过观测序列的长度选择目标路标点,可优先选择被观测到的次数较多的路标点,这可以保证定位精度,而其它未被选择的路标点可不做处理,这可减少计算量,节约计算资源,提高定位效率。
值得说明的是,上述通过观测序列的长度选择目标路标点仅为一种示例性实施方式,并不限于此。例如,也可以直接将识别出的路标点均作为目标路标点,或者也可以随意选择一部分路标点作为目标路标点等。
在一可选实施例中,如图3c所示,在步骤2043之后,步骤2045之前,还包括:
2044、根据双目视觉传感器在相邻关键帧图像之间的位姿变化量,将相邻关键帧图像之间错误关联的左目特征点对和/或右目特征点对去除。
在图3c所示实施例中,在得到相邻关键帧图像之间的左目特征点对和右目特征点对之后,可根据双目视觉传感器在相邻关键帧图像之间的位姿变化量,将错误关联的左目特征点对和/或右目特征点对去除,有利于提高确定出的路标点的精度,进而有利于提高定位精度。
可选地,对左目特征点对,可以采用下述方式去除错误关联的左目特征点对;同理,对右目特征点对,也可以采用同样的方式去除错误关联的右目特征点对。为便于描述,下面以第一目特征点对为例进行描述,第一目特征点对是左目特征点对和右目特征点对中任一目的特征点对。
对于相邻关键帧图像中的第一目特征点对,可根据双目视觉传感器在相邻关键帧图像之间的位姿变化量,从第一目特征点对中选择满足位姿变化一致性要求的若干个特征点对。例如,对每个特征点对,可以根据该特征点对中两个特征点的像素坐标,计算待比较的位姿变化量,将该待比较的位姿变化信息与双目视觉传感器在相邻关键帧图像之间的位姿变化量进行比较;若比较结果的误差在设定误差范围内,确定该特征点对满足位姿变化一致性要求。可选地,可以预先设定需要获取的满足位姿变化一致性要求的特征点对的数量。基于此,当获取到足够数量满足位姿变化一致性要求的特征点对后,可利用所选择的满足位姿变化一致性要求的若干个特征点对中的特征点,构建特征点校验模型,利用这些满足一致性要求的特征点计算出相邻关键帧图像之间应该满足的平移向量的方向,将该方向作为特征点校验模型;进而利用该特征点校验模型对每个第一目特征点对中的特征点进行验证,将未通过校验的特征点隶属的第一目特征点对去除。在构建特征点校验模型的过程中,对满足位姿变化一致性要求的每个特征点对,通过该特征点对中两个特征点之间的关联可以求出该特征点对对应的路标点所在极平面的法向量;在计算出所有满足位姿变化一致性要求的特征点对对应的路标点所在极平面的法向量后,联立所有的特征点对,求出平均的法向量方向,作为相邻关键帧图像之间应该满足的平移向量的方向,并将该方向作为校验特征点对的模型。其中,前后关键帧图像的相机光心和对应路标点,三个点形成的平面,即为该路标点所在极平面。
在本申请实施例中,并不限定双目匹配的实施方式,即不限定步骤2045的实施方式,下面列举几种可选实施方式:
在可选实施方式B1中,针对每个关键帧图像,可以选择从一目环境图像向另一目环境图像进行单向匹配,并将该单向匹配过程得到的特征点对作为该关键帧图像中的双目特征点对。例如,可以从左目环境图像向右目环境图像进行匹配,得到该关键帧图像中的双目特征点对,或者,可以从右目环境图像向左目环境图像进行匹配,得到该关键帧图像中的双目特征点对。其中,从左目环境图像向右目环境图像进行匹配的过程,与从右目环境图像向左目环境图像进行匹配的过程相同或类似。为简化描述,将左右两目环境图像中任一目环境图像,作为第一目环境图像,并将另一目环境图像作为第二目环境图像,以从第一目环境图像向第二目环境图像进行匹配为例,对该匹配过程进行详细说明。
对每个关键帧图像中的第一目环境图像,从第一目环境图像向第二目环境图像进行匹配的过程主要包括:将第一目环境图像中属于相应目特征点对(相应目特征点对是指左目特征点对或右目特征点对)的每个特征点在第二目环境图像中进行匹配以寻找匹配特征点的过程。对第一目环境图像中的不同特征点,在第二目环境图像中寻找匹配特征点的过程相同或类似,故以第一特征点为例进行说明,第一特征点是第一目环境图像中属于相应目特征点对的任一特征点。
对第一目环境图像中的第一特征点,根据双目视觉传感器的极线约束,得到第一特征点在第二目环境图像中的极线;计算第一特征点周围像素块与第二目环境图像中属于相应特征点对且位于该极线上的各特征点周围像素块之间的相似度;从第二目环境图像中属于相应目特征点对且位于极线上的各特征点中,选择周围像素块与第一特征点周围像素块之间的相似度满足相似度要求的第二特征点;若第一特征点周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值,将第一特征点与第二特征点形成相互关联的双目特征点对。
在上述过程中,可以采用但不限于NCC算法,计算第一特征点周围像素块与第二目环境图像中属于相应目特征点对且位于该极线上的各特征点周围像素块之间的相似度。
在本实施例中,并不限定像素块的大小,例如可以是15×15的像素块,也可以是20×20的像素块等,可根据应用需求灵活设置。
可选地,在第一特征点周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值的情况下,可以直接将第一特征点与第二特征点形成相互关联的双目特征点对。或者,
可选地,在第一特征点周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值的情况下,可以判断第一目环境图像中属于相应目特征点对的特征点中是否存在第三特征点,其中,第三特征点需满足以下要求:其在第二目环境图像中的极线上包含第二特征点,且其周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值。若存在,即第一目环境图像中属于相应目特征点对的第三特征点在第二目环境图像中的极线上包含第二特征点,且第三特征点周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值,这说明第一目环境图像中存在两个或两个以上的特征点均与第二特征点匹配,则可以从中选择最优的一个与第二特征点形成双目特征点对。基于此,在判断结果为存在的情况下,可进一步判断第一特征点周围像素块与第二特征点周围像素块之间的相似度是否大于第三特征点周围像素块与第二特征点周围像素块之间的相似度;若判断结果为是,将第一特征点与第二特征点形成相互关联的双目特征点对;若判断结果为否,则将第三特征点与第二特征点形成相互关联的双目特征点对。
在可选实施方式B2中,针对每个关键帧图像,需要对左右两目环境图像进行双向匹配,并将在双向匹配过程中都匹配中的特征点对作为该关键帧图像中的双目特征点对。例如,可以先从左目环境图像向右目环境图像进行匹配,得到特征点对a1-b1、a2-b3;然后从右目环境图像向左目环境图像进行匹配,得到特征点对b1-a1、b2-a3;则可以将特征点对a1-b1作为关键帧图像中的双目特征点对;关于特征点对a2-b3、b2-a3可以丢弃。
值得说明的是,本实施例并不限定左右两目环境图像之间的匹配顺序。另外,从左目环境图像向右目环境图像进行匹配的过程,与从右目环境图像向左目环境图像进行匹配的过程类似,且可参见可选实施方式B1中的描述。在本可选实施方式中,也以第一目环境图像中的第一特征点为例进行说明。第一目环境图像以及第一特征点均与可选实施方式B1的含义、解释相同,在此不再赘述。
对第一目环境图像中的第一特征点,根据双目视觉传感器的极线约束,得到第一特征点在第二目环境图像中的极线;计算第一特征点周围像素块与第二目环境图像中属于相应特征点对且位于该极线上的各特征点周围像素块之间的相似度;从第二目环境图像中属于相应目特征点对且位于极线上的各特征点中,选择周围像素块与第一特征点周围像素块之间的相似度满足相似度要求的第二特征点。
接着,一方面,判断第一特征点周围像素块与第二特征点周围像素块之间的相似度是否大于设定的相似度阈值;另一方面,判断第一特征点是否位于第二特征点在第一目环境图像中的极线上,且第二特征点周围像素块与第一特征点周围像素块之间的相似度是否大于设定的相似度阈值。在本实施方式中,并不限定这几个判断操作之间的先后顺序。
若第一特征点周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值,且第一特征点位于第二特征点在第一目环境图像中的极线上,且第二特征点周围像素块与第一特征点周围像素块之间的相似度大于设定的相似度阈值,将第一特征点与第二特征点形成相互关联的双目特征点对。
无论采用上述何种可选实施方式,在得到每个关键帧图像中的双目特征点对之后,且在据此确定目标路标点以及目标路标点对应的观测序列之前,还可以对前后相邻关键帧图像之间的双目匹配进行一致性校验,并剔除不满足一致性校验的双目特征点对。在一可选实施例中,可针对每个关键帧图像中的任一双目特征点对,判断该双目特征点对是否在上一关键帧图像中的双目特征点对中出现过;若判断结果为未出现过,则将该双目特征点对剔除,以保证相邻关键帧图像的双目匹配一致性。
在本实施例中,目标路标点可以只包括双目路标点,也可以只包括单目路标点,也可以同时包括双目路标点和单目路标点。其中,单目路标点是指被单目视觉传感器观测到的路标点;双目路标点是指被左右两目视觉传感器均观测到的路标点。从观测序列角度来看,单目路标点对应的观测序列中的特征点均来自于同一目环境图像,或者均来自于左目环境图像,或者均来自于右目环境图像;双目路标点对应的观测序列中既包括自于左目环境图像中的特征点,也包括来自于右目环境图像中的特征点。
关于目标路标点是只包括双目路标点,还是只包括单目路标点,或者是同时包括双目路标点和单目路标点,可根据应用需求灵活选择,本实施例对此不做限定。
在目标路标点中存在单目路标点,且至少存在两个单目路标点的情况下,可以单目路标点进行合并,以减少目标路标点的数量,进一步减少计算量。一种合并方式包括:
对于任意两个单目路标点P1和单目路标点P2,判断是否在连续T个关键帧图像的双目匹配过程中,均有单目路标点P1对应的特征点序列中的特征点和单目路标点P2对应的特征点序列中的特征点形成相互关联的双目特征点对,T是≥2且≤N的整数;
若判断结果为是,判定单目路标点P1和单目路标点P2为同一目标路标点,则可将单目路标点P1和单目路标点P2合并为一个目标路标点,并将单目路标点P1和单目路标点P2对应的观测序列合并为合并后得到的目标路标点对应的观测序列。
进一步,在上述采用滑窗法的实施例中,每次对移动设备进行定位使用最新识别出的N个关键帧图像,这会丢掉一些旧的关键帧图像,为了不损失旧的关键帧图像中的一些信息,可采用一种方式来保留这些有用信息。在一可选实施例中,在根据滑动窗口中当前N个关键帧图像定位移动设备的位姿的过程中,可根据与被滑出滑动窗口的最老的关键帧图像相关的历史信息生成一个信息矩阵,该信息矩阵可反应BA优化中待求量之间需要满足的一种约束关系,这种约束关系是指待求量自身在时间维度的相关性以及待求量之间的相关性,相关性的大小决定了BA优化过程各种观测所占的权重。可选地,可以采用Schur消元方法或Cholesky分解方法生成信息矩阵。在得到信息矩阵之后,可将该信息矩阵作为一种约束条件体现在此次BA优化中。例如,在BA优化过程中,可同时将双目视觉传感器的外参、目标路标点在相机坐标系中的位置坐标以及该信息矩阵作为约束条件,将目标路标点在世界坐标系的位置和双目视觉传感器在世界坐标系的位姿作为待求量进行BA优化,得到双目视觉传感器在世界坐标系中的位姿。其中,与被滑出滑动窗口的最老的关键帧图像相关的历史信息包括但不限于:双目视觉传感器在该最老的关键帧图像与其下一关键帧图像之间的位姿变化量、该最老的关键帧图像对应的目标路标点以及目标路标点对应的观测序列等。
进一步,根据双目视觉传感器在世界坐标系中的位姿和双目视觉传感器与移动设备之间已知的位姿变换关系,得到移动设备在世界坐标系统中的位姿。
在本申请实施例中,融合双目视觉传感器与行进状态感知传感器的方法属于紧耦合方式,可以更充分地利用了不同传感器采集到的信息,使位姿估计的精度更高,定位的鲁棒性更高。紧耦合方式是相对于松耦合方式而言的,松耦合方式是指利用双目视觉传感器与行进状态感知传感器分别对移动设备进行定位,把各传感器的定位结果进行加权平均得到移动设备最终位姿的融合方式。紧耦合方式是指将双目视觉传感器与行进状态感知传感器采集到的信息融合在一个定位过程中,直接定位出移动设备的位姿的融合方式。
值得说明的是,本申请实施例提供的定位方法可以单纯地在某个移动设备的移动过程中对该移动设备进行定位,但并不限于此。本申请实施例提供的定位方法还可用于多种应用场景中。
例如,在同时存在多台自主移动设备的应用场景中,结合多台自主移动设备各自定位出的位置,多台自主移动设备之间可以协同作业。例如,在一些公司的仓储场景中,需要多台分拣机器人进行分拣作业,每台分拣机器人可采用本申请实施例提供的方法定位当前所在位置并将其当前位置发送给服务端设备,服务端设备可根据每台分拣机器人的当前位置以及仓储空间中货架的分布情况,对分拣机器人进行调度。又例如,在一些清扫场景中,为了尽快完成清扫作业,提高清洁效率,可在清扫空间投放多台清扫机器人。每台清扫机器人在执行清扫作业过程中,可利用本实施例提供的定位方法进行自主定位,并把自身位置上传至服务端设备,服务端设备便可根据每台清扫机器人上报的位置信息以及清扫空间的环境地图,确定清扫空间中未清扫区域,并将清扫机器人调度至未清扫区域执行清扫任务,等等,但不限于此。
又例如,在需要计算移动设备的行进状态信息的应用场景中,移动设备可结合在不同时刻定位出的位置计算自身的行进状态信息。其中,移动设备的行进状态信息包括:移动设备的行进速度、行进方向、加速度中的至少一种,但不限于此。对移动设备来说,可获取其双目视觉传感器采集到的双目环境图像,并获取其行进状态感知传感器采集到的行进状态数据;从双目环境图像中识别出关键帧图像,并根据行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量;根据关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位当前位姿;进一步,根据当前位姿以及之前至少一个历史位姿,计算自身的行进状态信息。在本实施例中,融合双目视觉传感器和行进状态感知传感器进行定位,有利于提高定位精度;进一步,由于移动设备的当前位姿以及历史位姿的精度较高,因此根据移动设备当前位姿以及之前至少一个历史位姿计算出的移动设备的行进状态信息,也具有较高的精度,这样可减少移动设备上的传感器数量,例如可以无需设置速度传感器、加速度传感器等,有助于降低移动设备的硬件成本。
又例如,本申请实施例提供的定位方法还可应用于多台移动设备共享传感器的应用场景中。在该应用场景中,一台移动设备上设置双目视觉传感器和行进状态感知传感器,为便于描述,将该移动设备记为第一移动设备,结合第一移动设备上的双目视觉传感器和行进状态感知传感器,采用本申请实施例提供的定位方法可定位出第一移动设备的位姿;其它移动设备上无需设置任何传感器,可直接跟随第一移动设备行进,从而实现共享第一移动设备上的双目视觉传感器和行进状态感知传感器的目的。基于此,在定位出第一移动设备的位姿之后,可以将第一移动设备的位姿提供给需要跟随第一移动设备的其它移动设备,以供其它移动设备据此调整自己的位姿,达到跟随第一移动设备行进的目的。值得说明的是,其它移动设备可以按序跟在第一移动设备后面,并根据第一移动设备的位姿不断调整自己的位姿,达到跟随第一移动设备行进的目的。可选地,这些移动设备之间可以存在机械连接,也可以不存在机械连接。
进一步,本申请实施例提供的定位方法可单独应用于移动设备,如图3d所示。在图3d中,以带有双目视觉传感器和轮速传感器的人形机器人作为移动设备的示例进行图示,但并不限于此。在图3d中,双目视觉传感器采集人形机器人当前所在位置周围的双目环境图像,并传输至人形机器人的处理器;轮速传感器采集人形机器人的行进轮的轮速数据,并传输至人形机器人的处理器;人形机器人的处理器,从双目环境图像中识别出关键帧图像,并根据行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量;根据关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位人形机器人的位姿。值得说明的是,由于视角问题,在图3d中仅示出双目视觉传感器中的一目视觉传感器。
值得说明的是,本申请实施例提供的定位方法除了可以单独应用于移动设备之外,定位方法中的部分操作也可以由云端服务器,或者边缘云网络系统中的边缘计算设备实现。
结合图3e所示的边缘云网络系统,对本实施例提供的定位方法进行示例性。在图3e中,以带有双目视觉传感器和轮速传感器的人形机器人作为移动设备的示例进行图示,但并不限于此。在图3e中,该边缘云网络系统包括:边缘计算设备以及部署在云端或客户机房中的服务器。服务器与边缘计算设备通过网络进行通信,服务器可响应边缘计算设备的请求,为边缘计算设备提供相关云服务;另外,服务器也可对边缘计算设备进行管控、运维等。边缘计算设备包括硬件基础设施、硬件基础设施的驱动程序、操作系统以及相关应用程序等。硬件基础设施包括但不限于:CPU、网卡以及存储器等。
如图3e所示,人形机器人带有双目视觉传感器(如双目摄像头)和轮速传感器;双目视觉传感器采集人形机器人当前所在位置周围的双目环境图像,并将双目环境图像发送给边缘计算设备;轮速传感器采集人形机器人的行进轮的轮速数据,并将轮速数据发送给边缘计算设备。该边缘计算设备接收双目环境图像和轮速数据,从双目环境图像中识别出关键帧图像,并根据行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量;根据关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位人形机器人的位姿。进一步可选地,边缘计算设备还可以将人形机器人的位姿返回给人形机器人。其中,边缘计算设备可预先获知双目视觉传感器的外参。可选地,可以是双目视觉传感器预先将其外参上报给边缘计算设备,也可以是由相关人员预先将双目视觉传感器的外参配置在边缘计算设备中。值得说明的是,由于视角问题,在图3e中仅示出双目视觉传感器中的一目视觉传感器。
其中,边缘计算设备根据双目环境图像和轮速数据定位人形机器人的位姿的具体实施方式可参见上述实施例的相关内容,在此不再赘述。
在本申请上述实施例中,移动设备所在环境的双目环境图像由移动设备上设置的双目视觉传感器采集,但并不限于此。例如,在本申请一些实施例中,可以通过移动设备周围或附近的双目视觉传感器采集移动设备所在环境的双目环境图像。例如,在图3e所示的边缘云网络系统中,若边缘计算设备具有双目视觉传感器,则边缘计算设备可以通过其双目视觉传感器采集移动设备所在环境的双目环境图像,结合移动设备上的行进状态感知传感器采集到的移动设备的行进状态数据,定位移动设备的位姿。又例如,在图3e所示的边缘云网络系统中,边缘计算设备也可以控制移动设备周围的双目视觉传感器(例如马路上用于交通监控的双目摄像头、室内用于监控的双目摄像头)采集移动设备所在环境的双目环境图像,结合移动设备上的行进状态感知传感器采集到的移动设备的行进状态数据,定位移动设备的位姿。需要说明的是,在这些实施例中,除了双目环境图像的获取方式与前述实施例不同之外,其它步骤与前述实施例基本相同或相似,在此不再赘述。
进一步需要说明的是,在本申请上述实施例中,通过移动设备上的行进状态感知传感器采集移动设备的行进状态数据,但不限于此。在本申请另外一些实施例中,可以直接根据双目视觉传感器采集到的双目环境图像,计算出移动设备的行进状态数据。基于此,本申请另外一些实施例提供的定位方法,包括:利用双目视觉传感器采集移动设备所在环境的双目环境图像;根据双目环境图像计算移动设备的行进状态数据;根据移动设备的行进状态数据,从双目环境图像中识别出关键帧图像,并计算双目视觉传感器在相邻关键帧图像之间的位姿变化量;进而,根据关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿。
在上述实施例中,双目视觉传感器可以设置于移动设备上,也可以是移动设备周围或附近的双目视觉传感器。
在一可选实施例中,移动设备上设置有行进状态感知传感器,可感知移动设备的行进状态。基于此,在根据双目环境图像计算移动设备的行进状态数据之后,并且在根据移动设备的行进状态数据识别关键帧图像之前,可以获取移动设备上的行进状态感知传感器采集到的传感器数据;根据行进状态感知传感器采集到的传感器数据对计算出的移动设备的行进状态数据进行校验,以提高行进状态数据的准确度,进而提高定位精度。
在一可选实施例中,根据移动设备的行进状态数据,从双目环境图像中识别出关键帧图像,并计算双目视觉传感器在相邻关键帧图像之间的位姿变化量可在计算行进状态数据的过程中完成。例如,在根据双目环境图像计算移动设备的行进状态数据的过程中,可以对计算出行进状态数据进行积分处理,得到双目视觉传感器的位姿变化量;每当双目视觉传感器的位姿变化量自上一关键帧图像开始累积到大于或等于设定的变化量阈值时,将此时获取的双目环境图像或在此时之后获取的首个双目环境图像作为下一关键帧图像。
关于上述实施例的其它描述可参见前述实施例,在此不再赘述。
在本申请各实施例中,在移动设备定位过程中,融合了双目视觉传感器和行进状态感知传感器,但并不限于此。例如,在本申请一些扩展性实施例中,若移动设备上未设置双目视觉传感器,或者移动设备周围不存在双目视觉传感器,则可以将移动设备上设置的单目视觉传感器或者移动设备周围存在的单目视觉传感器与移动设备上的行进状态感知传感器相结合,定位移动设备的位姿。关于单目视觉传感器与行进状态感知传感器相结合的定位方法,可参照双目视觉传感器与行进状态感知传感器相结合的定位方法,主要包括以下步骤:获取单目视觉传感器采集到的移动设备所在环境的单目环境图像,并获取进状态感知传感器采集到的移动设备的行进状态数据;从单目环境图像中识别出关键帧图像,并根据行进状态数据获取单目视觉传感器在相邻关键帧图像之间的位姿变化量;根据关键帧图像、单目视觉传感器在相邻关键帧图像之间的位姿变化量以及单目视觉传感器的外参,定位移动设备的位姿。
相比于双目视觉传感器与行进状态感知传感器相结合的定位方法,在单目视觉传感器与行进状态感知传感器相结合的定位方法中,识别出关键帧图像、获取单目视觉传感器在相邻关键帧图像之间的位姿变化量以及根据关键帧图像、单目视觉传感器在相邻关键帧图像之间的位姿变化量以及单目视觉传感器的外参,定位移动设备的位姿等操作相对简单,可参照双目视觉传感器与行进状态感知传感器相结合的定位方法中的实现,将其中对双目环境图像的操作转换为对单目环境图像的操作,对此不做详细赘述。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤103的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图4为本申请示例性实施例提供的一种移动设备的结构示意图。如图4所示,该移动设备包括:机械本体401,机械本体401上设有一个或多个处理器402、一个或多个存储计算机程序的存储器403。
值得说明的是,一个或多个处理器402、一个或多个存储器403可设置于机械本体401内部,也可以设置于机械本体401的表面。
机械本体101是移动设备的执行机构,可以在确定的环境中执行处理器402指定的操作。其中,机械本体401一定程度上体现了移动设备的外观形态。在本实施例中,并不限定移动设备的外观形态。移动设备的设备形态不同,移动设备的外观形态也会有所不同。在本实施例中,移动设备可以是机器人、无人机或无人驾驶车辆等任何可自主移动的设备形态。以移动设备是机器人为例,则移动设备可以是人形机器人,则机械本体401可以包括但不限于:机器人的头部、手部、腕部、臂部、腰部和基座等机械结构。另外,移动设备也可以是一些形态相对简单的非人形机器人,则机械本体401主要是指机器人的机身。除此之外,本实施例的移动设备也可以是一些可移动但却是非自主移动的设备,例如可以是可跟随移动对象(例如用户或用户乘坐的交通工具等)移动的智能手机或可穿戴设备,也可以是用户驾驶或骑行的各种车辆等。
一个或多个存储器403,主要用于存储计算机程序,该计算机程序可被一个或多个处理器402执行,致使一个或多个处理器402控制移动设备执行相应任务。除了存储计算机程序之外,一个或多个存储器403还可被配置为存储其它各种数据以支持在移动设备上的操作。这些数据的示例包括用于在移动设备上操作的任何应用程序或方法的指令,移动设备所在环境的环境地图、传感器组件404采集到的传感器数据等等。
一个或多个存储器403,可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
一个或多个处理器402,可以看作是移动设备的控制系统,可用于执行一个或多个存储器403中存储的计算机程序,以控制移动设备执行相应任务。值得说明的是,移动设备处于不同场景时,其所需实现的功能、完成的动作或任务会有所不同;相应地,一个或多个存储器403中存储的计算机程序也会有所不同,而一个或多个处理器402执行不同计算机程序可控制移动设备实现不同的功能、完成不同的动作或任务。
在本实施例中,机械本体401上除了设有一个或多个处理器402以及一个或多个存储器403之外,还设置有移动设备的一些基本组件,例如传感器组件404、电源组件405以及通信组件407等等。
其中,传感器组件404包括但不限于:双目视觉传感器和行进状态感知传感器。双目视觉传感器可以是双目摄像头或双目相机等,主要用于采集移动设备所在环境的图像,得到双目环境图像。行进状态感知传感器主要用于感知并采集移动设备的行进状态数据。值得说明的是,采用不同类型的行进状态感知传感器,所采集到的行进状态数据会有所不同,本实施例对此并不限定,凡是可感知移动设备的行进状态的传感器均适用于本申请实施例。
在一可选实施例中,如图4所示,该移动设备还包括行进机构406。进机构406是移动设备移动的基本组件。在本实施例中,并不限定行进机构406的类型,例如行进机构406可以是轮式行进机构、半履带式行进机构、车轮-履带式行进机构或履带式行进机构等。根据行进机构406的类型,可以适应性选择所使用的行进状态感知传感器的类型。
以行进机构406采用轮式行进机构为例,则行进状态感知传感器可以是任何能够感知轮式行进机构行进状态的传感器。例如,行进状态感知传感器可以是设置于轮式行进机构上的旋转编码器,该旋转编码器用于感知轮式行进机构的转动量。又例如,行进状态感知传感器还可以是设置于轮式行进机构上的轮速传感器,该轮速传感器用于感知轮式行进机构的轮速数据。可选地,轮速传感器可以是磁电式轮速传感器或霍尔式轮速传感器。又例如,行进状态感知传感器还可以是设置于机械本体401上的里程计,该里程计主要用于感知轮式行进机构行进的里程数据。
无论移动设备的设备形态如何,也不论移动设备处在何种场景中,可能需要在移动过程中定位自身的位置。基于此,一个或多个存储器403中存储有一种计算机程序,当该计算机程序被一个或多个处理器402执行时,能够致使处理器402控制移动设备实现定位功能。
在本实施例中,一个或多个处理器402可融合双目视觉传感器和行进状态感知传感器,控制移动设备实现定位功能。具体地,一个或多个处理器402可获取双目视觉传感器采集到的移动设备所在环境的双目环境图像以及行进状态感知传感器采集到的移动设备的行进状态数据;从双目环境图像中识别出关键帧图像,并根据行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量;进而,根据关键帧图像、双目视觉传感器在相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿。
其中,双目视觉传感器在相邻关键帧图像之间的位姿变化量可以包括双目视觉传感器在相邻关键帧图像之间的平移量,也可以包括双目视觉传感器在相邻关键帧图像之间的旋转量,或者同时包括双目视觉传感器在相邻关键帧图像之间的平移量和旋转量,具体视移动设备在相邻关键帧图像之间的移动情况而定。
其中,双目视觉传感器的外参可描述双目视觉传感器中两目视觉传感器之间的位姿变换关系,主要包括:两目视觉传感器之间的旋转(Rotation)关系和转换(Translation)关系。
其中,每个双目环境图像包括左目环境图像和右目环境图像。可选地,双目环境图像中的左目环境图像和右目环境图像时间同步,即左目环境图像和右目环境图像携带的时间戳相同。
在一可选实施例中,本实施例的双目视觉传感器可以做到硬件同步,这意味着,左右两目视觉传感器采集到的环境图像是同步的,携带的时间戳相同,故左右两目视觉传感器每次采集到的左右两目环境图像可直接作为本实施例所述的一帧双目环境图像。
在一可选实施例中,考虑到大多情况下,双目视觉传感器很难做到硬件同步,故一个或多个处理器402在获取双目视觉传感器采集到的移动设备所在环境的双目环境图像时,具体用于:
接收双目视觉传感器中左右两目视觉传感器分别采集到的移动设备所在环境的左目环境图像和右目环境图像;
将每次接收到的左目环境图像视为待同步左目环境图像,针对待同步左目环境图像,从已接收到的右目环境图像中选择与待同步左目环境图像的时间戳之差最小的作为待同步右目环境图像;
若待同步左目环境图像和待同步右目环境图像的时间戳之差小于设定的时间差阈值,对待同步左目环境图像和待同步右目环境图像进行时间戳同步以得到一帧双目环境图像。可选地,可以将待同步左目环境图像的时间戳替换为待同步右目环境图像的时间戳,也可以将待同步右目环境图像的时间戳替换为待同步左目环境图像的时间戳,从而达到待同步左目环境图像和待同步右目环境图像携带相同时间戳的目的。
除了上述方式之外,也可以将每次接收到的右目环境图像视为待同步右目环境图像,针对待同步右目环境图像,从已接收到的左目环境图像中选择与待同步右目环境图像的时间戳之差最小的作为待同步左目环境图像;若待同步左目环境图像和待同步右目环境图像的时间戳之差小于设定的时间差阈值,对待同步左目环境图像和待同步右目环境图像进行时间戳同步以得到一帧双目环境图像。
在一可选实施例中,一个或多个处理器402在从双目环境图像中识别出关键帧图像时,具体用于:对行进状态感知传感器自识别出上一关键帧图像开始采集到的行进状态数据进行积分处理,得到双目视觉传感器的位姿变化量;当双目视觉传感器的位姿变化量累积到大于或等于设定的变化量阈值时,将此时获取的双目环境图像或在此时之后获取的首个双目环境图像作为下一关键帧图像。
相应地,一个或多个处理器402在根据行进状态数据获取双目视觉传感器在相邻关键帧图像之间的位姿变化量时,具体用于:获取目标视觉传感器在累积到大于或等于设定的变化量阈值时的位姿变化量,作为双目视觉传感器在上一关键帧图像与下一关键帧图像之间的位姿变化量。
在一可选实施例中,一个或多个处理器402在定位移动设备的位姿时,具体用于:在对移动设备的每次定位操作中,获取最新识别出的N个关键帧图像,根据N个关键帧图像、双目视觉传感器在N个关键帧图像中相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿;其中,N是≥2的整数。
进一步可选地,一个或多个处理器402在根据N个关键帧图像、双目视觉传感器在N个关键帧图像中相邻关键帧图像之间的位姿变化量以及双目视觉传感器的外参,定位移动设备的位姿时,具体用于:
根据N个关键帧图像中的特征点匹配关系,得到移动设备所在环境中的目标路标点以及目标路标点对应的观测序列;
根据目标路标点对应的观测序列和双目视觉传感器在N个关键帧图像中相邻关键帧图像之间的位姿变化量,采用三角化算法计算目标路标点在相机坐标系中的位置坐标;
根据双目视觉传感器的外参和目标路标点在相机坐标系中的位置坐标进行BA优化,得到双目视觉传感器在世界坐标系中的位姿;
根据双目视觉传感器在世界坐标系中的位姿和双目视觉传感器与移动设备之间已知的位姿变换关系,得到移动设备在世界坐标系统中的位姿。
在一可选实施例中,一个或多个处理器402在得到目标路标点以及所述目标路标点对应的观测序列时,具体用于:
对N个关键帧图像中每个关键帧图像中的左右两目环境图像分别进行特征点提取,得到每个关键帧图像中左右两目环境图像各自包含的特征点;
对N个关键帧图像中相邻关键帧图像中的同目环境图像进行特征点关联,得到相邻关键帧图像之间的左目特征点对和右目特征点对;
将每个关键帧图像中的左右两目环境图像中分别属于左目特征点对和右目特征点对中的特征点进行双目匹配,得到每个关键帧图像中的双目特征点对;
根据相邻关键帧图像之间的左目特征点对和右目特征点对以及每个关键帧图像中的双目特征点对,确定目标路标点以及目标路标点对应的观测序列。
进一步可选地,一个或多个处理器402还用于,在得到相邻关键帧图像之间的左目特征点对和右目特征点对之后,且在每个关键帧图像中的左右两目环境图像进行双目匹配之前,根据双目视觉传感器在相邻关键帧图像之间的位姿变化量,将所述相邻关键帧图像之间错误关联的左目特征点对和/或右目特征点对去除。
更进一步,一个或多个处理器402在将所述相邻关键帧图像之间错误关联的左目特征点对和/或右目特征点对去除时,具体用于:根据所述双目视觉传感器在相邻关键帧图像之间的位姿变化量,从所述相邻关键帧图像之间的第一目特征点对中,选择满足位姿变化一致性要求的若干个特征点对;利用所选择的满足位姿变化一致性要求的若干个特征点对中的特征点,构建特征点校验模型;利用所述特征点校验模型对每个第一目特征点对中的特征点进行验证,将未通过校验的特征点隶属的第一目特征点对去除;其中,第一目特征点对是左目特征点对和右目特征点对中任一目的特征点对。
在一可选实施例中,一个或多个处理器402在进行双目匹配时,具体用于:
对每个关键帧图像之间的第一目环境图像中的第一特征点,根据所述双目视觉传感器的极线约束,得到所述第一特征点在第二目环境图像中的极线;
计算所述第一特征点周围像素块与所述第二目环境图像中属于相应目特征点对且位于所述极线上的各特征点周围像素块之间的相似度;
从所述第二目环境图像中属于相应目特征点对且位于所述极线上的各特征点中,选择周围像素块与所述第一特征点周围像素块之间的相似度满足相似度要求的第二特征点;
若所述第一特征点周围像素块与所述第二特征点周围像素块之间的相似度大于设定的相似度阈值,将所述第一特征点与所述第二特征点形成相互关联的双目特征点对;
其中,所述第一目环境图像是左右两目环境图像中任一目环境图像,所述第二目环境图像是左右两目环境图像中另一目环境图像;所述第一特征点是所述第一目环境图像中属于相应目特征点对的任一特征点。
在另一可选实施例中,一个或多个处理器402在进行双目匹配时,具体用于:
对每个关键帧图像之间的第一目环境图像中的第一特征点,根据所述双目视觉传感器的极线约束,得到所述第一特征点在第二目环境图像中的极线;
计算所述第一特征点周围像素块与所述第二目环境图像中属于相应目特征点对且位于所述极线上的各特征点周围像素块之间的相似度;
从所述第二目环境图像中属于相应目特征点对且位于所述极线上的各特征点中,选择周围像素块与所述第一特征点周围像素块之间的相似度满足相似度要求的第二特征点;
若所述第一特征点周围像素块与所述第二特征点周围像素块之间的相似度大于设定的相似度阈值,判断第一目环境图像中属于相应目特征点对的特征点中是否存在第三特征点,第三特征点在第二目环境图像中的极线上包含第二特征点,且第三特征点周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值;
若判断结果为存在,即第一目环境图像中属于相应目特征点对的第三特征点在第二目环境图像中的极线上包含第二特征点,且第三特征点周围像素块与第二特征点周围像素块之间的相似度大于设定的相似度阈值,则判断第一特征点周围像素块与第二特征点周围像素块之间的相似度是否大于第三特征点周围像素块与第二特征点周围像素块之间的相似度;
若判断结果为是,则将第一特征点与第二特征点形成相互关联的双目特征点对;
若判断结果为否,则将第三特征点与第二特征点形成相互关联的双目特征点对。
在又一可选实施例中,一个或多个处理器402在进行双目匹配时,具体用于:
对每个关键帧图像之间的第一目环境图像中的第一特征点,根据所述双目视觉传感器的极线约束,得到所述第一特征点在第二目环境图像中的极线;
计算所述第一特征点周围像素块与所述第二目环境图像中属于相应目特征点对且位于所述极线上的各特征点周围像素块之间的相似度;
从所述第二目环境图像中属于相应目特征点对且位于所述极线上的各特征点中,选择周围像素块与所述第一特征点周围像素块之间的相似度满足相似度要求的第二特征点;
若所述第一特征点周围像素块与所述第二特征点周围像素块之间的相似度大于设定的相似度阈值,判断第一特征点是否位于第二特征点在第一目环境图像中的极线上,且第二特征点周围像素块与第一特征点周围像素块之间的相似度是否大于设定的相似度阈值;
若第一特征点位于第二特征点在第一目环境图像中的极线上,且第二特征点周围像素块与第一特征点周围像素块之间的相似度大于设定的相似度阈值,则将第一特征点与第二特征点形成相互关联的双目特征点对。
在一可选实施例中,一个或多个处理器402还用于,在得到每个关键帧图像中的双目特征点对之后,且在确定目标路标点以及目标路标点对应的观测序列之前,针对每个关键帧图像中的任一双目特征点对,判断所述双目特征点对是否在上一关键帧图像中的双目特征点对中出现过;若判断结果为未出现,将所述双目特征点对剔除,以保证相邻关键帧图像的双目匹配一致性。
在一可选实施例中,一个或多个处理器402在确定目标路标点以及目标路标点对应的观测序列时,具体用于:根据相邻关键帧图像之间的左目特征点对和右目特征点对,确定所述N个关键帧图像中的双目特征点对之间的关联关系;将存在关联的双目特征点对中的特征点汇总在一起形成一个观测序列,每个观测序列对应一个路标点;根据所述路标点对应的观测序列的长度,选择对应的观测序列的长度大于设定长度阈值的路标点及其对应的观测序列分别作为目标路标点及所述目标路标点对应的观测序列。
在一可选实施例中,一个或多个处理器402在确定目标路标点以及目标路标点对应的观测序列之后,还用于:在目标路标点中存在至少两个单目路标点的情况下,对于任意两个单目路标点P1和单目路标点P2,判断是否在连续T个关键帧图像的双目匹配过程中,均有单目路标点P1对应的特征点序列中的特征点和单目路标点P2对应的特征点序列中的特征点形成相互关联的特征点对,T是≥2且≤N的整数;若判断结果为是,将单目路标点P1和单目路标点P2合并为一个目标路标点,并将单目路标点P1和单目路标点P2对应的观测序列合并为合并后得到的目标路标点对应的观测序列。
在一可选实施例中,一个或多个处理器402在对移动设备的每次定位操作中,获取最新的N个关键帧图像时,具体用于:每当识别出新的关键帧图像时,将新的关键帧图像滑入滑动窗口,并将滑动窗口中最老的关键帧图像滑出;滑动窗口的长度为N;每当滑动窗口中有新的关键帧图像出现时,获取滑动窗口中的关键帧图像,作为本次对移动设备进行定位所需的最新的N个关键帧图像。
基于上述,在一可选实施例中,一个或多个处理器402在进行BA优化时,具体用于:根据与被滑出滑动窗口的最老的关键帧图像相关的历史信息生成一个信息矩阵,该信息矩阵反应BA优化中待求量之间需要满足的一种约束关系;将双目视觉传感器的外参、目标路标点在相机坐标系中的位置坐标以及信息矩阵作为约束条件,将目标路标点在世界坐标系的位置和双目视觉传感器在世界坐标系的位姿作为待求量进行BA优化,得到双目视觉传感器在世界坐标系中的位姿。其中,与被滑出滑动窗口的最老的关键帧图像相关的历史信息包括但不限于:双目视觉传感器在该最老的关键帧图像与其下一关键帧图像之间的位姿变化量、该最老的关键帧图像对应的目标路标点以及目标路标点对应的观测序列等。
在本实施例中,融合双目视觉传感器和行进状态感知传感器对移动设备进行定位;其中,行进状态感知传感器不依赖外界参照物,双目视觉传感器的观测范围相对较大,可观测到相对较远处的障碍物,即使在空旷区域也能正常为移动设备进行定位,不易受环境限制,有利于提高定位精度;另外,双目视觉传感器和行进状态感知传感器的价格相对便宜,可降低定位成本。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,可致使一个或多个处理器实现上述定位方法实施例中的各步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。