本發(fā)明涉及虛擬現(xiàn)實定位技術(shù)領(lǐng)域,特別涉及一種定位初始化方法及裝置。
背景技術(shù):
vr設(shè)備提供的是純虛擬場景,所以vr設(shè)備用于用戶與虛擬場景的互動交互。通常為了實現(xiàn)用戶與虛擬場景的互動,vr設(shè)備需要配置位置跟蹤器、數(shù)據(jù)手套、動捕系統(tǒng)、數(shù)據(jù)頭盔等等。ar設(shè)備提供的是現(xiàn)實場景和虛擬場景結(jié)合的場景,ar設(shè)備與vr設(shè)備相比,還需要提供現(xiàn)實場景,所以ar設(shè)備基本都需要配置攝像頭,在攝像頭拍攝的畫面基礎(chǔ)上,結(jié)合虛擬畫面進(jìn)行展示和互動。
無論是ar還是vr設(shè)備,通常包括頭盔和頭盔的控制器,如手柄。在用戶使用頭盔和手柄之前,要進(jìn)行手柄的初始化操作?,F(xiàn)有技術(shù)中,手柄初始位置的初始化的一種方法是:保持手柄的位置不變,采用外界的多個攝像裝置從不同角度拍攝手柄,根據(jù)拍攝的圖像,確定現(xiàn)實坐標(biāo)系中手柄的位置,然后再根據(jù)現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系,確定手柄在虛擬坐標(biāo)系中的初始位置?,F(xiàn)有技術(shù)中,手柄初始位置的初始化的另一種方法是:通過光學(xué)定位技術(shù)計算手柄在現(xiàn)實坐標(biāo)系中的初始位置,光學(xué)定位技術(shù)是通過控制外界的紅外信號發(fā)射器和手柄上的紅外信號接收器的信號,通過復(fù)雜的算法和獲取的定位信息,來定位手柄在現(xiàn)實坐標(biāo)系中的初始位置,然后根據(jù)現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系,確定手柄在虛擬坐標(biāo)系中的初始位置。
這兩種現(xiàn)有技術(shù)的初始化過程都較為繁瑣,都需要借助外界的設(shè)備輔助獲取定位信息,然后再通過復(fù)雜的算法來根據(jù)獲取的定位信息來確定控制器在現(xiàn)實坐標(biāo)系中的位置信息。現(xiàn)有的定位初始化方法不僅過程復(fù)雜,還因手工操作、環(huán)節(jié)多等因素,而影響初始化精度。
綜上,現(xiàn)有的設(shè)備定位初始化過程較為繁瑣,且不利于提高定位精度。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種定位初始化方法及裝置,用以減小用戶對設(shè)備進(jìn)行位置初始化的操作難度。
本發(fā)明實施例提供的一種定位初始化方法,包括:
獲取初始化指令,所述初始化指令是將第一設(shè)備的控制器固定在第一設(shè)備上的第一位置上之后獲取的;根據(jù)所述初始化指令,獲取第一坐標(biāo),所述第一坐標(biāo)為所述控制器在虛擬坐標(biāo)系中的初始化坐標(biāo),所述第一坐標(biāo)是所述控制器固定在所述第一位置時,根據(jù)所述第一位置與所述第一設(shè)備上的第二位置之間的相對位置關(guān)系以及所述現(xiàn)實坐標(biāo)系與所述虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定的,所述現(xiàn)實坐標(biāo)系是以所述第二位置為坐標(biāo)原點建立的坐標(biāo)系;將所述控制器在所述虛擬坐標(biāo)系中的當(dāng)前坐標(biāo)初始化為所述第一坐標(biāo)。
可選的,根據(jù)所述初始化指令,獲取第一坐標(biāo),包括:根據(jù)所述初始化指令,獲取所述第一坐標(biāo);或者,根據(jù)所述初始化指令,獲取第二坐標(biāo),所述第二坐標(biāo)為所述控制器固定在所述第一位置時所述控制器在所述現(xiàn)實坐標(biāo)系中的坐標(biāo);根據(jù)所述第二坐標(biāo)和所述轉(zhuǎn)換關(guān)系,確定所述第一坐標(biāo)。
可選的,根據(jù)所述第二坐標(biāo)和所述轉(zhuǎn)換關(guān)系,確定所述第一坐標(biāo),包括:根據(jù)所述第二坐標(biāo)以及所述第二位置與第三位置的相對位置,確定所述第一坐標(biāo);其中,所述第三位置設(shè)置在所述第一設(shè)備上,且所述虛擬坐標(biāo)系是以所述第三位置為坐標(biāo)原點建立的坐標(biāo)系,所述第二位置與所述第三位置的相對位置根據(jù)所述轉(zhuǎn)換關(guān)系確定。
可選的,所述控制器上設(shè)置有初始化按鈕,所述初始化按鈕在所述控制器固定在所述第一位置上之后啟動,所述初始化指令是在所述初始化按鈕啟動后獲取的。
可選的,所述第一位置處設(shè)置有卡扣,所述控制器通過所述卡扣固定在所述第一位置上。
本發(fā)明實施例提供的一種定位初始化裝置,包括:
第一獲取單元,用于所述初始化指令是將第一設(shè)備的控制器固定在第一設(shè)備的第一位置上之后獲取的;
第二獲取單元,用于根據(jù)所述初始化指令,獲取第一坐標(biāo),所述第一坐標(biāo)為所述控制器在虛擬坐標(biāo)系中的初始化坐標(biāo),所述第一坐標(biāo)是所述控制器固定在所述第一位置時,根據(jù)所述第一位置與所述第一設(shè)備上的第二位置之間的相對位置關(guān)系以及所述現(xiàn)實坐標(biāo)系與所述虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定的,所述現(xiàn)實坐標(biāo)系是以所述第二位置為坐標(biāo)原點建立的坐標(biāo)系;
初始化單元,用于將所述控制器在所述虛擬坐標(biāo)系中的當(dāng)前坐標(biāo)初始化為所述第一坐標(biāo)。
可選的,所述第二獲取單元具體用于:根據(jù)所述初始化指令,獲取所述第一坐標(biāo)。
可選的,所述第二獲取單元具體用于:根據(jù)所述初始化指令,獲取第二坐標(biāo),所述第二坐標(biāo)為所述控制器固定在所述第一位置時所述控制器在所述現(xiàn)實坐標(biāo)系中的坐標(biāo);根據(jù)所述第二坐標(biāo)和所述轉(zhuǎn)換關(guān)系,確定所述第一坐標(biāo)。
可選的,所述第二獲取單元用于:
根據(jù)所述第二坐標(biāo)以及所述第二位置與第三位置的相對位置,確定所述第一坐標(biāo);其中,所述第三位置設(shè)置在所述第一設(shè)備上,且所述虛擬坐標(biāo)系是以所述第三位置為坐標(biāo)原點建立的坐標(biāo)系,所述第二位置與所述第三位置的相對位置根據(jù)所述轉(zhuǎn)換關(guān)系確定。
可選的,所述控制器上設(shè)置有初始化按鈕,所述初始化按鈕在所述控制器固定在所述第一位置上之后啟動,所述初始化指令是在所述初始化按鈕啟動后獲取。
可選的,所述第一位置處設(shè)置有卡扣,所述控制器通過所述卡扣固定在所述第一設(shè)備上。
上述實施例中,將控制器固定在第一設(shè)備的第一位置進(jìn)行定位初始化,并利用第一設(shè)備上的第一位置與第二位置之間的相對位置關(guān)系以及現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定第一坐標(biāo),第一坐標(biāo)為控制器在虛擬坐標(biāo)系中的初始化坐標(biāo),將虛擬坐標(biāo)系中控制器的當(dāng)前坐標(biāo)初始化為第一坐標(biāo),相對于現(xiàn)有技術(shù),控制器的定位初始化操作簡便,并且第一位置和第二位置都在第一設(shè)備上,其相對位置關(guān)系固定,現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系也是固定的,因此,根據(jù)第一位置與第二位置之間的相對位置關(guān)系以及現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定第一坐標(biāo)作為控制器在虛擬坐標(biāo)系中的初始坐標(biāo)更為準(zhǔn)確,提升了定位初始化的準(zhǔn)確度。
附圖說明
圖1為本發(fā)明實施例提供的一種定位初始化方法的應(yīng)用場景的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例提供的一種定位初始化方法的原理示意圖;
圖3為本發(fā)明實施例提供的另一種定位初始化方法的原理示意圖;
圖4為本發(fā)明實施例提供的一種多控制器的定位初始化方法的應(yīng)用場景的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例提供的一種定位初始化裝置的結(jié)構(gòu)示意圖。
具體實施方式
為了使控制器的定位初始化過程簡單易操作,并能提升定位初始化精度,本發(fā)明實施例提供一種定位初始化方法,該方法應(yīng)用于第一設(shè)備的控制器的定位初始化。
參見圖1,第一設(shè)備200為vr或ar設(shè)備,例如頭盔。控制器100為vr或ar設(shè)備的輔助設(shè)備,例如是方便用戶在虛擬場景中互動的手柄。在第一設(shè)備200與控制器100在初始化之前,第一設(shè)備200和控制器100都為自定位設(shè)備,在第一設(shè)備200移動時,可以獲取第一設(shè)備200的當(dāng)前位置相對于第一設(shè)備200的上個位置的位移量和旋轉(zhuǎn)量,控制器100在移動時,可以獲取控制器100的當(dāng)前位置相對于控制器100的上個位置的位移量和旋轉(zhuǎn)量。為了提高控制器100的定位精度,提升用戶的沉浸感,在初次使用或者使用一段時間后,需要對控制器100進(jìn)行定位初始化操作,以便將控制器100相對于第一設(shè)備200的初始坐標(biāo)進(jìn)行初始化。
以圖1為例的定位初始化方法,具體包括:
步驟101,獲取初始化指令,初始化指令是將第一設(shè)備200的控制器100固定在第一設(shè)備200的第一位置a上之后獲取的;
可選的,為了便于固定控制器100,第一位置a為第一設(shè)備200外表面上的任意位置。
可選的,控制器100上設(shè)置有初始化按鈕,初始化按鈕在控制器100固定在第一位置a上之后啟動,初始化指令是在初始化按鈕啟動后獲取的。
可選的,第一位置a處設(shè)置有卡扣300,控制器100通過卡扣300固定在第一位置a上。
可選的,通過無線或有線的通信方式接收初始化指令。
步驟102,根據(jù)初始化指令,獲取第一坐標(biāo),第一坐標(biāo)為控制器100在虛擬坐標(biāo)系中的初始化坐標(biāo),第一坐標(biāo)是控制器100固定在第一位置a時,根據(jù)第一位置a與第一設(shè)備200上的第二位置b之間的相對位置關(guān)系以及現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定的,現(xiàn)實坐標(biāo)系是以第二位置b為坐標(biāo)原點建立的坐標(biāo)系;
其中,第二位置b與第一位置a是不同的位置,第二位置b可以設(shè)置在第一設(shè)備200的表面的任意位置,也可以設(shè)置在第一設(shè)備200內(nèi)部的任意位置。
可選的,根據(jù)初始化指令,獲取預(yù)先存儲的第一坐標(biāo)。
可選的,根據(jù)初始化指令,獲取預(yù)先存儲的第二坐標(biāo),第二坐標(biāo)為控制器100固定在第一位置a時控制器100在現(xiàn)實坐標(biāo)系中的坐標(biāo);根據(jù)第二坐標(biāo)和上述轉(zhuǎn)換關(guān)系,確定第一坐標(biāo)。
可選的,根據(jù)第二坐標(biāo)和上述轉(zhuǎn)換關(guān)系,確定第一坐標(biāo),包括:根據(jù)第二坐標(biāo)以及第二位置與第三位置的相對位置,確定第一坐標(biāo);其中,第三位置c設(shè)置在第一設(shè)備200上,且虛擬坐標(biāo)系是以第三位置c為坐標(biāo)原點建立的坐標(biāo)系,第二位置b與第三位置c的相對位置根據(jù)轉(zhuǎn)換關(guān)系確定。
其中,第三位置c與第一位置a、第二位置b是不同的位置,第三位置c可以設(shè)置在第一設(shè)備200的表面的任意位置,也可以設(shè)置在第一設(shè)備200內(nèi)部的任意位置。
步驟103,將控制器100在虛擬坐標(biāo)系中的當(dāng)前坐標(biāo)初始化為第一坐標(biāo)。
本申請實施例中,上述方法流程由定位初始化裝置執(zhí)行,定位初始化裝置的位置包括但并不限于設(shè)置在第一設(shè)備200內(nèi),初始化裝置也可以設(shè)置在外部設(shè)備中,該外部設(shè)備通過無線或有線的方式與第一設(shè)備200、控制器100進(jìn)行通信。
本申請上述實施例中,將控制器100固定在第一設(shè)備200的第一位置a進(jìn)行定位初始化,并利用第一設(shè)備200上的第一位置a與第二位置b之間的相對位置關(guān)系以及現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定第一坐標(biāo),將虛擬坐標(biāo)系中控制器100的當(dāng)前坐標(biāo)初始化為第一坐標(biāo),相對于現(xiàn)有技術(shù),操作簡便,并且第一位置a和第二位置b都在第一設(shè)備200上,其相對位置關(guān)系固定,現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系也是固定的,因此,根據(jù)第一位置a與第二位置b之間的相對位置關(guān)系以及現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定第一坐標(biāo)作為控制器100在虛擬坐標(biāo)系中的初始坐標(biāo)更為準(zhǔn)確,提升了定位初始化的準(zhǔn)確度。
下面結(jié)合具體示例對本申請?zhí)峁┑亩ㄎ怀跏蓟椒ㄟM(jìn)行詳細(xì)說明。
本申請實施例提供的第一種示例參見圖2,具體的定位初始化過程包括:在進(jìn)行定位初始化時,將控制器100固定在第一設(shè)備200的第一位置a處的卡扣300上,然后按下控制器100上的初始化按鈕,控制器100發(fā)送初始化指令,以第一設(shè)備200為執(zhí)行定位初始化操作為例,第一設(shè)備200接收到初始化指令之后,獲取預(yù)先存儲的第一坐標(biāo),將控制器100在虛擬坐標(biāo)系中的當(dāng)前坐標(biāo)初始化為獲取的第一坐標(biāo)。
其中,預(yù)先存儲的第一坐標(biāo)通過以下步驟確定:
步驟1:將控制器100固定在第一設(shè)備200的第一位置a處的卡扣300上。
步驟2:以第一設(shè)備200上的第二位置b為坐標(biāo)原點建立現(xiàn)實坐標(biāo)系,根據(jù)現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系之間的轉(zhuǎn)換關(guān)系,確定第一設(shè)備200上的第三位置c,第三位置c為虛擬坐標(biāo)系的坐標(biāo)原點,虛擬坐標(biāo)系的x’軸、y’軸、z’軸分別與現(xiàn)實坐標(biāo)系的x軸、y軸、z軸的方向一致,只是坐標(biāo)原點位置不同。
步驟3:根據(jù)第一位置a與第三位置c的相對位置關(guān)系,確定在現(xiàn)實坐標(biāo)系中第一位置a與第三位置c分別沿水平面上的x軸、y軸方向的距離,以及沿垂直于水平面的z軸方向的距離。
如圖2所示,第一位置a與第三位置c沿z軸方向的距離為l1,第一位置a與第三位置c沿x軸方向的距離為l2,第一位置a與第三位置c沿y軸方向的距離為l3。
步驟4:根據(jù)第一位置a與控制器100的中心的位置關(guān)系,確定控制器100的中心與第一位置a沿z軸方向的垂直距離;
如圖2所示,控制器100的中心與第一位置a沿z軸方向的垂直距離為l4。
步驟5:確定控制器100的中心相對于第三位置c的距離,控制器100的中心相對于第三位置c分別沿x軸、y軸、z軸方向上的距離位為l2,l3,l1+l4。
步驟6:根據(jù)控制器100的中心相對于第三位置c的距離,確定第一坐標(biāo)。
由于第一坐標(biāo)是指控制器100固定在第一位置a上時,控制器100的中心在虛擬坐標(biāo)系中的坐標(biāo),因此,第一坐標(biāo)可以標(biāo)記為:(l2,l3,l1+l4)。
步驟7:將第一坐標(biāo)預(yù)先存儲,可以存儲在第一設(shè)備200中,也可以存儲在控制器100中,也可以存儲在外部設(shè)備中,以便執(zhí)行定位初始化操作的裝置或設(shè)備在接收到定位初始化指令后獲取。
本申請實施例提供的第二種示例參見圖3,具體的定位初始化過程包括:
在進(jìn)行定位初始化時,將控制器100固定在第一設(shè)備200的第一位置a處的卡扣300上,然后按下控制器100上的初始化按鈕,控制器100發(fā)送初始化指令,以第一設(shè)備200為執(zhí)行定位初始化操作為例,第一設(shè)備200接收到初始化指令之后,獲取預(yù)先存儲的第二坐標(biāo),根據(jù)第二坐標(biāo),確定第一坐標(biāo)。然后將控制器100在虛擬坐標(biāo)系中的當(dāng)前坐標(biāo)初始化為獲取的第一坐標(biāo)。
其中,預(yù)先存儲的第二坐標(biāo)通過以下步驟確定:
步驟1:將控制器100固定在第一設(shè)備200的第一位置a處的卡扣300上。
步驟2:以第一設(shè)備200上的第二位置b為坐標(biāo)原點建立現(xiàn)實坐標(biāo)系;
步驟3:根據(jù)第一位置a與第二位置b的相對位置關(guān)系,確定第一位置a在現(xiàn)實坐標(biāo)系中的坐標(biāo);
如圖3所示,第一位置a與第二位置b沿z軸方向的距離為l1,第一位置a與第二位置b沿x軸方向的距離為2l2,第一位置a與第二位置b沿y軸方向的距離為l3。因此,第一位置a在現(xiàn)實坐標(biāo)系中的坐標(biāo)為(2l2,l3,l1)。
步驟4:根據(jù)第一位置a與控制器100的中心的位置關(guān)系,確定第二坐標(biāo),即控制器100的中心在現(xiàn)實坐標(biāo)系中的坐標(biāo)。如圖3所示,控制器100的中心與第一位置a沿z軸方向的垂直距離為l4。因此,控制器100的中心在現(xiàn)實坐標(biāo)系中的坐標(biāo)為(2l2,l3,l1+l4)。
步驟5:將第二坐標(biāo)預(yù)先存儲,可以存儲在第一設(shè)備200中,也可以存儲在控制器100中,也可以存儲在外部設(shè)備中,以便執(zhí)行定位初始化操作的裝置或設(shè)備在接收到定位初始化指令后獲取。
根據(jù)第二坐標(biāo),確定第一坐標(biāo),具體通過以下步驟確定:
根據(jù)現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系之間的轉(zhuǎn)換關(guān)系,確定第一設(shè)備200上的第三位置c,使第三位置c為虛擬坐標(biāo)系的坐標(biāo)原點,虛擬坐標(biāo)系的x軸、y軸、z軸分別與現(xiàn)實坐標(biāo)系的x軸、y軸、z軸的方向一致,只是坐標(biāo)原點位置不同。假如第三位置c位于現(xiàn)實坐標(biāo)系的x軸上,且第三位置c在現(xiàn)實坐標(biāo)系中的坐標(biāo)為(l2,0,0),則根據(jù)(l2+l5,l3,l1+l4)和(l5,0,0)之間的相對位置關(guān)系,確定的第一坐標(biāo)為(l2,l3,l1+l4),即控制器100固定在第一位置a上時,控制器100的中心在虛擬坐標(biāo)系中的坐標(biāo)為(l2,l3,l1+l4)。
本申請上述實施例中,第一位置a、第二位置b與第三位置c之間的相對位置關(guān)系僅為示例,本申請實施例中的第一位置a、第二位置b與第三位置c之間的相對位置關(guān)系包括但并不限于上述示例,可以根據(jù)實際應(yīng)用場景合適的確定。
需要說明的是,本申請并不限定控制器的數(shù)量,若控制器的數(shù)量為2個,例如圖4所示,第一設(shè)備200的控制器的數(shù)量為2個,即控制器100和控制器102,在進(jìn)行控制器的定位初始化時,控制器100固定在第一位置a處的卡扣300上,另一控制器102固定在第四位置d處的卡扣302上,第二位置b,第三位置c分別是現(xiàn)實坐標(biāo)系的坐標(biāo)原點、虛擬坐標(biāo)系的坐標(biāo)原點,然后控制器100和控制器102的定位初始化操作參照上述實施例的具體內(nèi)容,此處不再累述。
基于相同的發(fā)明構(gòu)思,本發(fā)明實施例還提供了一種定位初始化裝置,該定位初始化裝置可以設(shè)置在第一設(shè)備中,也可以設(shè)置在外部設(shè)備中,如圖5所示,該定位初始化裝置500包括:
第一獲取單元501,用于初始化指令是將第一設(shè)備的控制器固定在第一設(shè)備的指定位置上之后獲取的;
第二獲取單元502,用于根據(jù)初始化指令,獲取第一坐標(biāo),第一坐標(biāo)為控制器在虛擬坐標(biāo)系中的初始化坐標(biāo),第一坐標(biāo)是控制器固定在第一位置時,根據(jù)第一位置與第一設(shè)備上的第二位置之間的相對位置關(guān)系以及現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系確定的,現(xiàn)實坐標(biāo)系是以第二位置為坐標(biāo)原點建立的坐標(biāo)系;
初始化單元503,用于將控制器在虛擬坐標(biāo)系中的當(dāng)前坐標(biāo)初始化為第一坐標(biāo)。
可選的,第二獲取單元502具體用于:
根據(jù)初始化指令,獲取第一坐標(biāo);或者,
根據(jù)初始化指令,獲取第二坐標(biāo),第二坐標(biāo)為控制器固定在指定位置時控制器在現(xiàn)實坐標(biāo)系中的坐標(biāo);
根據(jù)第二坐標(biāo)和現(xiàn)實坐標(biāo)系與虛擬坐標(biāo)系的轉(zhuǎn)換關(guān)系,確定第一坐標(biāo)。
可選的,第二獲取單元502用于:
根據(jù)第二坐標(biāo)以及第二位置與第三位置的相對位置,確定第一坐標(biāo);
其中,第三位置設(shè)置在第一設(shè)備上,且虛擬坐標(biāo)系是以第三位置為坐標(biāo)原點建立的坐標(biāo)系,第二位置與第三位置的相對位置根據(jù)轉(zhuǎn)換關(guān)系確定。
可選的,控制器上設(shè)置有初始化按鈕,初始化按鈕在控制器固定在第一位置上之后啟動,初始化指令是在初始化按鈕啟動后獲取。
可選的,第一位置處設(shè)置有卡扣,控制器通過卡扣固定在第一設(shè)備上。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明實施例進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。