家用扫地机器人清扫效率提升方法研究

2024-01-27 12:37李明
现代信息科技 2023年24期
关键词:路径规划

摘  要:家用扫地机器人能够凭借一定的人工智能实现路径规划,自主地完成房间所有区域的地面清扫工作。清洁效率是家用扫地机器人性能的重要指标,尽量用最少的时间完成全屋地面的清洁工作。为了提高清洁效率,对路径规划有一定性能要求。文章实现了一种有效提升清洁效率的方法,其由三种方法共同组成,分别为虚拟分区递归弓字型方法、小区域困住检测及脱困方法、导航快速沿边绕障方法。

关键词:扫地机器人;路径规划;清洁效率

中图分类号:TP242  文献标识码:A  文章编号:2096-4706(2023)24-0157-05

Research on Methods for Improving Cleaning Efficiency of Household Sweeping Robot

LI Ming

(Amicro Semiconductor Co., Ltd., Zhuhai  519075, China)

Abstract: Household sweeping robots can use certain artificial intelligence to achieve path planning and independently complete floor cleaning work in all areas of the room. Cleaning efficiency is an important indicator of the performance of household sweeping robots, and it is recommended to complete the cleaning work of the entire house floor in the shortest possible time. In order to improve cleaning efficiency, there are certain performance requirements for path planning. This paper implements an effective method to improve cleaning efficiency, which consists of three methods: virtual partition recursive bow shaped method, small area trapping detection and escape method, and navigation fast edge avoidance method.

Keywords: sweeping robot; path planning; cleaning efficiency

0  引  言

清掃机器人能够自主地完成地面的清扫工作,目前已经得到非常广泛的应用[1]。我国家用扫地机市场正处于快速增长阶段,2016—2020年,中国扫地机器人零售量由274万台增长至654万台,扫地机器人的市场规模由38亿元增长至94亿元。我国扫地机器人产业发展较晚,但在产品需求上呈现快速增长态势[2]。

清洁效率是家用扫地机器人性能的重要指标,当前主流扫地机器人清洁效率为0.7平方米/分钟左右[3]。这对扫地机器人的路径规划有一定的挑战,路径规划由三个行为组成,分别为:弓字型清扫行走,用于清扫空旷区域;沿边清扫行为,用于清扫房间的边边角角;导航行为,从地图的一个坐标点走到另一个坐标点的方法。

为了提高清洁效率,对路径规划的三种行为都有一定的性能要求:

1)弓字型清扫行为,不能重复清扫,不能过多穿插[4]。而这主要取决于清扫顺序的策略,实际家庭户型千差万别,先清扫那里后清扫那里的清扫顺序对清洁效率影响很大。清扫顺序策略选择不好,导致扫地机器人,穿插,重复扫,严重降低清洁效率。

2)沿边清扫行为,用于清扫房间的边边角角。家庭环境路况复杂,如窄道,一桌六椅下面复杂的凳子腿,扫地机器人沿边进去后,被困在小区域里无法脱离的概率极高。而这种情况,会导致扫地机器人清洁效率低下,且容易报错提前结束清扫,出现漏扫。

3)导航行为要流畅,碰到障碍物时,能够快速绕障,节省时间提高清洁效率。

针对上述三种行为的性能要求,本文分别提出了一种有效优化方法,分别为虚拟区域递归选择未清扫区域的弓字型方法;沿边被困检测与脱困方法;导航高效绕障方法。能够有效提高扫地机器人的清洁效率。

1  虚拟分区递归的弓字型清扫

清扫规划弓字型流程:启动弓字型,弓字型结束,搜索未清扫区域,选择未清扫区域,导航到目标未清扫区域,再次启动弓字型,循环往复,直到整个地图搜索不到未清扫区域。

1.1  新区域选择时遇到的困境

一次搜索未清扫区域,搜索出多个结果,该选择那个未清扫区域作为最优,一直是业界的一个难题。通用的做法是选择最近的,有直线距离最近和导航距离最近两种策略。但无论采用哪种策略都存在一定的问题。如直线最近策略没有考虑中间是否有障碍物的情况,可能导航距离很远。导航距离最近,但没有考虑清扫穿插的问题,每次工字型结束,选择导航距离最近会使清扫规划无规律,同一个环境相同地方启动清扫,每次清扫,清扫路径都不相同,清扫穿插多,清扫规划无规律。

1.2  解决方法

1.2.1  虚拟分区的建立

每次工字型清扫过程中,记录坐标的最大、最小值。用此最大、最小值设置为一个对应于此次工字型清扫的虚拟分区virtual_partition。

搜索到的未清扫区域起始点,位于那个虚拟分区内,就存储到那个虚拟区域中。将所有搜索到未清扫区域,都存储到对应的虚拟墙区域中。

虚拟分区数据结构max_x, max_y,min_x,min_y, index和一个未清扫区域链表noclean_list七个数据组成,max_x, max_y,min_x,min_y表示此区域在栅格地图的边界,index代表id号(id号越大代表虚拟分区virtual_partition生成的时间越靠后)。

用队列virtual_partition_queue来存储虚拟分区,只在队列头增加、删除虚拟区域。

1.2.2  实现逻辑

一次弓字型结束,搜索出未清扫区域时,进行注册新的虚拟区域。如图1所示。

所有搜索到未清扫区域存储在noclean_area_list中。

遍历noclean_area_list中的未清扫区域noclean_area:

如果其已经在虚拟分区队列virtual_partition_queue某个virtual_partition的noclean_list中,则跳过。

如果其在此次弓字型产生的虚分区virtual_partition内,则将此virtual_partition插入virtual_partition_queue队列头中,并将此未扫区域noclean_area插入到此虚拟分区virtual_partition的noclean_list中。

否则遍历virtual_partition_queue中所有virtual_partition,从前往后,判断此noclean_area是否位于一个virtual_partition区域内,将此noclean_area注册到这个virtual_partition的中noclean_list。只注册到第一个找到的virtual_partition中。

1.2.3  未清扫区域的选择

虚拟区域队列virtual_partition_queue从前往后遍历,查看virtual_partition其noclean_list是否有noclean_area_list中的未清掃区域noclean_area。如果有,则第一个找的virtual_partition为最优分区。

最优分区的noclean_list里,如果只有一个noclean_area在noclean_area_list中,则此noclean_area为此次选择的未清扫区域;如果有多个noclean_area在noclean_area_list中,则看那个noclean_area离当前点的导航路径最近,选导航路径最近的noclean_area为此次选择的未清扫区域。

当一个虚拟分区virtual_partition,没有搜索到新的未清扫区域noclean_area时,则此虚拟分区从队列中virtual_partition_queue删除。

2  沿边被困检测与脱困

在沿边清扫行为行走过程中,扫地机器人容易被困在一些复杂区域,如椅子桌子下面。

一个好的沿边行走必须具备以下两个特点:

1)机器人一直贴着障碍物行走,也就是保证贴边。

2)无论障碍物是规则的一面墙,还是不规则的复杂障碍物,都能快速地走过。

关于特点2),扫地机器人遇到障碍物时,要根据障碍物的方位,选择一个比较大的角度旋转以避开这个障碍物,使扫地机器人的边挨着这个障碍物。

但在一些复杂环境,如四周都是障碍物,只有一个比扫地机器人机身略宽的出口时,沿边采用特点2)的转角方式,则很难走出来,导致一直被困住这个小区域。典型的场景,如家里的桌子、椅子下面。

一种沿边脱困方法,其检测出扫地机器人沿边被困住时,则强制沿边遇到障碍物时一直都旋转比较小的角度,直到扫地机器人脱离这个区域。

沿边加此脱困方法后,既可以快速地贴着障碍物行走,又不会被困在小的复杂区域里。

2.1  沿边困住检测

建立一个先进先出的buffer,用来记录沿边经过的栅格地图坐标。并每隔一段时间,检测buffer中有多少个新的栅格点加入。如果新加入的栅格坐标点,比较少,则认为扫地机器人被困在一个小区域。如果新加入的栅格坐标点,比较多,则认为扫第机器人已经脱困。

2.1.1  buffer更新

buffer中实时记录了沿边最新经过的栅格坐标点,如果buffer大小设为80,则记录的是最新的80个沿边坐标点。buffer越大能够判断被困的区域越大。

用point_num变量,记录了buffer中记录过的坐标点的个数。实时获取机器当前栅格坐标(x,y),判断其是否已经在buffer中,如果不在,则将其放在buffer首位置,其他数据顺序后移,末尾数据被移除,point_num变量加1。

2.1.2  沿边角度计算

启动沿边后,扫地机器人每个tick周期(如10 ms)累加一次陀螺仪在这个tick周期内旋转的角度。则这个累加值记录了扫地机器人沿边转过的总角度。

2.1.3  困住判断

每隔一段时间,根据buffer中新加入坐标点的个数及沿边转过的总角度,来判断样机是否被困住。

每隔一个时间间隔,检测一次,我们设置20 s检测一次。

20 s内,新加入的坐标点小于5则认为被困住,否则为没有被困。

20 s内,扫地机器人转过的角度大于360°或小于-360°,且新加入的坐标点小于8时,认为被困住,否则为没有被困。

2.2  脱困设计

当机器人被困住时,沿边无论障碍物位于扫地机器人的什么方向,每次碰撞都必须以小角度避开障碍物。直到机器人脱困。

3  导航绕障

机器人导航,是指机器人从地图的一个坐标点走到另一个坐标点的方法,一般是先从地图上搜索一条路径,然后根据这条路径行走,直到到达目标点。然而由于地图精度不够高,地图障碍物标记不够准确,以及导航机器人跟随路径不够准确等因素影响。机器人导航过程中经常会碰撞到障碍物。如何快速越过这些障碍物一直都是机器人导航过程中的一个难点。本方法利用沿边清扫行为实现导航快速越障。

沿边清扫行为即器人沿着障碍物的边行走。分为左沿边和右沿边,左沿边机器人沿着障碍物的边做顺时针运动,右沿边机器人沿着障碍物的边做逆时针运动。

3.1  沿边方向计算

选择沿边方向对于导航越障很重要。选对了方向,导航可以快速越障;选错了方向机器人反而与正确的路径反向运动,越走离目标点越远。

3.1.1  选取碰撞点

世界坐标系为(XOY),机器人坐标系为(X'O'Y')。机器人的中心点为机器人坐标系的原点。

假如机器人左碰撞坐标,在机器人坐标系中坐标为(-2,2)。假如机器人右碰撞坐标,在机器人坐标系中坐标为(2,2)。假如机器人前碰撞坐标,在机器人坐标系中坐标为(0,2)。假设机器人在世界坐标系的坐标为(a,b),角度为θ。

机器坐标转换为世界坐標的公式为:

x = x' · cos(-θ) + y' · sin(-θ) + a

y = y' · cos(-θ) - x' · sin(-θ) + b

3.1.2  预测沿边路径

根据地图障碍物的形状,预测出沿边所走出的路径。如图2所示。

3.1.3  选取沿边方向

根据预测的左右沿边路径,与导航路径作对比,来选取沿边方向:

1)选取机器人前面三个拐点:栅格地图的导航路径用拐点来描述。路径在栅格地图里是多条线条连接而成的,机器人导航过程中只需要朝路径中的下个拐点前进即可。对所有拐点进行编号,起始点编号为0,后面的拐点编号依次累加,则终点始终编号最大。

设置一个距离门限值dist。以机器人当前坐标为中心,距离小于dist的所有拐点中选择编号最大的拐点为机器人前面的目标拐点。机器人将朝着这个拐点前进。上一个目标拐点设为已经走过的拐点。如果dist内只有一个目标拐点,则此目标拐点设为走过的拐点,它的下一个拐点设为目标拐点。如果dist内一个拐点也没有,则选取已经走过拐点的下一个拐点作为目标拐点。以目标拐点作为第一个点,选取它及其他后面的两个拐点,作为机器人前面的三个拐点。如果其已经是目标点,或后面两个存在目标点,则到目标点为止,能选几个选几个。

2)沿边方向选取:计算沿边预测路径上的每个点到导航路径机器人前面三个拐点的距离。然后再计算出这三个距离的和。然后再将沿边预测路径上的每个点计算出的距离和相加得到总的距离。这个总的距离表示沿边路径与导航路径的差别。值越小表示差别越小。因此沿边方向选择这个值小的预测沿边路径方向。

3.2  越障结束判断

前面已经讲述了机器人前面三个拐点的选取方法。我们基于这三个拐点来判断越障是否结束。

从三个拐点中选取最佳目标点。设置一个距离门限值dist,例如设置6个栅格距离。计算每个拐点到当前点的距离,从中找出距离最接近门限值dist的拐点作为最佳拐点。

计算当前点到最佳拐点之间是否有障碍物。计算机器人当前点到最佳拐点的直接距离上是否地图上有标记障碍物。如果地图没有标记障碍物则认为越障成功,退出沿边,切回导航。如果地图有标记障碍物,则继续沿边。

4  实验结果

实验机器采用公司量产的视觉SLAM扫地机器人。

测试环境采用IEC标准测试房。测试区域主要由房体内尺寸4米× 5米× 2.5米的房体拼装而成。房体测试地板由松木板拼接组成。房体顶部由方块型天花板装饰面成。房体计量部分:房体整机尺寸、(长×宽×高)房体内部灯光照度、色温部分。内部模拟家具分布摆放食品柜、桌子、椅子、沙发、开隔柜、落地灯、电源线、障碍、加热器基板地、地毯、网格、压线条等实际测试场地模拟物品[5]。

4.1  优化前

位置一启动清扫,清扫完回座。测试一次,覆盖率89.4,清扫时间32.23分钟,如图3所示。位置二,启动清扫,清扫完回原点。测试一次,覆盖率87.76,清扫时间35分钟,如图4所示。位置三,启动清扫,清扫完回座。测试一次,覆盖率87.95,清扫时间31.16分钟,如图5所示。

三次测试,覆盖率87到89,清扫时间在31到35分。平均清洁效率:20平方米/ 33.21 = 0.60平方米/分钟。如表1所示。

4.2  优化后

位置一,启动清扫,清扫完回座。测试一次,覆盖率96,清扫时间26.52分钟,如图6所示。位置二,启动清扫,清扫完回原点。测试一次,覆盖率82.65,清扫时间24.46分钟,如图7所示。位置三,启动清扫,清扫完回座。测试二次。覆盖率85.59,清扫时间26.53分钟,如图8所示。

三次测试,覆盖率82到96之间,清扫时间24到26分。平均清洁效率:20平方米/ 25.84 = 0.77平方米/分钟。如表2所示。

4.3  结果分析

优化前,平均清洁效率为0.60平方米/分钟,平均覆盖率为88.37%。优化后,平均清洁效率为0.77平方米/分钟,平均覆盖率为88.08%。因此,在覆盖率基本不变的情况下,清洁效率有显著提升。

5  结  论

本文针对家用扫地机器人路径规划三个行为的性能要求,分别提出了各自的优化方法,以提高清洁效率。通过IEC覆盖率标准测试房对比测试,证明当前的优化方法在基本不牺牲覆盖率的情况下,对清洁效率有显著提升。

参考文献:

[1] 张超.智能清扫机器人设计及其路径规划的研究 [D].哈尔滨:哈尔滨工业大学,2012.

[2] 2022年中国扫地机器人行业全景图谱 [R].北京:前瞻产业研究院,2021.

[3] 贺承宇.清扫机器人的路径规划与避障算法研究 [D].黑龙江省:哈尔滨理工大学,2021.

[4] 王磊磊.自动清扫车视觉SLAM与路径规格 [D].贵阳:贵州大学,2023.

[5] INTERNATIONAL STANDARD:IEC/ASTM 62885-7 [EB/OL].[2023-04-11].https://www.doc88.com/p-18273699628563.html.

作者简介:李明(1983—),男,汉族,山西大同人,中级职称,硕士,研究方向:扫地机器人、清扫规划及SLAM定位与建图。

猜你喜欢
路径规划
绿茵舞者
公铁联程运输和售票模式的研究和应用
基于数学运算的机器鱼比赛进攻策略
清扫机器人的新型田埂式路径规划方法
自适应的智能搬运路径规划算法
基于B样条曲线的无人车路径规划算法
基于改进的Dijkstra算法AGV路径规划研究
基于多算法结合的机器人路径规划算法
基于Android 的地图位置服务系统的设计与实现
企业物资二次配送路径规划研究