


摘? 要:家用掃地機器人能夠憑借一定的人工智能實現路徑規劃,自主地完成房間所有區域的地面清掃工作。清潔效率是家用掃地機器人性能的重要指標,盡量用最少的時間完成全屋地面的清潔工作。為了提高清潔效率,對路徑規劃有一定性能要求。文章實現了一種有效提升清潔效率的方法,其由三種方法共同組成,分別為虛擬分區遞歸弓字型方法、小區域困住檢測及脫困方法、導航快速沿邊繞障方法。
關鍵詞:掃地機器人;路徑規劃;清潔效率
中圖分類號: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定位與建圖。