1.本技术涉及智能机器人技术领域,尤其涉及一种清洁机器人控制方法、清洁机器人及存储介质。
背景技术:2.在清洁机器人对待清扫面清扫时,若待清扫面上会有障碍物,清洁机器人会根据障碍物的位置及待清扫面的环境,进行路径规划。路径规划直接关系到清洁机器人对待清扫面各个区域的清扫顺序。若路径规划得不合理,会导致清洁机器人出现漏扫或重复扫的问题,从而影响了清洁机器人的清洁效率。
技术实现要素:3.鉴于以上内容,有必要提供一种清洁机器人控制方法、清洁机器人及存储介质,以生成更为合理的路径规划,提高清洁机器人的清洁效率。
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.图1为本技术实施例提供的一种清洁机器人的底部结构示意图。
38.图2为本技术实施例提供的一种清洁机器人的另一视角下的结构示意图。
39.图3为本技术实施例提供的一种清洁机器人控制方法的流程图。
40.图4为本技术实施例提供的一种清洁地图的初始图示意图。
41.图5为本技术实施例提供的一种二值化的清洁地图的示意图。
42.图6为本技术实施例提供的一种清洁方向的场景示意图。
43.图7为本技术实施例提供的一种基于采样线的分区的示意图。
44.图8为本技术实施例提供的另一种基于采样线的分区的示意图。
45.图9为本技术实施例提供的一种计算两个清洁子区域的距离的示意图。
46.图10为本技术实施例提供的一种清扫路径的示意图。
47.图11为本技术实施例提供的另一种清扫路径的示意图。
具体实施方式
48.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术实施例的描述中,“示例性”、“或者”、“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性”、“或者”、“例如”等词旨在以具体方式呈现相关概念。
49.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术中的技术领域的技术人员通常理解的含义相同。本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。应理解,本技术中除非另有说明,“/”表示或的意思。例如,a/b可以表示a或b。本技术中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b三种情况。“至少一个”是指一个或者多个。“多个”是指两个或多于两个。例如,a、b或c中的至少一个,可以表示:a,b,c,a和b,a和c,b和c,a、b和c七种情况。应当理解的是,本文的流程图中所
示步骤的顺序可以改变,某些也可以省略。
50.图1为本技术实施例提供的一种清洁机器人的底部结构示意图。图2为本技术实施例提供的一种清洁机器人的另一视角下的结构示意图。清洁机器人100用于对待清洁面进行清洁。
51.如图1所示,清洁机器人100可以包括机器主体10、滚刷组件101、壳体102、驱动轮模块103、边刷104、集尘组件105、拖地组件106、脚轮组件107及储液组件30。滚刷组件101装设于机器主体10上,并位于机器主体10朝向待清洁面的一侧,滚刷组件101用于清洁待清洁面。壳体102装设于机器主体10的外围,用于保护机器主体10。驱动轮模块103装设于机器主体10上,并可由机器主体10支撑,驱动轮模块103用于驱动清洁机器人100运动。边刷104装设于机器主体10上,并位于机器主体10朝向待清洁面的一侧。集尘组件105装设于机器主体10上,集尘组件105用于容纳清洁机器人100收集的位于待清洁面上的灰尘。脚轮组件107装设于机器主体10朝向待清洁面的一侧,脚轮组件107用于在待清洁面上平衡和引导清洁机器人100。储液组件30可拆卸地装设于机器主体10朝向待清洁面的一侧上,储液组件30用于收容清洁液。拖地组件106设于储液组件30朝向待清洁面的一侧,拖地组件106用于进一步对待清洁面进行清洁。
52.机器主体10可以是由诸如金属、塑料、泡沫、弹性体、陶瓷、复合材料、其组合等中的一种或多种的材料组成的刚性或半刚性结构。
53.在一些实施例中,机器主体10上可以设有感知系统、控制器等,以使清洁机器人100实现智能化。
54.感知系统用于感测相关信号和物理量,以确定清洁机器人100的位置信息和运动状态信息等。感知系统可包括摄像装置、激光测距装置(laser direct structuring,简称lds)、线激光模组、红外传感器,超声传感器以及各类传感装置等。其中,这些传感装置可根据产品需求而作不同的组合,例如:线激光模组,摄像装置和各类传感装置组合,激光测距装置和各类传感装置组合,摄像装置、激光测距装置以及各类传感装置组合。在这些实现方式中,摄像装置包括但不限于1个、2个、3个等。
55.控制器可以是可编程控制器,还可以是其他通用处理器、数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现成可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。例如单板或多板计算机,直接数字控制器(ddc),可编程逻辑控制器(plc)等。可以理解的,在其他示例中,控制器可以是任何计算设备,例如手持计算机,智能电话,平板电脑,膝上型计算机,台式计算机等其他计算设备。
56.控制系统还可以包括存储器,存储器用于存储指令和数据。其中,数据包括但不限于:地图数据、控制清洁机器人100操作时产生的临时数据、用于控制清洁机器人100的控制程序等等。例如清洁机器人100的位置数据、速度数据等。控制系统可以读取存储器中存储的指令执行相应的功能。存储器可以包括随机存取存储器(random access memory,简称ram)和非易失性存储器(non-volatile memory,简称nvm)。非易失性存储器可以包括硬盘驱动器(hard disk drive,简称hdd),固态硬盘(solid state drives,简称ssd),硅磁盘驱动器(silicon disk drive,简称sdd),只读存储器(read-only memory,简称rom),只读光
盘(compact disc read-only memory,简称cd-rom),磁带,软盘,光数据存储设备等。
57.在一些实施例中,滚刷组件101包括相对于机器主体10可旋转的一个或多个清洁滚布或清洁刷,以收集来自待清洁面上的灰尘和碎屑。滚刷组件101可以由与控制系统通信的一个或多个马达驱动。
58.在一些实施例中,壳体102可以是刚性或半刚性构件。壳体102以包括可拆卸连接的顶板、侧板及缓冲件,顶板盖设于机器主体10远离待清洁面的一侧,侧板设于机器主体10的外围,顶板可以固定到侧板和/或机器主体10上,以整体上保护清洁机器人100内的部件。缓冲件设于侧板背离机器主体10的一侧,用于对机器主体10提供缓冲和保护作用。顶板、侧板及缓冲件可以由诸如金属、塑料、泡沫、弹性体、陶瓷、复合材料及其组合等中的一种或多种的材料构成。其中顶板与侧板可以是一体成型的。
59.在一些实施例中,驱动轮模块103用于驱动清洁机器人100以沿着待清洁面(工作表面)向前运动、向后运动及旋转的运动操作等。驱动轮模块103包括左轮和右轮,驱动轮模块103可以被配置为由马达驱动以沿着待清洁面推动清洁机器人100,其中,马达与控制器通信以控制清洁机器人100在环境中的运动,例如向前运动、向后运动的操作等。
60.在一些实施例中,边刷104可以相对于机器主体10旋转,边刷104旋转接合碎屑,以使碎屑朝向和/或远离滚刷组件101边缘移动。
61.在一些实施例中,集尘组件105可以包括集尘盒以及集尘盒与储液组件30组合的一体装置,或者,集尘组件105还可以包括集尘袋,集尘盒与集尘袋组合的盒体等。
62.在一些实施例中,脚轮组件107可以为万向轮,脚轮组件107可以被配置为由马达驱动以控制清洁机器人100的旋转运动。
63.在一些实施例中,储液组件30收容的“清洁液”包括但不限于清水、清洁剂或者清水与清洁剂的组合。如图2所示,储液组件30与机器主体10之间可拆卸连接,以便于在更换清洁液时取出储液组件30。
64.在一些实施例中,拖地组件106包括拖垫、或拖垫与拖垫承载体的组合。储液组件30可以呈圆形或d型,拖垫承载体和所承载的拖垫可整体呈弓形或类似弓形的形状,不仅可与储液组件30相适配,也可充分利用储液组件30的空间,获得较大的拖地面。若储液组件30为矩形,则拖垫承载体和所承载的拖垫可整体呈矩形或长条状。拖垫承载体用于作为拖垫的承载结构,拖垫通过拖垫承载体而安装于储液组件30上。在某些实施例中,拖垫承载体大致呈扁形的板状结构,其包括用于固定拖垫的固定面和与所述固定面相对的安装面,安装面固定于储液组件30靠近待清洁面的一侧。
65.可以理解的,清洁机器人100还可以包括其他单元或组件,或者,仅包括上述部分单元或组件,或缺少上述部分单元或者组件。本实施例对此不作限定,仅以上述清洁机器人100为例进行说明。
66.清洁机器人100对待清扫面进行清扫时,会根据待清扫面上障碍物的位置和待清扫面的环境进行路径规划。路径规划直接关系到清洁机器人100对待清扫面的各个区域的清扫顺序。若路径规划得不合理,会导致清洁机器人出现漏扫或重复扫的问题,从而影响清洁机器人的清洁效率。为了生成更为合理的路径规划,本技术实施例提供了一种清洁机器人控制方法,该方法可以生成更为合理的路径规划,从而提高清洁机器人100的清洁效率。
67.本技术实施例提供的清洁机器人控制方法可以应用于清洁机器人100。示例性的,
本技术实施例中的清洁机器人100可以为扫地机器人、拖地机器人、擦窗机器人等自动清洁机器人。下面将结合附图对本技术实施例的实施方式进行详细描述。
68.图3是本技术实施例提供的一种清洁机器人控制方法的流程图。如图3所示,所述清洁机器人控制方法具体包括步骤201-207,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
69.如图3所示,所述方法包括:
70.201,生成清扫地图。
71.在本技术的一些实施例中,清洁地图是用于指示清扫环境中的特征。清洁地图包括与清扫环境中的特征相关联的数据,例如,不限于环境中的墙壁、脏区域、环境中的障碍物、环境中的对象、环境中的杂物、环境对应的地面类型(如瓷砖、地板、地毯等)、充电桩的位置或环境中可能导致清扫机器人自主移动的出现错误的区域等等。
72.在一些实施例中,可以基于清洁机器人100的感知系统获取清扫环境数据,并基于获取到的清扫环境数据,利用同步定位与地图创建(simultaneous localization and mapping,slam)算法建立清扫地图。所述感知系统可以包括激光装置、线激光装置和摄像装置、陀螺仪、全球定位系统(gps)传感器、运动传感器和/或其他传感器等一个或者多个的组合,可以用于生成清扫环境数据。在一些实施方式中,可以通过操作清洁机器人100进行移动来捕捉清扫环境的图像,并根据捕捉到的图像建立清扫地图。
73.在清扫地图中,有一些区域可以被清扫,有一些区域不可以被清扫,如障碍物所在区域。将清洁地图中清洁机器人100可以进行清扫的区域称为清洁区域。将清洁地图中清洁机器人100不可以进行清扫的区域称为障碍物区域。
74.202,确定清扫地图中的障碍物区域和清洁区域。
75.在本技术的一些实施例中,可以通过对清扫地图进行二值化处理,确定清扫地图中的障碍物区域和清洁区域。
76.由于清洁地图中存在的噪声,对清洁地图进行二值化处理后,二值化后的清洁地图中会出现一些零散的障碍物区域和清洁区域。图4为本技术实施例提供的清洁地图的初始图示意图。图5为本技术实施例提供的一种二值化的清洁地图的示意图。图5为对图4所示的清洁地图进行二值化处理后得到的清洁地图,如图5所示的清洁地图中包括障碍物区域和清洁区域,障碍物区域如图5中黑色区域所示,清洁区域如图5中白色区域所示。图5所示的清洁地图中出现了多个零散的障碍物区域和清洁区域。这些零散的区域很可能导致清洁机器人100在自动清扫过程中发生故障,如一些零散的清洁区域是不能清扫的障碍物区域,清洁机器人100无法完成该清洁区域的清扫,导致本次清洁失败。
77.为了避免零散的障碍物区域和清洁区域带来的影响,在本技术的一些实施例中,确定清洁地图中的障碍物区域和清洁区域可以包括:对清洁地图进行二值化处理,得到初始障碍物区域和初始清洁区域;对初始障碍物区域和初始清洁区域中不符合预设条件的区域执行优化处理操作,得到清洁地图中的障碍物区域和清洁区域。
78.优化处理用于对二值化后的清洁地图中不符合预设条件的初始障碍物区域和初始清洁区域进行优化,使得优化后的区域符合预设条件。所述优化处理包括,但不限于膨胀处理、腐蚀等形态学滤波处理、孔洞填充处理和小区域移除处理等。
79.在一些实施例中,其中预设条件包括区域面积小于预设面积值。
80.上述实施例,通过将二值化后确定的初始区域(初始障碍物区域和初始清洁区域)中不符合预设条件的区域筛选出来并执行优化处理,使得确定的障碍物区域和清洁区域都符合预设条件,提高了确定清洁地图中的障碍物区域和清洁区域的准确率,降低清洁地图噪声对清洁机器人100工作造成的干扰,从而提高清洁机器人100清洁的准确率。
81.203,基于所述障碍物区域,对所述清洁区域进行分区,得到多个清洁子区域。
82.由于障碍物区域是清洁机器人100无法清扫的区域,在清洁机器人100进行路径行走时,会对清洁机器人100的行走造成障碍。为了提高清洁机器人100的清洁效率,需要对障碍物区域周边的区域进行路径规划,确定清洁机器人100在清扫该障碍物区域周边的区域时的行走路径。在路径规划中需要基于障碍物区域,将障碍物区域周边的可以清扫的区域分成多个小块区域,然后再对分好的多个小块区域规划遍历,确定清洁机器人100在分好的多个小块区域中的行走路径,从而使清洁机器人100减少重复清扫,提高清扫效率。
83.在本技术的一些实施例中,所述基于所述障碍物区域,对所述清洁区域进行分区包括:按照第一清洁方向和第一间隔遍历所述清扫地图时,在所述清扫地图中确定多条采样线;按照第二清洁方向和第二间隔遍历所述清扫地图时,根据所述多条采样线中每条采样线被所述障碍物区域分割的次数,确定每条采样线的分割段数;基于每条采样线的分割段数,对所述清洁区域进行分区。
84.第一清洁方向指示清洁机器人100往复运动的方向(即清洁机器人100的清扫线的方向),第二清洁方向为垂直于所述第一清洁方向的方向。示例性的,若清洁机器人100往复运动的方向为从上到下和从下到上,可以将从上到下所指示的方向确定为第一清洁方向;或者可以将从下到上所指示的方向确定为第一清洁方向。图6为本技术实施例提供的一种清洁方向的场景示意图。如图6所示,将从上到下所指示的方向确定为第一清洁方向,将从左到右所指示的方向确定为第二清洁方向。在另一些实施例中,可以将从下到上所指示的方向确定为第一清洁方向,将从右到左所指示的方向确定为第二清洁方向。
85.在一些实施例中,采样线可以与清洁机器人100在清扫所述清洁地图所对应的区域时的工作路线相同,可以理解的是,由于清洁机器人100的工作方向是从上到下和从下到上。采样线可以与第一清洁方向平行,也可以不平行。第一间隔可以与清洁机器人100在清扫所述清洁地图所对应的区域时相邻工作线路之间的间隔相同,在其他实施例中也可以不同。例如,如图6所示,按照第一清洁方向和第一间隔遍历所述清扫地图时,在所述清扫地图中确定多条采样线,每条采样线的间隔相同,采样线的间隔为第一间隔。其中,第二间隔为预设值,第二间隔可以等于第一间隔,第二间隔可以是第一间隔的正整数倍。
86.图7为本技术实施例提供的一种基于采样线的分区的示意图。如图7所示,按照所述第二清洁方向和第二间隔遍历多条采样线时,遍历到a点之前,确定采样线1当前被所述障碍物区域分割的次数为0,采样线1的分割段数为1;遍历到a点时,确定采样线1当前被所述障碍物区域分割的次数为1且该次分割未完成,采样线1的分割段数为1;遍历到a点到b点之间的点时,确定采样线1当前被所述障碍物区域分割的次数为1且该次分割未完成,采样线1的分割段数为1;遍历到b点及b点之后的点时,确定采样线1当前被所述障碍物区域分割的次数为1且该次分割完成,采样线1的分割段数为2。
87.在一些实施例中,其中基于每条采样线的分割段数,对所述清洁区域进行分区包括:基于每条采样线的分割段数,确定被障碍物分割的采样线;根据确定的被障碍物分割的
采样线,将被障碍物区域分割后且位于障碍物区域的同一邻侧的多条采样线划分为同一清洁子区域;将没有被障碍物区域分割且位于障碍物区域的同一邻侧的多条采样线分为同一清洁子区域。通过障碍区域分割采样线的情况,将障碍物区域周围的清扫区域分成多个子区域,便于后续清洁机器人100更好的规划路径。
88.具体地,在相邻的两条采样线的分割段数相同时,则确定这相邻的两条采样线没有被障碍物分割。若相邻的两条采样线的分割段数不相同,采样线的分割段数发生了变化,则确定这相邻的两条采样线中分割段数多的采样线被障碍物分割了。将所述两条采样线中分割段数多的采样线确定为第一采样线后,按照所述第二清洁方向继续遍历,确定所述第一采样线后的采样线中是否有一采样线的分割段数小于所述第一采样线的分割段数;若出现一采样线的分割段数小于所述第一采样线的分割段数,确定该采样线未被障碍物区域分割,将该采样线确定为第二采样线;根据所述第一采样线、所述第二采样线和所述第一采样线与所述第二采样线之间的障碍物区域,对所述清扫地图中的清洁区域进行分区。
89.在本技术的一些实施例中,可以将所述第一采样线左侧多条采样线对应的区域作为第一清洁子区域,将所述第二采样线右侧多条采样线对应的区域作为第二清洁子区域;将所述障碍物区域上侧多条采样线对应的区域作为第三清洁子区域,将所述障碍物区域下侧多条采样线对应的区域作为第四清洁子区域,得到四块清洁子区域。
90.图8为本技术实施例提供的另一种基于采样线的分区的示意图。例如,如图8所示,根据第一清洁方向和第一间隔遍历所述清扫地图,生成的等间距的多条采样线。如图8所示,采样线穿过空白区域时,采样线的段数保持不变;当采样线完全穿过障碍物区域时,采样线被障碍物分割成上下两段,采样线的段数发生变化,段数加1。按照所述第二清洁方向和第二间隔遍历所述清扫地图时,根据所述多条采样线中每条采样线当前被所述障碍物区域分割的次数,确定所述采样线的分割段数。确定相邻的两条采样线的分割段数不相同(从第二清洁方向遍历到采样线1中的b点或b点之后的点时,确定采样线0和采样线1的分割段数不相同),将所述两条采样线中按照所述第二清洁方向后遍历的采样线(采样线1)确定为第一采样线;按照所述第二清洁方向遍历采样线1后的采样线,确定采样线2的分割段数小于采样线1的分割段数,将采样线2确定为第二采样线。根据采样线1、采样线2和采样线1与采样线2之间的障碍物区域,对清扫地图中的清洁区域进行分区,如图8所示划分成a、b、c、d四个区域。
91.204,基于多个清洁子区域,生成初始区域遍历顺序。
92.在本技术的一些实施例中,初始区域遍历序列的生成方式可以是:(1)随机产生区域遍历顺序;(2)选取清洁机器人100的当前位置作为起点,往平行于第二清洁方向生成连续的区域遍历顺序;(3)随机选取平行于第二清洁方向的区域遍历顺序等。
93.205,基于初始区域遍历顺序及表示遍历代价的目标函数,迭代更新区域遍历顺序,并计算更新后的区域遍历顺序的遍历代价,将遍历代价最小的区域遍历顺序确定为目标遍历顺序。
94.可以理解的是,遍历代价越小,清洁机器人100在执行清洁过程中的能量损耗也越小。
95.在本技术的一些实施例中,所述基于初始区域遍历顺序及表示遍历代价的目标函数,迭代更新区域遍历顺序,并计算更新后的区域遍历顺序的遍历代价,具体可以包括:计
算更新后的区域遍历顺序中遍历顺序相邻的清洁子区域之间的路径代价;根据更新后的区域遍历顺序中遍历顺序相邻的清洁子区域之间的路径代价计算第一路径代价;计算更新后的区域遍历顺序中最后一个清洁子区域和预设安置区域之间的路径代价,得到第二路径代价;根据所述第一路径代价和所述第二路径代价,确定更新后的区域遍历顺序的遍历代价。
96.在一些实施例中,表示遍历代价的目标函数可以如下所示:
[0097][0098]
其中,s代表遍历一区域遍历顺序中所有清洁子区域后的路径代价总和;o(i)表示第i个遍历的清洁子区域,o(i+1)表示第i+1个遍历的清洁子区域,其中,第i个遍历的清洁子区域和第i+1个遍历的清洁子区域的遍历顺序相邻;c
o(i)o(i+1)
表示计算第i个遍历的清洁子区域和第i+1个遍历的清洁子区域之间的路径代价,n表示的是划分的子区域的总数,表示计算区域遍历顺序中所有遍历顺序相邻的清洁子区域之间的路径代价,可以将区域遍历顺序中所有遍历顺序相邻的清洁子区域之间的路径代价之和确定为第一路径代价;c
end,o(n)
表示区域遍历顺序中最后一个遍历的清洁子区域和预设安置区域之间的路径代价,k为权重,根据区域遍历顺序中最后一个遍历的清洁子区域和预设安置区域之间的路径代价和权重的乘积,确定为第二路径代价。
[0099]
预设安置区域可以为一个集合,表示预设的某一或者某一些区域。例如,预设安置区域可以是为清洁机器人100在清扫结束后停留的区域、清洁机器人100充电装置所在的区域、下一个清扫区域附近,也可以是清洁地图外的区域、或者可以是用户指定的某一区域。基于初始区域遍历顺序,采用迭代计算方法迭代更新区域遍历顺序,并基于上述计算更新后的区域遍历顺序的遍历代价的方法能够计算出每次更新后的区域遍历顺序的遍历代价,在预设条件达到时,即可终止迭代。然后从计算后的遍历代价值中找出最小的值,并找出最小的遍历代价对应的区域遍历顺序作为目标遍历顺序。通过该实施例,可以使清洁机器人100的当前清扫结束点在预设安置区域附近,从而减少清洁机器人100的重复清扫,及减少清洁机器人100的行走路径长度。例如,若当前a清洁区域扫完后,下一个清洁区域为b清洁区域时,将在a清洁区域中的一个与b清洁区域相邻的清洁子区域设置为预设安置区域。采用本方法规划清扫路径,清洁机器人100能够停止在b清洁区域的附近,在下次清扫作业进行时,直接从b清洁区域附近开始清扫,从而减少重复清扫,及减少行走路径长度。
[0100]
在一些实施例中,预设条件包括,但不限于,迭代次数,迭代误差达到预设误差值等等。其中迭代计算方法包括但不限于:模拟退火法等等。
[0101]
在本技术的一些实施例中,若更新后的区域遍历顺序中遍历顺序相邻的两个清洁子区域在所述清洁地图中的位置不相邻,根据第一代价算法计算所述两个清洁子区域之间的路径代价,得到所述第一路径代价。其中第一代价算法可以为弗洛伊德算法。通过弗洛伊德算法,计算跨域其他区域的路径和作为两个不相邻的两个子区域之间路径长度,即作为两个不相邻的清洁子区域之间的路径代价。
[0102]
在本技术的一些实施例中,在计算更新后的区域遍历顺序中遍历顺序相邻的清洁子区域之间的路径代价时,若更新后的区域遍历顺序中遍历顺序相邻的两个清洁子区域在所述清洁地图中的位置相邻时,确定相邻的两个清洁子区域中每个清洁子区域对应的区域
中心点;确定相邻的两个清洁子区域的公共边界线的中点;分别计算相邻的两个清洁子区域中每个所述区域中心点到所述中点的距离,根据相邻的两个清洁子区域中每个所述区域中心点到所述中点的距离确定相邻的清洁子区域之间的路径代价。相对于现有技术,若直接计算相邻的两个清洁子区域的区域中心点间的距离,则可能会遇到障碍物,但清洁机器人100清扫时会绕开障碍物,这样清洁机器人100行走的路径代价与计算的路径代价相差较大。若计算相邻的两个清洁子区域的区域中心点间的最短距离,则对每个两个子区域而言,都需要在清洁地图中搜寻它们之间的最短距离,从而增加了计算复杂度。而本案中在计算相邻的清洁子区域之间的路径代价时,将相邻的两个清洁子区域中每个所述区域中心点到所述中点的距离确定为该两个清洁子区域之间的路径代价,可以减少遇到障碍物的可能性,计算更准确方便。
[0103]
在一些实施例中,其中根据相邻的两个清洁子区域中每个所述区域中心点到所述中点的距离确定相邻的清洁子区域之间的路径代价时,可以将两个清洁子区域中每个清洁子区域的区域中心点到所述中点的距离相加,并将得到的和确定为两个清洁子区域之间的路径代价。
[0104]
可以理解的是,所述两个清洁子区域的公共边界线的中点为分割所述两个清洁子区域的采样线的一部分。
[0105]
图9为本技术实施例提供的一种计算两个清洁子区域的距离的示意图。例如,如图9所示,若清洁子区域(a区域)和清洁子区域(b区域)在一区域遍历顺序中的遍历顺序相邻(清洁机器人100从a区域清洁到b区域),其中a区域的区域中心点为a1,b区域的区域中心点为b1,a区域和b区域的公共边界线的中点为e1,a区域和b区域之间的路径代价为a1到e1与e1到b1的路径长度之和;若清洁子区域(d区域)和清洁子区域(c区域)在一区域遍历顺序中的遍历顺序相邻(清洁机器人100从d区域清洁到c区域),其中d区域的区域中心点为d1,c区域的区域中心点为c1,d区域和c区域的公共边界线的中点为g1,d区域和c区域之间的路径代价为d1到g1与g1到c1的路径长度之和。
[0106]
在一些实施例中,其中在根据相邻的两个清洁子区域中每个所述区域中心点到所述中点的距离确定相邻的清洁子区域之间的路径代价时,还可以结合两个清洁子区域之间的连续清扫概率来计算相邻的清洁子区域之间的路径代价。即根据相邻的两个清洁子区域中每个所述区域中心点到所述中点的距离及相邻的两个清洁子区域之间的连续清扫概率,得到相邻的清洁子区域之间的路径代价。例如,相邻的两个清洁子区域中每个所述区域中心点到所述中点的距离分别为第一距离、第二距离,可以根据第一距离、第二距离及相邻的两个清洁子区域之间的连续清扫概率,得到第一路径代价。通过结合相邻的两个清洁子区域在清洁距离上的代价(如第一距离和第二距离的和)和该两个清洁子区域之间的连续清扫概率计算相邻的清洁子区域之间的路径代价,使得确定的相邻的清洁子区域之间的路径代价更准确,从而使得清洁机器人100在路径优化上能更贴近用户需求,更智能化。
[0107]
连续清扫概率可以用于表示在两个清洁子区域中前一清洁子区域和后一清洁子区域清扫顺序相邻的可能性。连续清扫概率越高表示前一清洁子区域和后一清洁子区域清扫顺序相邻的可能性越大;连续清扫概率越低表示前一清洁子区域和后一清洁子区域清扫顺序相邻的可能性越小。在清洁距离上的代价相同的情况下,连续清扫概率越高,计算出的路径代价越小;连续清扫概率越低,计算出的路径代价越大。
[0108]
这样用户在需要优先清扫几个区域时,可以利用本实施例方法,提高这几个区域之间的连续清扫概率,从而实现对路径进行优化,可以优先清扫要清扫的区域,更能够考虑用户需求。若用户需要优先清扫多个子区域,可以通过将所述多个子区域标记为同一片区域,从而提高所述多个子区域之间的连续清扫概率。例如,前一清洁子区域和后一清洁子区域被标记为同一片区域(如同一个房间、同一个过道或同一个阳台等)时,所述前一清洁子区域和所述后一清洁子区域之间的连续清扫概率越高。若用户不希望两个子区域的清扫顺序相邻,可以通过将所述两个子区域标记为难以跨越的区域,从而降低所述两个子区域之间的连续清扫概率。例如,前一清洁子区域和后一清洁子区域被标记为难以跨越的区域(如不同的房间、不同的过道或不同的阳台等)时,所述前一清洁子区域和所述后一清洁子区域之间的连续清扫概率越低。
[0109]
206,基于所述目标遍历顺序和所述多个清洁子区域的位置信息,确定清扫路径。
[0110]
在一些实施例中,若在目标遍历顺序中的所述清洁子区域不存在下一个清洁子区域,根据所述清洁子区域对应的上一个清洁子区域的位置信息,确定从所述清洁子区域指向所述上一个清洁子区域的清扫路径,并将所述从所述清洁子区域指向所述上一个清洁子区域的清扫路径确定为所述清洁子区域的清扫路径。在所述清洁子区域不存在下一个清洁子区域时,指示该子区域可能为清洁机器人100该次清扫的最后一块子区域,下次清扫作业的起点可能位于该子区域,生成从该子区域远离其上一个清洁子区域的清扫覆盖路径,可以减少对已清扫区域(清洁子区域)造成再次污染的可能,并减少机器多走重复的路径。
[0111]
具体地,若在目标遍历顺序中的所述清洁子区域不存在下一个清洁子区域,且所述位置关系为在清洁地图中所述清洁子区域在所述上一个清洁子区域的左侧,所述清洁子区域的清扫路径为从右到左;若在目标遍历顺序中的所述清洁子区域不存在下一个清洁子区域,且所述位置关系为在清洁地图中所述清洁子区域在所述上一个清洁子区域的右侧,所述清洁子区域的清扫路径为从左到右。在所述清洁子区域不存在下一个清洁子区域时,指示该子区域可能为清洁机器人100该次清扫的最后一块子区域,下次清扫作业的起点可能位于该子区域,生成从该子区域远离其上一个清洁子区域的清扫覆盖路径,可以减少对已清扫区域(清洁子区域)造成再次污染的可能,并减少机器多走重复的路径。
[0112]
在一些实施例中,若在目标遍历顺序中的一清洁子区域与其对应的下一个清洁子区域在所述清洁地图上的位置相邻,根据所述下一个清洁子区域的位置信息,确定从所述清洁子区域指向所述下一个清洁子区域的清扫路径,并将所述从所述清洁子区域指向所述下一个清洁子区域的清扫路径确定为所述清洁子区域的清扫路径。在清洁地图上相邻的两个清洁子区域同时在遍历顺序上相邻,即至少三个子区域是相邻的,则沿着第二清洁方向,依次从左到右,从上到下,对清洁子区域依次清扫,沿着第二清洁方向生成对至少三个子区域的覆盖路径,这样在路径上就能确定出连贯的覆盖路径,从而让机器清扫覆盖率较高,并减少清洁人的重复清扫。
[0113]
在一些实施例中,具体地,若在目标遍历顺序中的所述清洁子区域与所述下一个清洁子区域在所述清洁地图上的位置相邻且所述清洁子区域在所述下一个清洁子区域的左侧,所述清洁子区域的清扫路径为从左到右;若所述位置关系为在目标遍历顺序中的所述清洁子区域与所述下一个清洁子区域在所述清洁地图上的位置相邻且所述清洁子区域在所述下一个清洁子区域的右侧,所述清洁子区域的清扫路径为从右到左。在清洁地图上
相邻的两个清洁子区域同时在遍历顺序上相邻,即至少三个子区域是相邻的,则沿着第二清洁方向,依次从左到右,从上到下,对清洁子区域依次清扫,沿着第二清洁方向生成对至少三个子区域的覆盖路径,这样在路径上就能确定出连贯的覆盖路径,从而让机器清扫覆盖率较高,并减少清洁人的重复清扫。
[0114]
在一些实施例中,若在目标遍历顺序中的一清洁子区域与其对应的下一个清洁子区域在所述清洁地图上的位置不相邻,根据所述清洁子区域对应的上一个清洁子区域的位置信息,确定从所述清洁子区域指向所述上一个清洁子区域的清扫路径,并将所述从所述清洁子区域指向所述上一个清洁子区域的清扫路径确定为所述清洁子区域的清扫路径。在所述清洁子区域与所述下一个清洁子区域在所述清洁地图上的位置不相邻时,指示该子区域可能为在角落位置或者被障碍物隔开了,生成从该子区域指向其上一个清洁子区域的清扫覆盖路径,可以为了减少边缘的漏扫,减少机器多走重复的路径。
[0115]
具体地,若所述位置关系为在目标遍历顺序中的所述清洁子区域与所述下一个清洁子区域在所述清洁地图上的位置不相邻,根据在目标遍历顺序中的所述清洁子区域与所述清洁子区域对应的上一个清洁子区域之间的位置关系,确定所述清洁子区域的清扫路径。具体地,若在目标遍历顺序中的所述清洁子区域与所述下一个清洁子区域在所述清洁地图上的位置不相邻,且在目标遍历顺序中的所述清洁子区域与所述清洁子区域对应的上一个清洁子区域之间的位置关系为所述清洁子区域在所述上一个清洁子区域的右侧,所述清洁子区域的清扫路径为从右到左;若在目标遍历顺序中的所述清洁子区域与所述下一个清洁子区域在所述清洁地图上的位置不相邻,且在目标遍历顺序中的所述清洁子区域与所述清洁子区域对应的上一个清洁子区域之间的位置关系为在目标遍历顺序中的所述清洁子区域在所述上一个清洁子区域的左侧,所述清洁子区域的清扫路径为从左到右。可以理解的是,清洁子区域的清扫路径为指向上一个清洁子区域的清扫路径,上一个清洁子区域在左侧,清洁子区域的清扫路径即为从右到左;上一个清洁子区域在右侧,清洁子区域的清扫路径即为从左到右。在所述清洁子区域与所述下一个清洁子区域在所述清洁地图上的位置不相邻时,指示该子区域可能为在角落位置或者被障碍物隔开了,生成从该子区域指向其上一个清洁子区域的清扫覆盖路径,可以为了减少边缘的漏扫,减少机器多走重复的路径。
[0116]
图10为本技术实施例提供的一种清扫路径的示意图。例如,目标遍历顺序为:区域1-》区域2-》区域3-》区域4,如图10所示,当前清洁子区域(区域1)在区域1对应的下一个清洁子区域(区域2)的左侧且在所述清洁地图上的位置相邻,确定区域1的清扫路径为从左到右;当前清洁子区域(区域2)在区域2对应的下一个清洁子区域(区域3)的左侧且在所述清洁地图上的位置相邻,确定区域2的清扫路径为从左到右;当前清洁子区域(区域3)在区域3对应的下一个清洁子区域(区域4)的右侧且在所述清洁地图上的位置相邻,确定区域3的清扫路径为从右到左;若当前清洁子区域(区域4)不存在下一个清洁子区域,区域4在区域4对应的上一个清洁子区域(区域3)的左侧,确定区域4的清扫路径为从右到左。在区域1、区域2和区域3存在下一个清洁子区域且其各自与对应的下一个清洁子区域位置相邻时,生成指向其对应的下一个清洁子区域的清扫覆盖路径,可以减少对已清扫区域造成再次污染的可能。在区域4不存在下一个清洁子区域时,指示区域4可能为清洁机器人100该次清扫的最后一块子区域,下次清扫作业的起点可能位于区域4,生成从区域4远离其上一个清洁子区域
(区域3)的清扫覆盖路径,可以减少对已清扫区域(清洁子区域)造成再次污染的可能,并减少机器多走重复的路径。
[0117]
图11为本技术实施例提供的另一种清扫路径的示意图。又如,目标遍历顺序为:区域5-》区域6-》区域7,如图11所示,由于区域6与区域7不相邻,所以实际的目标遍历顺序为:区域5-》区域6-》区域5(经过)-》区域7,当前清洁子区域(区域5)在区域5对应的下一个清洁子区域(区域6)的左侧且在所述清洁地图上的位置相邻,确定区域5的清扫路径为从左到右;当前清洁子区域(区域6)与区域6对应的下一个清洁子区域(区域7)在所述清洁地图上的位置不相邻,区域6在区域6对应的上一个清洁子区域(区域5)的右侧,由于目标遍历顺序中区域6需经由区域5到达区域7,可确定方向为从区域6指向区域5,因此,区域6的清扫路径为从右到左;区域7不存在下一个清洁子区域,区域7在区域7对应的上一个经过的清洁子区域(区域5)的右侧,确定区域7的清扫路径为从左到右,图11中未示出。在区域5存在下一个清洁子区域(区域6)且区域5和区域6位置相邻时,生成从区域5指向区域6的清扫覆盖路径,可以减少对已清扫区域造成再次污染的可能。在区域6存在下一个清洁子区域(区域7)且区域6和区域7位置不相邻时,指示区域6可能为在角落位置或者被障碍物隔开了,生成从区域6指向其上一个清洁子区域(区域5)的清扫覆盖路径,可以减少边缘的漏扫,并减少机器多走重复的路径。在区域7不存在下一个清洁子区域时,指示区域7可能为清洁机器人100该次清扫的最后一块子区域,下次清扫作业的起点可能位于该子区域,生成从区域7远离其上一个经过的清洁子区域(区域5)的清扫覆盖路径,可以减少对已清扫区域造成再次污染的可能,并减少机器多走重复的路径。
[0118]
207,根据所述目标遍历顺序和所述清扫路径,依次清洁所述多个清洁子区域。
[0119]
按照目标遍历顺序中每个清洁子区域的清洁顺序,依次清洁所述多个清洁子区域。其中,每个清洁子区域按照其确定的清扫路径进行清洁。
[0120]
如图10所示,在确定清洁子区域1的清扫路径之后,可确定清洁子区域1的清扫起点与清扫终点;相应地,在确定清洁子区域2的清扫路径之后,可确定所述清洁子区域2的清扫起点与清扫终点;根据清洁子区域1的清扫终点与清洁子区域2的清扫起点,可以确定清洁机器人100从清洁子区域1到清洁子区域2的路线。可以理解地是,如若是两个不相邻的清洁子区域,仍旧可根据上一清洁子区域的清扫终点与当前清洁子区域的清扫起点确定清洁机器人100的行进路线。在实际应用中,可依据最短距离、障碍物位置、最少跨区域等原则优化所述清洁机器人100在不相邻子区域之间的行进路线。
[0121]
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在清洁机器人100上运行时,使得清洁机器人100执行上述相关方法步骤实现上述实施例中的清洁机器人控制方法。
[0122]
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的清洁机器人控制方法。
[0123]
另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的清洁机器人控制方法。
[0124]
其中,本实施例提供的清洁机器人、计算机存储介质、计算机程序产品或芯片均用
于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0125]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0126]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0127]
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0128]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0129]
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0130]
最后应说明的是,以上实施例仅用以说明本技术的技术方案而非限制,尽管参照较佳实施例对本技术进行了详细说明,本领域的普通技术人员应当理解,可以对本技术的技术方案进行修改或等同替换,而不脱离本技术技术方案的精神和范围。