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