本發(fā)明涉及定位和導(dǎo)航領(lǐng)域,尤其涉及一種定位方法和裝置。
背景技術(shù):
當前,vslam(visualsimultaneouslocalizationandmapping,視覺即時定位與地圖構(gòu)建)已經(jīng)廣泛應(yīng)用在機器人導(dǎo)航中,其可以幫助機器人完成定位和導(dǎo)航任務(wù),但是由于vslam是基于圖像處理的,容易受到光照和視角變換的影響。比如,vslam在白天構(gòu)建了某一場景某一時刻的地圖,那么在晚上對于同樣的場景,由于光照發(fā)生了變化,此時采集的vslam地圖無法在白天構(gòu)建的地圖中找到匹配圖像,因此無法實現(xiàn)定位和導(dǎo)航;另外,vslam在采集圖像時受到傳感器的視角影響,構(gòu)建地圖的視角是有指向性的,如果定位時視角與保存視角存在較大的差別,同樣無法完成定位和導(dǎo)航。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例提供一種定位方法和裝置,主要用于解決vslam受視角和光照影響無法定位和導(dǎo)航的問題。
為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
第一方面,提供了一種定位方法,包括:
創(chuàng)建多個視覺即時定位與地圖構(gòu)建vslam進程,并分別為各個vslam進程加載對應(yīng)的地圖數(shù)據(jù)庫;
調(diào)用各個vslam進程基于實時圖像進行定位;
根據(jù)各個定位成功的vslam進程所得到的定位結(jié)果進行定位。
第二方面,提供了一種定位裝置,包括:
創(chuàng)建單元,用于創(chuàng)建多個視覺即時定位與地圖構(gòu)建vslam進程,并分別為各個vslam進程加載對應(yīng)的地圖數(shù)據(jù)庫;
定位單元,用于調(diào)用各個vslam進程基于實時圖像進行定位;
所述定位單元,還用于根據(jù)各個定位成功的vslam進程所得到的定位結(jié)果進行定位。
第三方面,提供了一種計算機存儲介質(zhì),用于儲存為定位裝置所用的計算機軟件指令,其包含執(zhí)行第一方面所述的定位方法所設(shè)計的程序代碼。
第四方面,提供了一種計算機程序產(chǎn)品,可直接加載到計算機的內(nèi)部存儲器中,并含有軟件代碼,所述計算機程序經(jīng)由計算機載入并執(zhí)行后能夠?qū)崿F(xiàn)第一方面所述的定位方法。
第五方面,提供了一種電子設(shè)備,包括:存儲器、通信接口和處理器,所述存儲器用于存儲計算機執(zhí)行代碼,所述處理器用于執(zhí)行所述計算機執(zhí)行代碼控制執(zhí)行第一方面所述定位方法,所述通信接口用于所述定位設(shè)備與外部設(shè)備的數(shù)據(jù)傳輸。。
本發(fā)明實施例提供的定位方法和裝置,通過對應(yīng)不同拍攝時間段或拍攝視角的地圖數(shù)據(jù)庫與實時圖像進行匹配,然后根據(jù)匹配結(jié)果進行定位,解決了vslam受視角和光照影響無法定位和導(dǎo)航的問題。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的視角的示意圖;
圖2為本發(fā)明實施例提供的定位的示意圖;
圖3為本發(fā)明實施例提供的一種定位方法的流程示意圖;
圖4為本發(fā)明實施例提供的一種定位方法的流程示意圖;
圖5為本發(fā)明實施例提供的一種定位裝置的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例提供的另一種定位裝置的結(jié)構(gòu)示意圖;
圖7為本發(fā)明實施例提供的又一種定位裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例提供的定位方法和裝置可以用于機器人、自動駕駛汽車等裝置在室內(nèi)外的視覺定位和導(dǎo)航。定位裝置可以位于云端作為定位服務(wù)器,或者位于現(xiàn)場作為終端(例如導(dǎo)盲頭盔)。
參照圖1中所示,本發(fā)明實施例所述的視角是指攝像頭光軸方向與前進方向的夾角。參照圖2中所示,本發(fā)明實施例所述的定位是指確定在直角坐標系x-y平面中的位置(x,y)。
本發(fā)明實施例提供了一種定位方法,應(yīng)用于上述定位裝置,參照圖3中所示,包括:
s101、創(chuàng)建多個vslam進程,并分別為各個vslam進程加載對應(yīng)的地圖數(shù)據(jù)庫。
地圖數(shù)據(jù)庫為針對同一路線事先采集的不同時段、不同視角的地圖數(shù)據(jù)庫。具體的,當起始地、目的地和行進路線確定之后,在某一時段,拍攝車輛保持視覺傳感器模塊的視角不變,從起始地沿行進路線向目的地出發(fā),行進過程中間隔一定時間拍攝一次圖像同時記錄位置坐標(相對位置或絕對位置),到達目的地后即形成了該行進路線的一組地圖數(shù)據(jù)庫,其中,每個地圖數(shù)據(jù)庫均包括圖像、拍攝圖像時的視角、時間和位置坐標。
為了平衡計算量和匹配準確度,在拍攝時間間隔上可以如表1中所示以一小時為間隔分別采集0-23時的地圖數(shù)據(jù)庫,這樣可以得到不同光照條件下的地圖數(shù)據(jù)庫;另外,在視角上可以如表1中所示以45度為間隔采集360度視角的地圖數(shù)據(jù)庫。進一步優(yōu)選的,可以直接采用360度全景相機進行拍攝來得到如表2中所示的地圖數(shù)據(jù)庫,每個地圖數(shù)據(jù)庫包含360度全景圖像,這樣既節(jié)省拍攝工作量,同時也節(jié)省定位時的計算量。
表1
表2
所創(chuàng)建的vslam進程數(shù)目可以小于等于地圖數(shù)據(jù)庫的組數(shù)。例如,如果有16組地圖數(shù)據(jù)庫,可以創(chuàng)建1-16個進程來進行上述匹配運算,每個進程取一組地圖數(shù)據(jù)庫與實時圖像進行定位,當一個進程定位完成后從剩余的幾組地圖數(shù)據(jù)庫中取一組再與實時圖像進行定位,直至所有n組地圖數(shù)據(jù)庫加載完成。
各個vslam進程可以采用相同的定位規(guī)則,針對不同的地圖數(shù)據(jù)庫進行定位;或者可以采用不同定位規(guī)則,針對同一地圖數(shù)據(jù)庫進行定位。
在一些實施方式中,在初始化時,可以創(chuàng)建多個vslam進程,當一個vslam進程定位失敗時,則關(guān)閉該vslam進程,以節(jié)省計算資源;當所創(chuàng)建的各個vslam進程均關(guān)閉后,重新創(chuàng)建多個vslam進程。
s102、調(diào)用各個vslam進程基于實時圖像進行定位。
具體的,可以通過視覺傳感器模塊(例如攝像頭)采集當前幀的實時圖像。
在各個進程根據(jù)實時圖像從加載的地圖數(shù)據(jù)庫中得到定位結(jié)果時,為了進一步簡化運算,不必將二者所有像素點一一進行匹配,可以分別從二者中提取圖像特征,然后將二者的圖像特征進行匹配,這樣可以大大節(jié)省計算量。更進一步地,由于地圖數(shù)據(jù)庫是保持不變的,可以提前將地圖數(shù)據(jù)庫保存為圖像特征,這樣每次進行定位時,可以僅對實時圖像提取圖像特征,可以進一步節(jié)省計算量。
在一些實施方式中,如果一個vslam進程定位成功,則該進程可以通知其他未定位成功vslam進程縮小在對應(yīng)地圖數(shù)據(jù)庫中的搜索范圍,使得縮小后的搜索范圍包括定位成功的vslam進程所輸出的定位結(jié)果所指示的位置。示例性的,假設(shè)第一進程處理第一組地圖數(shù)據(jù)庫,第二進程處理第二組地圖數(shù)據(jù)庫,第一進程處理在定位過程中首先搜索到第一組地圖數(shù)據(jù)庫的第100個地圖數(shù)據(jù)庫定位成功,則通知第二進程(尚未定位成功),在第二組地圖數(shù)據(jù)庫的第100個地圖數(shù)據(jù)庫附近最有可能定位成功,例如可以指示第二進程直接跳過第二組地圖數(shù)據(jù)庫中前89個地圖數(shù)據(jù)庫,從第90個地圖數(shù)據(jù)庫開始搜索,從而達到節(jié)省計算工作量的目的。
在一些實施方式中,在每一個vslam進程定位失敗時,說明該進程所加載的本組地圖數(shù)據(jù)庫可能由于光照、視角、拍攝間隔等原因無法對實時圖像進行定位,則本組地圖數(shù)據(jù)庫不再參與后續(xù)實時圖像的定位過程,因此關(guān)閉該vslam進程,直至所有vslam進程均關(guān)閉后,重新按照步驟s101創(chuàng)建多個vslam進程,以期待下個拍攝間隔的實時圖像能夠與地圖數(shù)據(jù)庫定位成功,以達到進一步節(jié)省計算工作量的目的。具體的,可以通過對每組地圖數(shù)據(jù)庫置標志位的方式來指示每組地圖數(shù)據(jù)庫是否參與后續(xù)實時圖像的定位過程。
s103、定位裝置根據(jù)n組地圖數(shù)據(jù)庫的定位結(jié)果進行定位。
具體的,可以將定位成功各個vslam進程所得定位結(jié)果所指示位置的坐標值求平均值,作為當前實時圖像的位置結(jié)果。然后根據(jù)定位的位置坐標,結(jié)合路徑規(guī)劃結(jié)果給出導(dǎo)航方向。
可選的,參照圖4中所示,在步驟s101之前,還可以包括:
s104、獲取全景圖像攝像裝置在多個角度上拍攝的圖像,將每一個角度上拍攝的圖像對應(yīng)的配置到一個vslam進程所使用的地圖數(shù)據(jù)庫中。
每個地圖數(shù)據(jù)庫可以包含360度全景圖像,這樣既節(jié)省拍攝工作量,同時也節(jié)省定位時的計算量。
本發(fā)明實施例提供的定位方法,通過對應(yīng)不同拍攝時間段或拍攝視角的地圖數(shù)據(jù)庫與實時圖像進行定位,然后根據(jù)定位結(jié)果進行定位,解決了vslam受視角和光照影響無法定位和導(dǎo)航的問題。
本領(lǐng)域技術(shù)人員應(yīng)該很容易意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,本發(fā)明能夠以硬件或硬件和計算機軟件的結(jié)合形式來實現(xiàn)。某個功能究竟以硬件還是計算機軟件驅(qū)動硬件的方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
本發(fā)明實施例可以根據(jù)上述方法示例對定位裝置進行功能模塊的劃分,例如,可以對應(yīng)各個功能劃分各個功能模塊,也可以將兩個或兩個以上的功能集成在一個處理模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。需要說明的是,本發(fā)明實施例中對模塊的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。
在采用對應(yīng)各個功能劃分各個功能模塊的情況下,圖5示出了上述實施例中所涉及的定位裝置的一種可能的結(jié)構(gòu)示意圖,定位裝置11包括:創(chuàng)建單元1101、定位單元1102、獲取單元1103。創(chuàng)建單元1101用于支持定位裝置執(zhí)行圖3中的過程s101、圖4中的過程s101;定位單元1102用于支持定位裝置執(zhí)行圖3中的過程s102、s103,圖4中的過程s102、s103;獲取單元1103用于支持定位裝置執(zhí)行圖4中的過程s104。其中,上述方法實施例涉及的各步驟的所有相關(guān)內(nèi)容均可以援引到對應(yīng)功能模塊的功能描述,在此不再贅述。
在采用集成的單元的情況下,圖6示出了上述實施例中所涉及的電子設(shè)備的一種可能的結(jié)構(gòu)示意圖。電子設(shè)備11包括:處理模塊1112和通信模塊1113。處理模塊1112用于對定位裝置的動作進行控制管理,例如,處理模塊1112用于支持定位裝置執(zhí)行圖3中的過程s101-s103,圖4中的過程s101-s104,和/或用于本文所描述的技術(shù)的其它過程,通信模塊1113用于支持電子設(shè)備11與其他外部實體的通信。電子設(shè)備11還可以包括存儲模塊1111,用于存儲定位裝置的程序代碼和數(shù)據(jù)。
其中,處理模塊1112可以是處理器或控制器,例如可以是中央處理器(centralprocessingunit,cpu),通用處理器,數(shù)字信號處理器(digitalsignalprocessor,dsp),專用集成電路(application-specificintegratedcircuit,asic),現(xiàn)場可編程門陣列(fieldprogrammablegatearray,fpga)或者其他可編程邏輯器件、晶體管邏輯器件、硬件部件或者其任意組合。其可以實現(xiàn)或執(zhí)行結(jié)合本發(fā)明公開內(nèi)容所描述的各種示例性的邏輯方框,模塊和電路。所述處理器也可以是實現(xiàn)計算功能的組合,例如包含一個或多個微處理器組合,dsp和微處理器的組合等等。存儲模塊1111可以是存儲器。
當處理模塊1112為處理器,通信模塊1113為通信接口,存儲模塊1111為存儲器時,本發(fā)明實施例所涉及的定位裝置可以為圖7所示的定位裝置。
參閱圖7所示,該電子設(shè)備11包括:處理器1122、通信接口1123、存儲器1121以及總線1124。其中,處理器1122、通信接口1123以及存儲器1121通過總線1124相互連接;總線1124可以是外設(shè)部件互連標準(peripheralcomponentinterconnect,pci)總線或擴展工業(yè)標準結(jié)構(gòu)(extendedindustrystandardarchitecture,eisa)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖7中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
在具體實施時,這里的電子設(shè)備可以為消費類的電子設(shè)備,也可以是指提供相應(yīng)功能的服務(wù)器等。
結(jié)合本發(fā)明公開內(nèi)容所描述的方法或者算法的步驟可以硬件的方式來實現(xiàn),也可以是由處理器執(zhí)行軟件指令的方式來實現(xiàn)。本發(fā)明實施例還提供一種存儲介質(zhì),該存儲介質(zhì)可以包括存儲器1121,用于儲存為定位裝置所用的計算機軟件指令,其包含執(zhí)行定位方法所設(shè)計的程序代碼。具體的,軟件指令可以由相應(yīng)的軟件模塊組成,軟件模塊可以被存放于隨機存取存儲器(randomaccessmemory,ram)、閃存、只讀存儲器(readonlymemory,rom)、可擦除可編程只讀存儲器(erasableprogrammablerom,eprom)、電可擦可編程只讀存儲器(electricallyeprom,eeprom)、寄存器、硬盤、移動硬盤、只讀光盤(cd-rom)或者本領(lǐng)域熟知的任何其它形式的存儲介質(zhì)中。一種示例性的存儲介質(zhì)耦合至處理器,從而使處理器能夠從該存儲介質(zhì)讀取信息,且可向該存儲介質(zhì)寫入信息。當然,存儲介質(zhì)也可以是處理器的組成部分。處理器和存儲介質(zhì)可以位于asic中。另外,該asic可以位于定位裝置中。當然,處理器和存儲介質(zhì)也可以作為分立組件存在于定位裝置中。
本發(fā)明實施例還提供一種計算機程序,該計算機程序可直接加載到存儲器1121中,并含有軟件代碼,該計算機程序經(jīng)由計算機載入并執(zhí)行后能夠?qū)崿F(xiàn)上述的人機混合決策方法。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。