一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

边界提取方法、装置及设备与流程

2023-02-19 05:54:54 来源:中国专利 TAG:


1.本技术涉及机器人技术领域,尤其涉及一种边界提取方法、装置及设备。


背景技术:

2.由于家庭环境的复杂性,清洁机器人,例如扫地机等,在沿边的过程中可能走到一些容易出问题的地方,比如打滑的地方,比如容易卡住的地方,清洁机器人在再次经过这些地方时需要沿这些地方的边界前进,以绕开这些容易出问题的地方。同时,因为环境的特殊性,清洁机器人一次清洁可能不能完全清洁完一个房间,在对漏清洁区域进行清洁时需要沿已清洁区域的边界前进,以避免重复清洁。在这两种情况下,清洁机器人都需要在清洁地图的边界上沿着边界前进,即使边界是曲线型的,即使这个边界对应着实际房间中的空地,清洁机器人也能沿着这个边界行走。
3.目前,相关技术中,针对边界提取的问题,主要采用sobel算子、laplance算子、canny算法以及一些形态学方法,这些方法的研究对象是图像本身,是基于图像处理对整个边界的提取,本质上是通过提取图像特征来进行图像分割。然而,清洁机器人的行走方向可能是随时变化的,这样得到的边界实际上是图像的边界,并不能与清洁机器人的行走方向匹配。
4.针对清洁机器人的行走方向与提取的边界不匹配的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本技术提供了一种边界提取方法、装置及设备,以解决清洁机器人的行走方向与提取的边界不匹配的技术问题。
6.根据本技术实施例的一个方面,本技术提供了一种边界提取方法,包括:
7.确定边界提取的初始起点,其中,边界为地图上标记的已清洁区域和未清洁区域的分界线;
8.确定与初始起点相邻的目标边界点;
9.从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点,其中,所提取的边界点为目标区域中的点,目标区域为已清洁区域和未清洁区域中的其中一个;
10.在下一个相邻边界点满足第一预设条件的情况下终止边界提取。
11.可选地,从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点包括:
12.在提取目标边界点的下一个相邻边界点时,将目标边界点作为当前边界点,将初始起点作为当前边界点的上一个相邻边界点;
13.以上一个相邻边界点为起点,在当前边界点的邻域点中搜寻出满足第二预设条件的邻域点作为提取出的下一个相邻边界点;
14.将本次搜寻使用的当前边界点更新为下一次搜寻使用的上一个相邻边界点,将本次搜寻得到的下一个相邻边界点更新为下一次搜寻使用的当前边界点,并按此方式继续逐一搜寻每个当前边界点的下一个相邻边界点。
15.可选地,以上一个相邻边界点为起点,在当前边界点的邻域点中搜寻出满足第二预设条件的邻域点作为提取出的下一个相邻边界点包括:
16.按照预设编码模板为当前边界点的邻域点编码,其中,编码之后得到的图形为携带有编码方向的闭合图形;
17.从上一个相邻边界点的编码开始,按照编码方向搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点。
18.可选地,从上一个相邻边界点的编码开始,按照编码方向搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点包括:
19.创建前邻域点标记和后邻域点标记;
20.将上一个相邻边界点的编码值赋予前邻域点标记和后邻域点标记,以使前邻域点标记和后邻域点标记共同指向上一个相邻边界点;
21.在前邻域点标记指向的点为未清洁区域的点的情况下,或者,在前邻域点标记和后邻域点标记的编码值相等的情况下,将前邻域点标记的编码值赋予后邻域点标记,并按照编码顺序,将下一个编码的邻域点的编码值赋予前邻域点标记,以使后邻域点标记指向未修改前该前邻域点标记指向的点,而使前邻域点标记指向下一个编码的邻域点;
22.在前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为未清洁区域的点的情况下,或者,在前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为已经提取出来的边界点且前邻域点标记和后邻域点标记的编码值不相等的情况下,将前邻域点标记指向的点确定为下一个相邻边界点。
23.可选地,确定边界提取的初始起点包括:
24.将地图上的目标分区中未清洁区域的所有节点导入目标队列,其中,目标分区为待进行边界提取的分区;
25.将地图上的目标分区中已清洁区域的所有节点导入目标数据表;
26.从目标队列中逐一提取节点,并搜寻该节点的邻域点;
27.当目标队列中的节点的至少一个邻域点为目标数据表中的节点时,将该节点确定为用于边界提取的初始起点。
28.可选地,确定与初始起点相邻的目标边界点包括按照如下方式搜寻初始起点的邻域点,直至找到与初始起点相邻的目标边界点:
29.随机选取一个初始起点的邻域点作为搜寻的起点;
30.从起点开始,按照预设时针方向搜寻初始起点的邻域点;
31.在搜寻到的当前邻域点为已清洁区域的点且上一个邻域点为未清洁区域的点的情况下,将当前邻域点确定为目标边界点。
32.可选地,第一预设条件包括以下其中一种:
33.提取出来的下一个相邻边界点为初始起点;
34.提取出下一个相邻边界点后,已提取的边界点的总数达到预设阈值。
35.可选地,通过遍历所述当前边界点的邻域点,确定所述当前边界点的下一个相邻
边界点。
36.可选地,确定当前边界点的下一个相邻边界点还包括:
37.将当前边界点作为原点,创建二维坐标系;
38.在二维坐标系中确定从原点指向上一个相邻边界点的第一向量、第二向量以及第三向量;
39.固定第一向量,将第二向量和第三向量绕原点旋转,其中,第二向量和第三向量每次旋转的角度相同,且第二向量先旋转一次之后,第二向量和第三向量再同时旋转;
40.在第二向量指向的节点为已清洁区域的点、第三向量指向的点为未清洁区域的点且第二向量和第一向量不重合的情况下,将第二向量指向的点作为下一个相邻边界点。
41.根据本技术实施例的另一方面,本技术提供了一种边界提取装置,包括:
42.起点确定模块,用于确定边界提取的初始起点,其中,所述边界为地图上标记的已清洁区域和未清洁区域的分界线;
43.第一搜寻模块,用于确定与初始起点相邻的目标边界点;
44.第二搜寻模块,用于从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点,其中,所提取的边界点为目标区域中的点,目标区域为已清洁区域和未清洁区域中的其中一个;
45.终止模块,用于在下一个相邻边界点满足第一预设条件的情况下终止边界提取。
46.根据本技术实施例的另一方面,本技术提供了一种用于清洁机器人的边界提取设备,包括存储器、处理器、通信接口及通信总线,存储器中存储有可在处理器上运行的计算机程序,存储器、处理器通过通信总线和通信接口进行通信,处理器执行计算机程序时实现上述方法的步骤。
47.本技术实施例提供的上述技术方案与相关技术相比具有如下优点:
48.本技术技术方案为确定边界提取的初始起点,其中,边界为地图上标记的已清洁区域和未清洁区域的分界线;确定与初始起点相邻的目标边界点;从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点,其中,所提取的边界点为目标区域中的点,目标区域为已清洁区域和未清洁区域中的其中一个;在下一个相邻边界点满足第一预设条件的情况下终止边界提取。本技术提出了一种基于相对方向的边界提取技术,从一个边界点出发,沿着一个相对方向去提取边界。提取出来的边界是带方向的,并且是用于指导机器人运动的。解决了清洁机器人的行走方向与提取的边界不匹配的技术问题。
附图说明
49.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
50.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
51.图1为根据本技术实施例提供的一种可选的清洁机器人沿边路径示意图;
52.图2为根据本技术实施例提供的一种可选的清洁机器人弓扫示意图;
53.图3为根据本技术实施例提供的一种可选的清洁机器人跨分区路径示意图;
54.图4为根据本技术实施例提供的一种可选的清洁机器人边界提取示意图;
55.图5为根据本技术实施例提供的一种可选的边界提取方法硬件环境示意图;
56.图6为根据本技术实施例提供的一种可选的边界提取方法流程图;
57.图7为根据本技术实施例提供的一种可选的栅格地图标记示意图;
58.图8为根据本技术实施例提供的一种可选的边界提取示意图;
59.图9为根据本技术实施例提供的一种可选的目标节点搜寻方向示意图;
60.图10为根据本技术实施例提供的一种可选的目标节点搜寻结果示意图;
61.图11为根据本技术实施例提供的一种可选的预设编码模板示意图;
62.图12为根据本技术实施例提供的一种可选的边界提取装置框图;
63.图13为本技术实施例提供的一种可选的用于清洁机器人的边界提取设备结构示意图。
具体实施方式
64.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
65.在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本技术的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
66.首先,在对本技术实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
67.沿边:是指清洁机器人在清洁过程中,在一个4米乘4米的分区中。沿着分区最外围走一圈的过程。这个过程中,可以将这个分区中的译者障碍物标记出来,同时在走的过程中轨迹能够闭合,也方便slam建图。
68.覆盖:是清洁机器人清洁过程中的一个清洁阶段。沿边之后,会在闭合的轨迹中生成一些覆盖点,在走覆盖点的过程中,机器人的轨迹覆盖完整个分区内的区域。因为走过的区域既为清洁过的区域,所以,当清洁机器人的轨迹覆盖完整个区域时,这个区域就完成了清洁。覆盖就是用轨迹将区域覆盖完的过程。
69.边界提取:是指提栅格地图中的地图边界。与图像处理中的边界提取略微不同,地图中的边界是指地图和未知区域之间的边界。
70.打滑:是指清洁机器人轮子打滑。
71.清洁地图:清洁机器人在清洁的时候,走过的地方被标记上点。这些点标识了哪些区域是已经清洁过的。这些点构成的地图就是清洁地图。
72.弓扫:弓扫是覆盖阶段的一种实现方法。弓扫过程中,清洁机器人走出来的轨迹是弓字形。
73.覆盖点:即用于在覆盖阶段行走的目标点。按照顺序到达这些目标点,清洁机器人就完成了覆盖。如果覆盖点的生成逻辑是弓扫,那么实际走完覆盖点之后,轨迹就成弓字
形。
74.栅格地图:栅格地图也就是网格地图。地图上的点大致可以分为两类,已知点和未知点。已知点又可以细分为多种类型,用于存储信息。
75.边界点:即栅格地图上,已知区域的边界上的点。这种点的周围八邻域中一定会有未知点,四邻域中可能有未知点。
76.宽度优先搜索(breadth-first-search,bfs):这是图论中的一种搜索算法。算法中会维护一个open表和一个closed表。open表是一个队列,满足先进先出的规则。open表中存放的是等待搜索的节点,closed中存放的是已经搜索过了的节点。算法执行过程中,不断地从open表中取出第一个元素(某个节点),进行处理(本文中是用于判断是不是目标点)。然后搜寻这个元素(图中的节点)的相邻节点,如果相邻的节点不在closed表中,就添加到open表的尾部。这个过程不断循环,直到满足结束的条件,结束条件包含open表为空,也可以包含其他自定义的条件。在本文的应用中,在四邻域的情况下,可以理解为一个栅格点与它上下左右的栅格点之间是有边相连接的,每个栅格点都是一个图论中的节点。在八邻域的情况下,可以理解为一个栅格点与它周围的八个栅格点之间有边相连。每个栅格点都是图论中的节点。
77.相关技术中,针对边界提取的问题,主要采用sobel算子、laplance算子、canny算法以及一些形态学方法,这些方法的研究对象是图像本身,是基于图像处理对整个边界的提取,本质上是通过提取图像特征来进行图像分割。然而,清洁机器人的行走方向可能是随时变化的,这样得到的边界实际上是图像的边界,并不能与清洁机器人的行走方向匹配。
78.为了解决背景技术中提及的问题,根据本技术实施例的一方面,提供了一种边界提取方法的实施例。本技术提供的一种边界提取方法可以应用于清洁机器人的控制。通常情况下,清洁机器人的清洁流程是先沿边(如图1所示),然后在沿边走出来的这个闭合的轨迹中产生弓扫的覆盖点。接着进行弓扫(如图2所示),扫完之后去到下一个分区(如图3所示),重复沿边-覆盖-导航的流程,直到清洁完成。本技术提供的一种边界提取方法可以应用于这三个步骤中的沿边步骤(如图4所示),最终提取出来的边界与清洁机器人沿边过程中的前进方向相匹配,即使边界是曲线型的,即使这个边界对应着实际房间中的空地,清洁机器人也能沿着这个边界行走。
79.可选地,在本技术实施例中,上述边界提取方法可以应用于如图5所示的由终端501和服务器503所构成的硬件环境中。如图5所示,服务器503通过网络与终端501进行连接,可用于为终端或终端上安装的客户端提供服务,可在服务器上或独立于服务器设置数据库505,用于为服务器503提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端501包括但不限于清洁机器人、与清洁机器人通信连接的pc、手机、平板电脑等。
80.本技术实施例中,清洁机器人可以是扫地机,也可以是拖地机,还可以是扫拖一体机等。
81.本技术实施例中的一种方法可以由服务器503来执行,还可以是由服务器503和终端501共同执行,如图6所示,该方法可以包括以下步骤:
82.步骤s602,确定边界提取的初始起点,其中,边界为地图上标记的已清洁区域和未清洁区域的分界线;
83.步骤s604,确定与初始起点相邻的目标边界点;
84.步骤s606,从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点,其中,所提取的边界点为目标区域中的点,目标区域为已清洁区域和未清洁区域中的其中一个;
85.步骤s608,在下一个相邻边界点满足第一预设条件的情况下终止边界提取。
86.本技术实施例中所用地图可以是栅格地图,栅格地图也就是网格地图。地图上的点大致可以分为两类,即已清洁区域的点和未清洁区域的点(如图7所示,已清洁区域的点可以标记为1,未清洁区域的点可以标记为0。边界点即为栅格地图上,已清洁区域的边界上的点或者未清洁区域的边界上的点。
87.本技术实施例中,边界提取的初始起点可以从已清洁区域的边界上的点确定,还可以从未清洁区域的边界上的点确定。
88.本技术实施例中,所述邻域点可以是四邻域点,若需要提取更高精度的边界,还可以选择八邻域点进行边界提取。
89.本技术实施例中,可以从该初始起点开始,建立边界点集合(edge points set),该初始起点为边界点集合的第一个边界点,每提取出一个边界点,都将该边界点存储至该边界点集合中,并记录各边界点之间的连接关系,得到链式的点集。添加新的边界点的同时可以通过计数器统计边界点集合中已提取的边界点的数量,从而可以在总数量达到预设阈值是终止边界提取,或者,可以提取到的边界点为初始起点时,终止边界提取。
90.上述第一预设条件即包括:提取出来的下一个相邻边界点为初始起点,或者,提取出下一个相邻边界点后,已提取的边界点的总数达到预设阈值。该预设阈值可以根据实际需要进行设置。
91.本技术实施例中的边界提取方法是基于相对方向的边界提取技术,简称为eerd(edge extraction with relative direction),该相对方向是通过当前边界点和当前边界点的上一个相邻边界点之间的位置关系来确定的,因此,确定边界提取的初始起点之后,还需要在该初始起点的邻域点中,找到一个边界点,即目标边界点,在为该目标边界点搜寻下一个相邻边界点时,将该目标边界点作为当前边界点,将初始起点作为上一个相邻边界点,从而可以通过该目标边界点和初始起点的相对位置关系确定下一步搜寻所需的相对方向。后续搜寻边界点的过程中,都以当前边界点和上一个相邻边界点之间的相对位置关系确定下一步搜寻所需的相对方向,保持这种相对关系,以在搜寻边界点的时候能够严格保证前后找到的两个边界点不会出现跳跃的情况。
92.如图8所示,提取边界的过程可以形象地表示为轮子在地面上从a点滚动到b点的过程。这个过程中轮子压过的地面就是需要提取的点。轮子压地面的顺序就是提取点的顺序。因此依据轮子转动的方法,在提取边界点的时候,也采取转动的方式寻找下一个点。
93.通过步骤s602至s608,本技术提出了一种基于相对方向的边界提取技术,从一个边界点出发,沿着一个相对方向去提取边界。提取出来的边界是带方向的,并且是用于指导机器人运动的,搜寻边界点的时候能够严格保证前后找到的两个边界点不会出现跳跃的情况。解决了清洁机器人的行走方向与提取的边界不匹配的技术问题。
94.可选地,步骤s602确定边界提取的初始起点包括以下步骤:
95.步骤1,将地图上的目标分区中未清洁区域的所有节点导入目标队列,其中,目标
分区为待进行边界提取的分区;
96.步骤2,将地图上的目标分区中已清洁区域的所有节点导入目标数据表;
97.步骤3,从目标队列中逐一提取节点,并搜寻该节点的邻域点;
98.步骤4,在存在目标节点的邻域点中至少有一个邻域点为目标数据表中的节点的情况下,将目标节点确定为用于边界提取的初始起点。
99.本技术实施例中,可以基于宽度优先搜索的思想确定该初始起点。宽度优先搜索的思想是维护一个open表和一个closed表。open表是一个队列,满足先进先出的规则。open表中存放的是等待搜索的节点,closed中存放的是已经搜索过了的节点。算法执行过程中,不断地从open表中取出第一个元素(某个节点),然后搜寻这个元素(图中的节点)的相邻节点,如果相邻的节点不在closed表中,就添加到open表的尾部。这个过程不断循环,直到满足结束的条件,结束条件包含open表为空,也可以包含其他自定义的条件。
100.应用于本方案中,目标队列相当于open表,满足先进先出的规则,该目标队列中存储的是未清洁区域的所有节点。目标数据表相当于closed表,目标数据表中存储的是已清洁区域的所有节点。算法执行过程中,不断地从目标列表中取出未清洁区域的节点,搜寻该节点的邻域点,若邻域点中都没有目标数据表中的点,则重新从目标队列提取新的未清洁区域的点,重复搜寻、判断的过程。若邻域点中存在目标数据表中的点,即存在已清洁区域的点,说明到达边界,则可以将当前的未清洁区域的点作为边界提取的初始起点。该初始起点虽然不是已清洁区域的边界点,但仍可以作为边界点集合中的第一个边界点。
101.上述方法得到的初始起点为未清洁区域的边界点,本技术还可以选择已清洁区域的边界点来作为边界提取的初始起点。
102.选择已清洁区域的边界点来作为边界提取的初始起点的方法可以包括以下步骤:
103.步骤1,将地图上的目标分区中已清洁区域的所有节点导入目标队列,其中,目标分区为待进行边界提取的分区;
104.步骤2,将地图上的目标分区中未清洁区域的所有节点导入目标数据表;
105.步骤3,从目标队列中逐一提取节点,并搜寻该节点的邻域点;
106.步骤4,在存在目标节点的邻域点中至少有一个邻域点为目标数据表中的节点的情况下,将目标节点确定为用于边界提取的初始起点。
107.对于选择已清洁区域的边界点来作为边界提取的初始起点的方法,目标队列相当于open表,该目标队列中存储的是已清洁区域的所有节点。目标数据表相当于closed表,目标数据表中存储的是未清洁区域的所有节点。算法执行过程中,不断地从目标队列中取出已清洁区域的节点,搜寻该节点的邻域点,若邻域点中都没有目标数据表中的点,则重新从目标队列提取新的已清洁区域的点,重复搜寻、判断的过程。若邻域点中存在目标数据表中的点,即存在未清洁区域的点,说明到达边界,则可以将当前的已清洁区域的点作为边界提取的初始起点。
108.可选地,步骤s604确定与初始起点相邻的目标边界点,包括按照如下方式搜寻初始起点的邻域点,直至找到与初始起点相邻的目标边界点:
109.步骤1,随机选取一个初始起点的邻域点作为搜寻的起点;
110.步骤2,从起点开始,按照预设时针方向搜寻初始起点的邻域点;
111.步骤3,在搜寻到的当前邻域点为已清洁区域的点且上一个邻域点为未清洁区域
的点的情况下,将当前邻域点确定为目标边界点。
112.本技术实施例中,如图9所示,点s为初始起点,随机选取一个初始起点s的邻域点作为搜寻的起点后,按照预设时针方向(图9中预设时针方向为顺时针方向,还可以是逆时针方向)搜寻初始起点s的邻域点,可以得到如图10所示的目标边界点s1。
113.可选地,步骤s606从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点包括以下步骤:
114.步骤1,在提取目标边界点的下一个相邻边界点时,将目标边界点作为当前边界点,将初始起点作为当前边界点的上一个相邻边界点;
115.步骤2,以上一个相邻边界点为起点,在当前边界点的邻域点中搜寻出满足第二预设条件的邻域点作为提取出的下一个相邻边界点,即以上一个相邻边界点为起点,搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点;
116.步骤3,将本次搜寻使用的当前边界点更新为下一次搜寻使用的上一个相邻边界点,将本次搜寻得到的下一个相邻边界点更新为下一次搜寻使用的当前边界点,并按此方式继续逐一搜寻每个当前边界点的下一个相邻边界点。
117.本技术实施例中,找到初始起点s和目标边界点s1之后,即可在为目标边界点s1搜寻下一个相邻边界点时,将目标边界点s1作为当前边界点,将初始起点s作为上一个相邻边界点,从而构建当前边界点和上一个相邻边界点之间的相对位置关系,以上一个相邻边界点为起点,搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点。由此,即可在后续搜寻所有边界点的过程中,将本次搜寻使用的当前边界点更新为下一次搜寻使用的上一个相邻边界点,将本次搜寻得到的下一个相邻边界点更新为下一次搜寻使用的当前边界点,从而不断构建当前边界点和上一个相邻边界点之间的相对位置关系,保持这种相对关系,以在搜寻边界点的时候能够严格保证前后找到的两个边界点不会出现跳跃的情况。
118.可选地,以上一个相邻边界点为起点,搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点包括以下步骤:
119.步骤1,按照预设编码模板为当前边界点的邻域点编码,其中,编码之后得到的图形为携带有编码方向的闭合图形;
120.步骤2,从上一个相邻边界点的编码开始,按照编码方向搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点。
121.本技术实施例中,为当前边界点的邻域点编码可以是数字编号、字母编号、符号编号等方式,本技术实施例以数字编号为例进行说明。该预设编码模板可以如图11所示,该预设编码模板示出了采用0到3的数字编号、以顺时针数字递增的编码方向为例的四邻域编码方式。中间的点1表示当前边界点,0到3表示当前边界点的四邻域的邻域点。如图所示,编码之后0-1-2-3-0的邻域点为以顺时针数字递增为编码方向的闭合图形。
122.本技术实施例中,将图10中以目标边界点s1作为当前边界点为例,按照图11所示的预设编码模板进行编码后,s点在s1的四邻域中的编号是2,那么基于s1搜索下一个边界点的时候,就从s1的编号为2的邻域点开始,按照顺时针的编码方向搜寻s1的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点。
123.可选地,从上一个相邻边界点的编码开始,按照编码方向搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点包括以下步骤:
124.步骤1,创建前邻域点标记和后邻域点标记;
125.步骤2,将上一个相邻边界点的编码值赋予前邻域点标记和后邻域点标记,以使前邻域点标记和后邻域点标记共同指向上一个相邻边界点;
126.步骤3,在前邻域点标记指向的点为未清洁区域的点的情况下,或者,在前邻域点标记和后邻域点标记的编码值相等的情况下,将前邻域点标记的编码值赋予后邻域点标记,并按照编码顺序,将下一个编码的邻域点的编码值赋予前邻域点标记,以使后邻域点标记指向未修改前该前邻域点标记指向的点,而使前邻域点标记指向下一个编码的邻域点;
127.在前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为未清洁区域的点的情况下,或者,在前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为已经提取出来的边界点且前邻域点标记和后邻域点标记的编码值不相等的情况下,将前邻域点标记指向的点确定为下一个相邻边界点。
128.本技术实施例中,每次为当前边界点搜寻下一个相邻边界点时,初始化两个变量,即前邻域点标记f(front)和后邻域点标记b(back),并在初始化时将上一个相邻边界点的编码值赋予前邻域点标记和后邻域点标记,以使前邻域点标记和后邻域点标记共同指向上一个相邻边界点。将图10中以目标边界点s1作为当前边界点为例,按照图11所示的预设编码模板进行编码后,前邻域点标记f=后邻域点标记b=2,即前邻域点标记f和后邻域点标记b均指向点s。
129.完成前邻域点标记f和后邻域点标记b的初始化之后,就开始按照顺时针的编码顺序搜寻s1的邻域点。首先,搜寻s时,由于前邻域点标记f=后邻域点标记b,前邻域点标记f=2,因此,此时前邻域点标记f指向的点s不是所要提取的下一个相邻边界点,所以需要将前邻域点标记f的编码值2赋予后邻域点标记b,并按照顺时针的编码顺序,将下一个编码的邻域点的编码值3赋予前邻域点标记f,此时后邻域点标记b的编码值为2,指向点s,前邻域点标记的编码值为3,指向s1上方的邻域点。接着,搜寻s1上方的邻域点时,由于前邻域点标记f指向的是未清洁区域的点,因此,此时前邻域点标记f指向的s1上方的邻域点不是所要提取的下一个相邻边界点,所以需要将前邻域点标记f的编码值3赋予后邻域点标记b,并按照顺时针的编码顺序,将下一个编码的邻域点的编码值0赋予前邻域点标记f,此时后邻域点标记b的编码值为3,指向s1上方的邻域点,前邻域点标记f的编码值为0,指向s1右方的邻域点。接着,搜寻s1右方的邻域点时,由于前邻域点标记f指向的是已清洁区域的点,且后邻域点标记b指向的点为未清洁区域的点,满足该第二预设条件,因此,此时前邻域点标记f指向的s1右方的邻域点是所要提取的下一个相邻边界点,将其添加到边界点集合中。
130.还有一种情况是,前邻域点标记f指向的点为已清洁区域的点且后邻域点标记b指向的点为已经提取出来的边界点且前邻域点标记f和后邻域点标记b的编码值不相等时,也将前邻域点标记f指向的邻域点作为当前边界点的下一个相邻边界点。这样一来,避免了初始化前邻域点标记f和后邻域点标记b共同指向上一个相邻边界点时,误将上一个相邻边界点判定为所要提取的下一个相邻边界点的情况。
131.需要说明的是,上述为当前边界点搜寻下一个相邻边界点的过程是基于初始节点
为未清洁区域的点来实现的。在另一个实施例中,若初始起点为已清洁区域的点,则在为当前边界点搜寻下一个相邻边界点时,不仅要满足在前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为未清洁区域的点,或者,前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为已经提取出来的边界点且前邻域点标记和后邻域点标记的编码值不相等这个条件,该前邻域点标记指向的已清洁区域的点还需要满足不是初始起点的条件时,才将当前前邻域点标记指向的点确定为下一个相邻边界点。
132.本技术实施例中,对于四邻域的搜索来说,f和b应该被赋值五次。以上面的这个例子来说,就是f的值依次是2、3、0、1、2。b的值依次是2、2、3、0、1。之所以这样做,是为了保证这个搜索是一个有效的闭环。是一个有效的闭环之后,也就能够搜索到四邻域中的任何一个满足条件的邻域点了。每一步之后将f的值赋值给b是为了保证顺时针的方向(编码方向),同时也是为了检测是否是从未清洁区域到已清洁区域。
133.本技术实施例中,还可以按照八邻域进行提取,只需预先设置对应的八邻域编码模板,搜寻是搜寻八邻域点即可。上文介绍的边界提取方法是往右边提取的(顺时针搜索邻域点),也可以往左边提取(逆时针搜索邻域点)。
134.可选地,通过遍历所述当前边界点的邻域点,确定所述当前边界点的下一个相邻边界点。本技术可以通过遍历的方式来寻找当前边界点的下一个相邻边界点。
135.可选地,确定当前边界点的下一个相邻边界点还包括:
136.步骤1,将当前边界点作为原点,创建二维坐标系;
137.步骤2,在二维坐标系中确定从原点指向上一个相邻边界点的第一向量、第二向量以及第三向量;
138.步骤3,固定第一向量,将第二向量和第三向量绕原点旋转,其中,第二向量和第三向量每次旋转的角度相同,且第二向量先旋转一次之后,第二向量和第三向量再同时旋转;
139.步骤4,在第二向量指向的节点为已清洁区域的点、第三向量指向的点为未清洁区域的点且第二向量和第一向量不重合的情况下,将第二向量指向的点作为下一个相邻边界点。
140.本技术实施例中,搜寻当前边界点的下一个相邻边界点可以通过向量的方式来搜寻,即创建三个由当前边界点指向上一个相邻边界点的向量,即第一向量、第二向量以及第三向量,搜寻时,固定第一向量不动,用来区分上一个相邻边界点,旋转第二向量和第三向量,在第二向量指向的节点为已清洁区域的点、第三向量指向的点为未清洁区域的点且第二向量和第一向量不重合的情况下,将第二向量指向的点作为下一个相邻边界点,其中,第二向量和第三向量每次旋转的角度相同,且第二向量先旋转一次之后,第二向量和第三向量再同时旋转。在四邻域中,第二向量和第三向量每次旋转的角度为90度,在八邻域中,第二向量和第三向量每次旋转的角度为45度。
141.根据本技术实施例的又一方面,如图12所示,提供了一种边界提取装置,包括:
142.起点确定模块1201,用于确定边界提取的初始起点,其中,所述边界为地图上标记的已清洁区域和未清洁区域的分界线;
143.第一搜寻模块1203,用于确定与初始起点相邻的目标边界点;
144.第二搜寻模块1205,用于从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点,其中,所
提取的边界点为目标区域中的点,目标区域为已清洁区域和未清洁区域中的其中一个;
145.终止模块1207,用于在下一个相邻边界点满足第一预设条件的情况下终止边界提取。
146.需要说明的是,该实施例中的起点确定模块1201可以用于执行本技术实施例中的步骤s602,该实施例中的第一搜寻模块1203可以用于执行本技术实施例中的步骤s604,该实施例中的第二搜寻模块1205可以用于执行本技术实施例中的步骤s606,该实施例中的终止模块1207可以用于执行本技术实施例中的步骤s608。
147.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
148.可选地,该第二搜寻模块,具体用于:
149.在提取目标边界点的下一个相邻边界点时,将目标边界点作为当前边界点,将初始起点作为当前边界点的上一个相邻边界点;
150.以上一个相邻边界点为起点,搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点;
151.将本次搜寻使用的当前边界点更新为下一次搜寻使用的上一个相邻边界点,将本次搜寻得到的下一个相邻边界点更新为下一次搜寻使用的当前边界点,并按此方式继续逐一搜寻每个当前边界点的下一个相邻边界点。
152.可选地,该第二搜寻模块,还用于:
153.按照预设编码模板为当前边界点的邻域点编码,其中,编码之后得到的图形为携带有编码方向的闭合图形;
154.从上一个相邻边界点的编码开始,按照编码方向搜寻当前边界点的邻域点,直至搜寻到满足第二预设条件的邻域点作为提取出的下一个相邻边界点。
155.可选地,该第二搜寻模块,还用于:
156.创建前邻域点标记和后邻域点标记;
157.将上一个相邻边界点的编码值赋予前邻域点标记和后邻域点标记,以使前邻域点标记和后邻域点标记共同指向上一个相邻边界点;
158.在前邻域点标记指向的点为未清洁区域的点的情况下,或者,在前邻域点标记和后邻域点标记的编码值相等的情况下,将前邻域点标记的编码值赋予后邻域点标记,并按照编码顺序,将下一个编码的邻域点的编码值赋予前邻域点标记,以使后邻域点标记指向未修改前该前邻域点标记指向的点,而使前邻域点标记指向下一个编码的邻域点;
159.在前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为未清洁区域的点的情况下,或者,在前邻域点标记指向的点为已清洁区域的点且后邻域点标记指向的点为已经提取出来的边界点且前邻域点标记和后邻域点标记的编码值不相等的情况下,将前邻域点标记指向的点确定为下一个相邻边界点。
160.可选地,该起点确定模块,具体用于:
161.将地图上的目标分区中未清洁区域的所有节点导入目标队列,其中,目标分区为待进行边界提取的分区;
162.将地图上的目标分区中已清洁区域的所有节点导入目标数据表;
163.从目标队列中逐一提取节点,并搜寻该节点的邻域点;
164.在存在目标节点的邻域点中至少有一个邻域点为目标数据表中的节点的情况下,将目标节点确定为用于边界提取的初始起点。
165.可选地,该第一搜寻模块,具体用于:
166.随机选取一个初始起点的邻域点作为搜寻的起点;
167.从起点开始,按照预设时针方向搜寻初始起点的邻域点;
168.在搜寻到的当前邻域点为已清洁区域的点且上一个邻域点为未清洁区域的点的情况下,将当前邻域点确定为目标边界点。
169.可选地,该第二搜寻模块,还用于:
170.将当前边界点作为原点,创建二维坐标系;
171.在二维坐标系中确定从原点指向上一个相邻边界点的第一向量、第二向量以及第三向量;
172.固定第一向量,将第二向量和第三向量绕原点旋转,其中,第二向量和第三向量每次旋转的角度相同,且第二向量先旋转一次之后,第二向量和第三向量再同时旋转;
173.在第二向量指向的节点为已清洁区域的点、第三向量指向的点为未清洁区域的点且第二向量和第一向量不重合的情况下,将第二向量指向的点作为下一个相邻边界点。
174.根据本技术实施例的另一方面,本技术提供了一种用于清洁机器人的边界提取设备,如图13所示,包括存储器1301、处理器1303、通信接口1305及通信总线1307,存储器1301中存储有可在处理器1303上运行的计算机程序,存储器1301、处理器1303通过通信接口1305和通信总线1307进行通信,处理器1303执行计算机程序时实现上述方法的步骤。
175.上述电子设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
176.存储器可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
177.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
178.根据本技术实施例的又一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例的步骤。
179.可选地,在本技术实施例中,计算机可读介质被设置为存储用于所述处理器执行以下步骤的程序代码:
180.确定边界提取的初始起点,其中,边界为地图上标记的已清洁区域和未清洁区域
的分界线;
181.确定与初始起点相邻的目标边界点;
182.从目标边界点开始,利用当前边界点和当前边界点的上一个相邻边界点之间的位置关系,逐一确定每个当前边界点的下一个相邻边界点,其中,所提取的边界点为目标区域中的点,目标区域为已清洁区域和未清洁区域中的其中一个;
183.在下一个相邻边界点满足第一预设条件的情况下终止边界提取。
184.可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
185.本技术实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
186.可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dsp device,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
187.对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
188.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
189.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
190.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
191.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
192.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
193.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出
来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
194.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献