15
本文作者: 吳攀 | 2015-10-27 10:37 |
如你所見,一個(gè)虛擬現(xiàn)實(shí)的世界正在逐漸成型;谷歌也已經(jīng)率先推出了基于智能手機(jī)的虛擬現(xiàn)實(shí)設(shè)備Cardboard,小編也體驗(yàn)過,感覺還不錯(cuò)。
毫無疑問,虛擬現(xiàn)實(shí)正在進(jìn)入我們的生活,虛擬現(xiàn)實(shí)直播也正在逐漸興起。但總體來說,虛擬現(xiàn)實(shí)直播還非常小眾,資源不多;而且由于帶寬的限制,許多虛擬現(xiàn)實(shí)直播還對接入設(shè)備數(shù)量存在限制。既然這樣,那就讓我們自己來DIY一套虛擬現(xiàn)實(shí)直播系統(tǒng)吧?。ㄗⅲ罕卷?xiàng)目來自Instructables。)
要實(shí)現(xiàn)這一項(xiàng)目,你需要以下硬件:
一部支持Cardboard的手機(jī)
Google Cardboard(因?yàn)楣雀韫_了設(shè)計(jì)方案,有很多不同生產(chǎn)商的兼容版本)
兩臺(tái)計(jì)算機(jī)
兩個(gè)不同的網(wǎng)絡(luò)相機(jī)(必須要驅(qū)動(dòng)不同的,否則Windows系統(tǒng)無法進(jìn)行識(shí)別)
三個(gè)標(biāo)準(zhǔn)舵機(jī)
相機(jī)支架和相關(guān)3D打印組件(文件點(diǎn)擊這里下載)
小面包板
12根跳線
USB A轉(zhuǎn)USB B線
AA電池盒
4顆AA電池
Arduino UNO
螺絲釘若干
另外,你還需要這些軟件:
Processing 2.0 (可選,如果你不想改動(dòng)源代碼,可不用)
首先3D打印必要的結(jié)構(gòu)件。
不同的舵機(jī)配合不同的結(jié)構(gòu),具體看圖。
接線圖如上,Arduino用來控制三個(gè)舵機(jī),這些舵機(jī)使用4個(gè)AA電池供電,因?yàn)锳rduino無法同時(shí)為三個(gè)舵機(jī)功能。這三個(gè)舵機(jī)為最終的設(shè)備提供了3個(gè)自由度。實(shí)際連接后如下所示:
本項(xiàng)目基于標(biāo)準(zhǔn) Firmata協(xié)議,該協(xié)議能讓基于Arduino的實(shí)時(shí)通信交互變得更加簡單,數(shù)據(jù)的處理也可以轉(zhuǎn)移到PC上進(jìn)行。設(shè)置標(biāo)準(zhǔn)Firmata協(xié)議的步驟如下:
使用USB A轉(zhuǎn)USB B線,打開Arduino IDE并連接Arduino UNO到PC;
點(diǎn)擊File->Examples->Firmata->StandardFirmata,將必要的代碼模板載入IDE;
點(diǎn)擊Tools->Board->Arduino UNO,確定開發(fā)板;
Tools->Serial Port->(串行接口名),這里設(shè)置Arduino上連接的接口;
點(diǎn)擊箭頭符號(hào)將標(biāo)準(zhǔn) Firmata協(xié)議上傳到Arduino,如果沒有出錯(cuò),則上傳成功。
你可以使用Firmata Test應(yīng)用測試標(biāo)準(zhǔn) Firmata協(xié)議是否安裝成功。在其中你可以看到接口的定義,這里我們使用的引腳8、9和10,將這三個(gè)引腳的類型改成“Servo”。
現(xiàn)在的虛擬現(xiàn)實(shí)應(yīng)用大部分都是頭戴式的,我們這里選用的是Cardboard兼容版本。而我們的數(shù)據(jù)處理則在計(jì)算機(jī)上進(jìn)行,我們需要TrinusVR軟件為Cardboard提供視頻流。TrinusVR的下載安裝方法請點(diǎn)這里。
本項(xiàng)目將使用利用Processing 2.0編寫的定制軟件VRTD(Virtual Reality Teleconferencing Device)來實(shí)現(xiàn)對虛擬現(xiàn)實(shí)設(shè)備的遠(yuǎn)程控制,該軟件分為兩個(gè)部分VRTD_sender和VRTD_receiver。
VRTD_sender在計(jì)算機(jī)上使用,該程序能夠跟蹤頭部運(yùn)動(dòng)產(chǎn)生數(shù)據(jù),并將該數(shù)據(jù)上傳到特定的IP地址。該IP地址屬于,另一臺(tái)特定的計(jì)算機(jī),該計(jì)算機(jī)上運(yùn)行的是VRTD_receiver,該計(jì)算機(jī)能夠接受由連接到其上的左右兩個(gè)攝像頭所產(chǎn)生的視頻數(shù)據(jù),并同時(shí)根據(jù)VRTD_sender發(fā)送的數(shù)據(jù)控制攝像頭下面舵機(jī)的運(yùn)動(dòng)。
那么使用者又如何看到視頻直播的畫面呢?這里采用了一個(gè)很巧妙的方法:直接通過Skype或QQ這樣的視頻軟件傳輸共享的視頻數(shù)據(jù)。具體的配置步驟如下:
準(zhǔn)備兩臺(tái)安裝了Windows系統(tǒng)的計(jì)算機(jī),分別命名為A和B;
將計(jì)算機(jī)A連接到Cardboard,并運(yùn)行VRTD_sender;
將計(jì)算機(jī)B連接到虛擬現(xiàn)實(shí)設(shè)備,并運(yùn)行VRTD_receiver;
在VRTD_receiver中設(shè)置左右兩個(gè)網(wǎng)絡(luò)攝像頭和Arduino的接口;
在兩臺(tái)計(jì)算機(jī)上運(yùn)行Skype軟件,并開啟屏幕共享;
在VRTD_sender中輸入計(jì)算機(jī)B的IP地址;
戴上虛擬現(xiàn)實(shí)設(shè)備,該設(shè)備控制鼠標(biāo)的光標(biāo),并借此控制計(jì)算機(jī)B所連接的Arduino上所連接的舵機(jī)。
注:只有一臺(tái)計(jì)算機(jī)也可完成此項(xiàng)目,同時(shí)運(yùn)行VRTD_receiver和VRTD_sender,在輸入IP地址時(shí)輸入本地的127.0.0.1即可。
演示視頻如下:
到這里本項(xiàng)目就完成了,該項(xiàng)目的作者John Choi已經(jīng)將相關(guān)的CAD和處理文件開源,實(shí)在太贊了!
想了解更多腦洞大開的創(chuàng)客創(chuàng)意?趕緊關(guān)注硬創(chuàng)邦微信公眾號(hào)(leiphone_bang)吧,每天都有新花樣。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。