本發(fā)明涉及電子信息及智能控制技術領域,具體涉及一種柵格地圖構建中的地圖平移控制方法。
背景技術:
智能機器人作為世界經濟與產業(yè)增長方式轉變過程中的關鍵因素,正在進入新的發(fā)展階段。智能機器人是具有感知、決策、執(zhí)行的制造裝備、設備工具、服務消費品,用于生產過程與環(huán)境中的制造裝備智能機器稱為工業(yè)機器人,用于個人或家政服務的消費品智能機器稱為家用服務機器人,用于特殊環(huán)境下作業(yè)與維護的設備工具智能機器稱為特種服務機器人。
以家用的掃地機器人為例,其又稱自動打掃機、智能吸塵、機器人吸塵器等,是智能家用電器的一種,能憑借一定的人工智能,自動在房間內完成地板清理工作。
掃地機器人需要按照一定的路徑規(guī)劃來覆蓋整個房間區(qū)域,完成遍歷的目的。路徑規(guī)劃,有隨機遍歷和規(guī)劃遍歷兩種。
隨機遍歷,是指機器人根據一定的移動算法,如三角形、五邊形軌跡嘗試性的覆蓋作業(yè)區(qū),如果遇到障礙,則執(zhí)行對應的轉向函數。這種方法是一種以時間換空間的低成本策略,如不計時間可以達到100%覆蓋率。隨機覆蓋法不用定位、也沒有環(huán)境地圖,也無法對路徑進行規(guī)劃。當前iRobot的大多數掃地機器人采用的就是這種方法。
規(guī)劃遍歷,是指機器人行走過程中建立起環(huán)境地圖,實時分析地圖并完成新的路徑規(guī)劃,將房間全部進行清掃。這種方法效率高,在保證覆蓋率的前提下,能夠以最快的速度完成清掃。
其中規(guī)劃清掃需要解決三個問題:
1、建立地圖,并能夠定位(確定機器人的位置)。
2、導航,從啟始位置導航到目標位置,且在導航過程中能夠實現(xiàn)自動避開障礙物。
3遍歷整個房間的方法。
關于問題1有多種解決方法,柵格法,人工勢場法,模板模型法,人工智能法等。
人工勢場法,將機器人在周圍環(huán)境中的運動設計成在一種勢場中的運動,勢能源有兩種:斥力極和引力極。不希望進入的區(qū)域和障礙物屬于斥力極,建議通過的區(qū)域為引力極。引力和斥力的合力作為機器人的加速力,來控制機器人的運動方向和計算機器人的位置。但此方法通常存在局部極小點和計算量過大的問題。
模板模型法,是基于先驗知識和先前的環(huán)境地圖遍歷機器人讓得到的環(huán)境信息來匹配事先定義的模板。它要求事先定義環(huán)境模型和模板的記憶,因此對于變化著的環(huán)境就不好處理了,比如在遍歷機器人的工作過程中突然出現(xiàn)一個障礙等。
人工智能法,包括模糊控制算法,神經網絡路徑規(guī)劃,遺傳算法等。這些算法計算量大,且大都還在實驗室研究階段,實際運用的較少。
柵格法,使用大小相同的柵格劃分機器人的工作空間,并用柵格數組來表示環(huán)境,每個柵格是兩種狀態(tài)之一,或者在自由空間中,或者在障礙物空間中。這種方法的特點是簡單,易于實現(xiàn),從而為路徑規(guī)劃的實現(xiàn)帶來了很多方便,具有表示不規(guī)則障礙物的能力;其缺點是表示效率不高,存在著時空開銷與精度之間的矛盾。柵格劃分大了,環(huán)境信息存儲量就小了,規(guī)劃時間短,分辨率下降,在密集環(huán)境下發(fā)現(xiàn)路徑的能力減弱;柵格劃分小了,環(huán)境分辨率高,在密集環(huán)境下發(fā)現(xiàn)路徑的能力強,但環(huán)境的存儲量大。所以柵格的大小直接影響著控制算法的性能。
更重要的是,機器人以遍歷的方式創(chuàng)建柵格地圖是,機器人的啟動點一般位于柵格地圖的中心點,柵格地圖大小固定,假如樣機一直朝著一個方向清掃,則地圖很容易越界。使得地圖的一個方向上出現(xiàn)越界,而這個方向的反方向上的地圖卻空著沒有使用。
技術實現(xiàn)要素:
本發(fā)明旨在提供一種方法,根據實際使用地圖越界情況,實時平移整個柵格地圖,使得實際使用的地圖永遠位于整個柵格地圖的中心位置,直到實際使用的地圖長或寬正真達到了整個柵格地圖的極限。本發(fā)明的目的由以下技術方案實現(xiàn):
一種柵格地圖構建中的地圖平移控制方法,其特征在于,每次控制機器人運動并構建地圖時,執(zhí)行如下流程:
a、檢測是否需要平移整個柵格地圖,具體為:當柵格地圖的x軸或y軸的一個方向上實際使用的柵格已經達到整個柵格地圖的邊界,而其反方向還存在剩余柵格未使用的情況下,進入步驟b,否則跳出該子流程;
b、根據上次的x軸、y軸的偏移柵格數,與本次的x軸、y軸的偏移柵格數的差值,確定本次實際要平移的柵格數;
c、根據本次實際要平移的柵格數平移整個柵格地圖。
作為具體的技術方案,當啟動平移功能時,開辟一小段內存作為緩沖,存儲已經越界的柵格地圖數據,當整個柵格地圖平移后,再將緩沖的柵格數據寫入柵格地圖。
本發(fā)明提供的柵格地圖構建中的地圖平移控制方法,能夠根據實際使用地圖越界情況,實時平移整個柵格地圖,使得實際使用的地圖永遠位于整個柵格地圖的中心位置,直到實際使用的地圖長或寬正真達到了整個柵格地圖的極限,基于該地圖平移控制方法可以有效提升地圖創(chuàng)建的效率。
附圖說明
圖1為本發(fā)明實施例提供的地圖平移控制方法所基于的智能機器人的模塊構成圖。
圖2為本發(fā)明實施例提供的柵格地圖創(chuàng)建過程的主流程圖。
圖3為本發(fā)明實施例提供的柵格地圖創(chuàng)建過程中障礙物柵格坐標計算方法的流程圖。
圖4為本發(fā)明實施例提供的柵格地圖創(chuàng)建過程中啟動地圖平移的流程圖。
圖5為本發(fā)明實施例提供的柵格地圖創(chuàng)建過程中確定地圖平移柵格數的流程圖。
圖6為本發(fā)明實施例提供的柵格地圖創(chuàng)建過程中實現(xiàn)地圖平移操作的流程圖。
圖7為本發(fā)明實施例提供的柵格地圖創(chuàng)建過程中實現(xiàn)地圖平移過程中緩沖操作的數據讀取流程圖。
圖8為本發(fā)明實施例提供的柵格地圖創(chuàng)建過程中實現(xiàn)地圖平移過程中緩沖操作的數據寫入流程圖。
具體實施方式
下面結合附圖對本發(fā)明的具體實施方式作進一步說明:
如圖1所示,本實施例提供的柵格地圖構建中的地圖平移控制方法,其基于的智能機器人包括行動機體1、主控模塊4、傳感器集合5、電源模塊及區(qū)域操作組件。其中,行動機體1包括機殼、行動輪2、3。傳感器集合5包括碰撞檢測傳感器、障礙物檢測傳感器、距離信息傳感器、角度信息傳感器,均與主控模塊電連接。
具體地,碰撞檢測傳感器用于智能機器人前面碰到障礙物時,做出當前與障礙物發(fā)生了碰撞的判斷并通知主控模塊4。防跌路檢測傳感器用于當智能機器人下方為懸空狀態(tài)時,做出當前處于危險狀態(tài)的判斷并通知主控模塊4。障礙物檢測傳感器用于檢測機器人周圍是否出現(xiàn)障礙物并通知主控模塊4,包括防跌落檢測傳感器及周邊檢測傳感器,周邊檢測傳感器由前,前左,前右,左,右,五個紅外測距傳感器組成。距離信息傳感器為輪子編碼器,角度信息傳感器為陀螺儀。區(qū)域操作組件是指對機器人所處區(qū)域進行某些功能操作的組件,可以為清潔組件、攝像組件、加濕組件、除濕組件、滅蟲組件中的一個或多個,本實施例以清潔組件為例進行說明,即本實施例所述的機器人為掃地機器人。
通過距離信息傳感器所獲取的距離信息、角度信息傳感器所獲得的角度信息、碰撞檢測傳感器獲取的碰撞信息及障礙物檢測傳感器獲取的障礙信息構建柵格地圖,并記錄正常通過點、障礙物點、沿邊點。智能機器人邊行動邊更新地圖,只要是機器人走過的地方都會把狀態(tài)更新到柵格地圖上。可以理解的是,柵格越小精度越高,但受內存及運算速度的限制,我們選擇柵格的邊長為智能機器人直徑的三分之一的正方形。
結合圖2所示,本實施例提供的智能機器人的柵格地圖創(chuàng)建方法,包括:
(1)控制機器人運動;
(2)檢測機器人當前位置的行動是否為沿邊行為及當前位置是否檢測到障礙物,如果當前位置的行動為沿邊行為但未檢測到障礙物則進入步驟(3a),如果當前位置的行動為沿邊行為且同時檢測到障礙物則進入步驟(3b),如果當前位置的行動不為沿邊行為但檢測到障礙物則進入步驟(3c),如果當前位置的行動不為沿邊行為且未檢測到障礙物則進入步驟(3d);
(3a)將地圖上當前位置的柵格標記為沿邊行為點并返回步驟(1);
(3b)將地圖上當前位置的柵格標記為沿邊行為點,同時計算障礙物所處的柵格坐標并將柵格地圖上障礙物對應的柵格標記為障礙物點,然后返回步驟(1);
(3c)將地圖上當前位置的柵格標記為正常通過點,同時計算障礙物所處的柵格坐標并將柵格地圖上障礙物對應的柵格標記為障礙物點,然后返回步驟(1);
(3d)將地圖上當前位置的柵格標記為正常通過點并返回步驟(1)。
圖2的流程圖中為了更好表現(xiàn),只表現(xiàn)了上述方法中的部分內容,且將沿邊行為判斷和障礙物判斷先后表現(xiàn),實際上,這兩個判斷是部分先后的。
建立的柵格地圖保存于主控模塊4中并由主控模塊4進行管理。柵格地圖的表現(xiàn)形式可以為:黑色柵格表示智能機器人未標記此柵格,綠色柵格代表智能機器人正常通過點,紅色柵格代表障礙物檢測傳感器感測到的障礙物點,藍色柵格代表碰撞檢測傳感器檢測到的發(fā)生碰撞的障礙物點,白色柵格代表此點進行了沿邊行為點。
其中每個柵格用一個8bit的數來表示。其高四位記錄區(qū)域信息,表示此柵格位于哪個區(qū)域內,因此最多支持16個區(qū)域。其低四位用來表示地圖的實際信息:第0位表示智能機器人是否到達過此柵格,為0表示未到達過,為1表示到達過;第1位表示此柵格是否存在障礙物,為0表示不存在,為1表示存在;第2位,表示機器人沿邊時,為1表示經過此柵格,為0表示未經過;第3位,預留。
如圖3所示,本實施例提供的智能機器人的柵格地圖創(chuàng)建方法中,障礙物所處柵格坐標的計算方法具體包括:
A、計算障礙物距離機器人中心點的距離;
B、計算障礙物與機器人中心的實際角度;
C、調用三角函數,計算障礙物點相對于機器人中心點的坐標;
D、將計算出的坐標加上機器人中心點坐標,即為障礙物坐標。
其中,碰撞檢測傳感器檢測到的障礙物點及障礙物檢測傳感器感測到的障礙物點在地圖中是區(qū)別對待(區(qū)別標注的);如上文所述,紅色柵格代表障礙物檢測傳感器感測到的障礙物點,藍色柵格代表碰撞檢測傳感器檢測到的發(fā)生碰撞的障礙物點,當然也可以統(tǒng)一標注(例如都標注成紅色)。不過,不論哪種傳感器感測到的障礙物,都可以按以下公式計算所述距離和角度:
障礙物離掃地機中心點的距離=傳感器探測的距離+機器人的半徑;
障礙物與掃地機中心的角度=掃地機正前方的角度+傳感器的位置偏離機器人正前方的角度差。
作為問題所在,在智能機器人的柵格地圖創(chuàng)建過程中,機器人的啟動點一般位于柵格地圖的中心點。柵格地圖大小固定,假如樣機一直朝著一個方向清掃,則地圖很容易越界。使得地圖的一個方向上出現(xiàn)越界,而這個方向的反方向上的地圖卻空著沒有使用。
下面介紹一種方法,根據實際使用地圖越界情況,實時平移整個柵格地圖,使得實際使用的地圖永遠位于整個柵格地圖的中心位置,直到實際使用的地圖長或寬正真達到了整個柵格地圖的極限。
每次控制機器人運動以更新柵格地圖時,執(zhí)行以下流程:
a、檢測是否需要平移整個柵格地圖,具體為:當柵格地圖的x軸或y軸的一個方向上實際使用的柵格已經達到整個柵格地圖的邊界,而其反方向還存在剩余柵格未使用的情況下,進入步驟b啟動平移整個柵格地圖,否則跳出該子流程;
b、根據上次的x軸、y軸的偏移柵格數,與本次的x軸、y軸的偏移柵格數的差值,確定本次實際要平移的柵格數;
c、根據本次實際要平移的柵格數平移整個柵格地圖。
如圖4所示,其中x-min,x-max為x軸方向上已使用柵格的最小與最大值;y-min,y-max為y軸方向上已使用柵格的最小與最大值;x-offset,y-offset記錄當前柵格地圖x軸,y軸方向上實際柵格偏移。
地圖平移子流程中步驟a的具體方法包括:
a1、分別更新地圖x軸、y軸、已使用柵格的最大最小值x-min、x-max、y-min、y-max;
a2、判斷是否(x-max+x-offset)接近邊界,但(x-min+x-offset)沒有接近邊界,是則x-offset減一并進入步驟a4,否則進入步驟a3;
a3、判斷是否(x-min+x-offset)接近邊界,但(x-max+x-offset)沒有接近邊界,是則x-offset加一并進入步驟a4,否則直接進入步驟a4;
a4、判斷是否(y-max+y-offset)接近邊界,但(y-min+y-offset)沒有接近邊界,是則y-offset減一并進入步驟a6,否則進入步驟a5;
a5、判斷是否(y-min+y-offset)接近邊界,但(y-max+y-offset)沒有接近邊界,是則y-offset加一并進入步驟a6,否則直接進入步驟a6;
a6、判斷x-offset或y-offset是否發(fā)生了變化是則啟動平移整個柵格地圖,否則跳出所述子流程。
如圖5所示,其中x-offset、y-offset記錄當前柵格地圖x軸、y軸方向上實際柵格偏移;old-x-offset、old-y-offset記錄上次柵格地圖平移時x軸、y軸方向上柵格偏移;abs表示取這個數的絕對值;actul-x-offset、actul-y-offset為本次實際要平移的柵格數。
地圖平移子流程中步驟b的具體方法包括:
b1、設定actul-x-offset=x-offset-old-x-offset,actul-y-offset=y(tǒng)-offset-old-y-offset;
b2、判斷是否actul-x-offset<0,是則確定整個柵格地圖往x軸負方向移動abs(actul-x-offset)個柵格并進入步驟b4,否則進入步驟b3;
b3、判斷是否actul-x-offset>0,是則確定整個柵格地圖往x軸正方向移動abs(actul-x-offset)個柵格并進入步驟b4,否則直接進入步驟b4;
b4、判斷是否actul-y-offset<0;是則確定整個柵格地圖往y軸負方向移動abs(actul-y-offset)個柵格并進入步驟b6,否則進入步驟b5;
b5、判斷是否actul-y-offset>0;整個柵格地圖,往y軸正方向移動abs(actul-y-offset)個柵格并進入步驟b6,否則直接進入步驟b6;
b6、用當前柵格地圖x軸、y軸方向上實際柵格偏移x-offset、y-offset更新上次柵格地圖平移時x軸、y軸方向上的柵格偏移old-x-offset、old-y-offset錄。
如圖6所示,其中global-map為柵格地圖數組;Height、Width代表global-map柵格數組的高度和寬度;start-x代表第一行有數據不為零的行號,也就是從這一行開始后的數據需要進行平移;count記錄一行數據有多少個柵格為零(沒有使用的柵格)。如果整行柵格數據都為零,則平移工作結束。
本實施例以x軸往負方向平移為例進行說明,也就是actul-x-offset小于零時。在平移整個柵格地圖時,沒有使用過的柵格(數據為零)是不需要進行操作的。
地圖平移子流程中步驟c的具體方法包括:
c1、開始時x=0、y=0、start-x=0;
c2、判斷是否x<Height,是則進入步驟c3,否則結束;
c3、設定count=0進入步驟c4;
c4、判斷是否y<Width,是則進入步驟c5,否則x++并返回步驟c2;
c5、判斷是否start-x?。?,是則進入步驟c51,否則進入步驟c6;
c51、判斷是否global-map[x][y]?。?;是則設定global-map[x+actul-x-offset][y]=global-map[x][y],global-map[x][y]=0并進入步驟步驟c8,否則count++并進入步驟步驟c8;
c6、判斷是否global-map[x][y]?。?,是則進入步驟c7,否則進入步驟c8;
c7、設定start-x=x,global-map[x+actul-x-offset][y]=global-map[x][y],global-map[x][y]=0,進入步驟c8;
c8、判斷是否count==Width,是則結束,否則y++并返回步驟c4。
當actul-x-offset大于零時,在上面的流程圖中,只需要把x的初始值設為Height-1,每次循環(huán)后,執(zhí)行x--,直到x<0結束。
y軸的平移原理與x軸相同。
此外,當啟動平移功能時,并不適合馬上平移整個柵格地圖,最好能等待樣機停止時,來進行平移。因為平移整個柵格地圖,非常耗CPU資源,會影響掃地機運動的平滑性。
為了防止在這個等待的過程中,柵格地圖越界,必須開辟一小段內存作為緩沖,存儲已經越界的柵格地圖數據。當整個柵格地圖平移后,再將緩沖的柵格數據,寫入柵格地圖。因此在讀取或寫入柵格地圖數據時,必須考慮是否存在緩沖的情況。
如圖7所示,本實施例提供相應的緩沖方法中讀取數據的流程如下:
S1、設定x-index=x+x-offset,y-index=y(tǒng)+y-offset;
S2、判斷是否(x-index,y-index)在柵格地圖內且地圖平移功能并沒有啟動,是則進入步驟S3,否則進入步驟S2a;
S2a、從緩沖中讀取并進入步驟S2b;
S2b、判斷是否讀取成功,是則進入步驟S4,否則進入步驟S2c;
S2c、判斷是否(x-index,y-index)在柵格地圖內,是則進入步驟S2d,否則返回零并結束;
S2d、直接讀取對應的柵格地圖數據并進入步驟S4;
S3、直接讀取對應的柵格地圖數據并進入步驟S4;
S4、返回讀取的值并結束。
如圖8所示,本實施例提供相應的緩沖方法中寫入數據的流程如下:
T1、讀取(x,y)值并進入步驟T2;
T2、判斷寫入值與讀取值是否相等,是則結束,否則設定x-index=x+x-offset,y-index=y(tǒng)+y-offset并進入步驟T3;
T3、判斷是否(x-index,y-index)在柵格地圖內且地圖平移功能并沒有啟動,是則直接將數據寫入對應的柵格地圖數據并結束,否則將數據寫入緩沖中并結束。
其中,x、y為機器人當前所處柵格坐標;x-index,y-index為對應柵格地圖的實際坐標。
以上實施例僅為充分公開而非限制本發(fā)明,凡基于本發(fā)明的創(chuàng)作主旨、未經創(chuàng)造性勞動的等效技術特征的替換,應當視為本申請揭露的范圍。