楊媛,孔令云
(西京學(xué)院 電子信息學(xué)院,陜西西安,710123)
利用力反饋技術(shù)的的優(yōu)勢,此設(shè)備可以給使用者反饋力量、振幅和觸覺,以及可以在訓(xùn)練中對雙手和手指進行精確的追蹤,讓訓(xùn)練場景盡可能的接近現(xiàn)實。
創(chuàng)新點:第一、強制反饋:支持手勢識別、靈敏壓力反饋。力反饋主要由手背上的5 個舵機進行限位的控制方式,由手指牽動拉繩的限定距離,把被動觸覺施加給手指。能夠感知類似的碰撞、撞擊,極為真實地模擬出對虛擬物體的觸覺感受。第二、相比較于其他VR 觸覺手套設(shè)備,此作品僅使用到了ESP-32 系列開發(fā)板、WH48 單聯(lián)(15nm)電位器、MG-90S 舵機、雙母頭杜邦線若干、易拉扣、手套本體,易于操作。第三、運動跟蹤:利用Vive tracker2.0 跟蹤設(shè)備,在手臂的動作捕捉和跟蹤的基礎(chǔ)上,實現(xiàn)了對手掌動作姿態(tài)捕捉與力反饋。
難點:第一、在盡量不影響跟蹤定位性能的情況下,對細微動作和復(fù)雜動作實時跟蹤和操控,對團隊的硬件設(shè)計、設(shè)備組裝與設(shè)計提出了很高的要求;第二、在組裝設(shè)備過程中,對設(shè)置的拉繩距離精度的要求較高,需要人員反復(fù)實驗和嘗試。第三、提供可變力反饋,讓使用者可以實時感受到該虛擬物體,比如旋轉(zhuǎn)虛擬旋鈕、拉動虛擬控制桿、打開一扇虛擬門的感覺。
此設(shè)備在實際體驗過程中,手指伸縮會拉動線軸,線軸移動導(dǎo)致電位器旋轉(zhuǎn),電阻發(fā)生變化,電位器產(chǎn)生的電信號傳輸?shù)介_發(fā)板內(nèi),開發(fā)板會把數(shù)字信號傳輸給電腦,電腦接受信息,通過數(shù)字信號對真實的手柄的坐標(biāo)進行模擬,轉(zhuǎn)換成VR 場景里面的模擬手柄,然后輸入真實手柄相對位置,手指就可以在VR 里移動。力反饋手套可以讓使用者在VR里感知到抓取的物體,是因為舵機的搖臂會根據(jù)接觸物體的不同形狀,旋轉(zhuǎn)成不同的角度,限制手指的彎曲程度,模擬實際觸摸物體的感覺。
使用Valve 的Lighthouse 追蹤系統(tǒng)中VR 光學(xué)跟蹤方案。此作品的定位技術(shù)采用激光和光敏傳感器來確定運動物體的位置。
激光通過Lighthouse 的兩個基站,每個基站里有一個紅外LED 陣列,兩個轉(zhuǎn)軸互相垂直的旋轉(zhuǎn)的紅外激光發(fā)射器。激光基站的工作原理是基于Lighthouse 的長期無漂移(drift-free)位置追蹤技術(shù)。每個Lighthouse 基站包含兩束激光。一個是水平的激光,從下到上橫掃追蹤的數(shù)量;另一束激光是垂直的,從左到右橫掃追蹤數(shù)量。兩束激光在各種的軸以3600rpm 速度旋轉(zhuǎn)[1]。兩束激光在同一基站,只能有一個激光扇面可以對整個定位空間進行掃描??偟膩碚f,Lighthouse 燈塔技術(shù)的核心是基站,這些基站是放置在跟蹤區(qū)域中的小矩形對象中。它們可用作任何位置跟蹤設(shè)備的參考點?;就ㄟ^不斷的用不可見光淹沒房間來執(zhí)行此功能。被跟蹤設(shè)備上的接收器將攔截光線并找出它們相對于基站的位置。多個基站(SteamVR 為2 個基站)允許被跟蹤的設(shè)備找出它們在3D 空間中的位置。每個基站都包含一個名為Sync Blinker 的紅外信標(biāo)和2 個快速旋轉(zhuǎn)的激光發(fā)射器。每秒60 次,同步閃光燈將發(fā)出同步脈沖,2 個旋轉(zhuǎn)激光器將掃描整個房間的光束。接收器、HMD 和控制器,被光傳感器覆蓋,這些光電傳感器可以識別同步脈沖和激光束。當(dāng)它檢測到同步脈沖時,受體開始計數(shù),直到其中一個光電傳感器被激光束擊中。Lighthouse 計算光傳感器何時被激光擊中以及該光電傳感器的位置,以找到受體相對于基站的確切位置。當(dāng)有2 個基站時,建立房間3D 空間中受體的位置和方向?;救菀资艿秸趽?。它們需要跟蹤對象的視線?;驹O(shè)計為可擴展。2 個基站放置在房間的兩側(cè),以最大程度地減少此問題??梢苑胖酶嗟幕疽栽黾痈櫡秶鶾2]。
光敏傳感器,其通過計算接收激光的時間來得到傳感器位置相對于激光發(fā)射器的準(zhǔn)確位置,利用手柄上不同位置的多個光敏傳感器從而得出手柄的位置及方向。如圖1 所示,于是通過各個傳感器的位置差,就可以計算出手柄的位置和運動軌跡。如圖2 所示。
圖1 光敏傳感器原理圖
圖2 傳感器的位置差計算原理圖
HTC Vive 是由HTC 公司與Valve 公司聯(lián)合開發(fā)的一套虛擬現(xiàn)實頭戴式顯示設(shè)備。在Valve 公司提供的SteamVR技術(shù)支撐下,HTC Vive 能夠給用戶帶來沉浸式的虛擬現(xiàn)實體驗。本文采用 HTC Vive tracker2.0 作為VR 交互場景的配套虛擬現(xiàn)實設(shè)備。
Vive Tracker2.0 作為全身追蹤接收器。它不同于操作手柄,重量更輕巧,使用更容易,提升了舒適度,用途更廣泛;相比較于以往的手柄,延長了75%的電池續(xù)航力,給予使用者提供了更沉浸的體驗[3]。Vive Tracker 追蹤器基于全身追蹤創(chuàng)建的虛擬形象更加逼真,它可以應(yīng)用在不同領(lǐng)域:比如虛擬游戲者可以實時的展示精彩的游戲動作,教育工作者也可以使用精準(zhǔn)追蹤的道具和模型設(shè)備構(gòu)建培訓(xùn)應(yīng)用程序。我們使用這項技術(shù)來創(chuàng)建簡單的追蹤對象,其核心技術(shù)利用了激光和光敏傳感器的原理,用于追蹤物體在場景空間中的位移與移動。
ESP-WROOM-32 集成了傳統(tǒng)藍牙(BT)、低功耗藍牙(BLEMCU)和WiFi,具有廣泛的用途:WiFi 支持極大范圍的通信連接,也支持通過路由器直接連接互聯(lián)網(wǎng);而藍牙可以讓用戶連接手機或者廣播Ble Beacon 以便于信號檢測,ESP32 芯片的睡眠電流小于5mA,使其適用于電池供電的可穿戴電子設(shè)備。ESP-WROOM-32 支持的數(shù)據(jù)傳輸速率高度150Mbps,經(jīng)過功率放大后,輸出功率可達到22dBm,可實現(xiàn)大范圍內(nèi)的無線通信。因此我們選用的這款芯片擁有領(lǐng)先的的技術(shù)規(guī)格,在高集成度、無線傳輸距離、功耗以及網(wǎng)絡(luò)聯(lián)通等方面性能尚佳。
如圖3 所示,在此我們主控模塊采用的為ESPWROOM-32 開發(fā)板,其共有38 個管腳。ESP-WROOM-32是樂鑫發(fā)布的新一代WiFi 和藍牙雙模雙核無線通信芯片。此模塊的核心是ESP-WOWDQ 芯片,兩個XTENSA-BIT LX6 CPU 核可被單獨控制,運算能力高達600MIPS,時鐘頻率的調(diào)節(jié)范圍為80MHz~240MHz,448KB ROM.520 KBSRAM.16KB RTC SRAM,模組集成4MB QSPI FLASH[4]。同時還集成了豐富的外設(shè),包括電容式傳感器模塊、霍爾傳感器、低噪聲傳感器放大器、SD 卡接口、以太網(wǎng)接口、高速SDIO/SPI/UART/12S/12C 等。
圖3 ESP-WROOM-32 實物圖
首先,左側(cè)這部分是電位器。上邊是按鈕,右側(cè)是舵機。下面是搖桿。開發(fā)板的GPIO 口對應(yīng)到實際板子的引腳。根據(jù)開發(fā)板的原理圖,把GPIO 編號跟實際引腳對一一對應(yīng)。ESP-WROOM-32 開發(fā)板電路圖如圖4 所示。
圖4 ESP-WROOM-32 開發(fā)板電路圖
首先電位器接線可以使用長度XH2.54mm,長度30cm 的5P 端子線,這種線插到電位器上比較牢固,開發(fā)板也可以直接插入引腳,中間用帶錫的熱縮管連接,用熱熔槍進行炙烤固化。接起來也非常得方便,使用WH48 單聯(lián)(15mm)電位器.此設(shè)備通過拉繩帶動手背上的電位器,把拉繩的距離轉(zhuǎn)化成電位器阻值的變化,以此來判斷手指彎曲的程度。如圖5 單個電位器的接線圖,綠色線路代表輸入的Vcc(3.3V 正極),白色線路代表經(jīng)過電位器改變后輸出的電信號(Analog),分別接入到 ESP32 的GPIO 上。藍色線路代表是接地(GND)。
圖5 電位器線路圖
其中,當(dāng)5 個電位器全部接到如圖6 所示電路圖中時,紅色線路代表輸入的Vcc,彩色線路代表經(jīng)過輸入電源之后對電源進行處理后輸出的電信號,黑色線路代表接地。
圖6 總電位器接線示意圖
舵機齒輪卡住線軸模擬抓住物體的觸感,舵機復(fù)位可以伸縮5 根手指。首先采用5V 的電源。所以紅色線路代表輸入5V 的電源,棕色線路代表的是接地(GND),另外黃色線路代表信號線接入ESP-32 開發(fā)板上。按鈕接線類同,其中有一根棕色線接地,另一根黃色線接電信號。如圖7 所示。
圖7 舵機接線實物圖
搖桿的主要作用是力反饋手套其中的一個配套動作反饋功能,例如旋、扭、力方向確認等等。搖桿線路實物如圖8 所示。搖桿:接5V 的電壓,搖桿還有三個輸入口,分別是X 軸、Y 軸和Button,這3 個口分別接入到GPIO 的33 口、25 口和26 口。
圖8 搖桿線路實物圖
本文主要的研究方向是基于VR 的手指動態(tài)識別追蹤智能手套,運行環(huán)境是基于OpenGloves 的SteamVR 驅(qū)動軟件,其原理是根據(jù)VR 場景中各種3D 物體的尺寸,來計算出可限制手指移動的程度,采用VivetTracker2.0 實現(xiàn)了對手掌動作姿態(tài)捕捉與力反饋。
電腦安裝CP210X 驅(qū)動,安裝驅(qū)動程序后插入設(shè)備操作系統(tǒng)中可以看到一個虛擬的COM 端口(虛擬意味著沒有RS232 接口的串口硬件,但是從軟件角度可以與舊的RS232 端口進行同樣的通信)。實現(xiàn)了硬件和軟件之間數(shù)據(jù)、信息的交互。
利用Arduino IDE,安裝ESP-Servo 標(biāo)準(zhǔn)外設(shè)庫,通過Servo 庫可以用Arduinl 控制舵機(伺服電機)。Servo庫允許大多數(shù)Arduino 開發(fā)板,同時控制12 個舵機。此作品舵機有3 條引線,它們分別是電源線,接地線和信號線。電源線是紅色的。使用Arduino 開發(fā)板的5V 引腳為舵機供電。接地線是黑色的,其連接在Arduino 開發(fā)板的接地引腳上的。信號線是桔紅色,信號線連接在Arduino 開發(fā)板的數(shù)字輸入輸出引腳上。
安裝Lucidgloves-firmware,是固化在硬件中的軟件,它存儲著計算機系統(tǒng)中硬件設(shè)備最基本的參數(shù),為系統(tǒng)提供最底層、最直接的硬件控制。對于任何嵌入式系統(tǒng),固件都是一個重要的部分,因為在一個新的平臺上,固件通常是被移植和執(zhí)行的第一段代碼。對不同的系統(tǒng),固件有很大差異,它可以是一個完整的嵌入式系統(tǒng),也可以只是一段簡單的初始化和引導(dǎo)加載程序。在Arduino 中對ESP32 開發(fā)板模塊、電位器模塊、藍牙模塊、搖桿進行了相應(yīng)的參數(shù)設(shè)置。
其中定位器定位流程圖如圖9 所示。
圖9 定位器定位流程圖
首先,通過ESP-32 持續(xù)監(jiān)測電位器輸出口電壓信號,當(dāng)手指彎曲帶動線繩伸縮拉動電位器轉(zhuǎn)動,使得電位器轉(zhuǎn)動導(dǎo)致阻值發(fā)生變化,電位器輸出電壓信號發(fā)生變化,ESP-32 通過藍牙將電壓變化數(shù)值發(fā)送至上位機,通過電壓變化數(shù)值計算手指彎曲程度,最后將手指彎曲程度輸入至可視化界面。流程如圖10 所示。
圖10 手指動作捕捉流程圖
首先當(dāng)我們在虛擬交互界面抓取物體時,上位機獲取到抓取到物體的形態(tài),解算出可以模擬物體觸感的拉繩長度舵機限位角度,通過藍牙發(fā)送至ESP-32 單片機,單片機將轉(zhuǎn)動角度發(fā)送給舵機,舵機進行轉(zhuǎn)動限制拉繩長度,模擬抓取物體的觸感。流程如圖11 所示。
圖11 力反饋功能流程圖
如圖12 所示,手套和上位機連接之后,利用Arduino 1.8.12 軟件測試手套可以查看到數(shù)據(jù)有規(guī)律的變化,證明手套可以進行正常伸縮移動操作且進行了成功的燒錄。
圖12 測試結(jié)果圖
本次作品支持手勢追蹤、無線設(shè)計、兼容Quest 2(SteamVR/PC VR 版本)。目前,此作品力反饋功能已經(jīng)兼容多款SteamVR 游戲,未來,我們可以使用VR 技術(shù)對危險物品進行操作減少對人類的傷害。由于時間緊迫,以后我還將繼續(xù)縮減體積(采用霍爾電流傳感器來追蹤手勢),并追蹤五指的左右移動。計劃設(shè)計一種不需要3D 打印工具的VR 體感手套。在之后的時間中,我們會進一步研究和探索溫度模擬、電刺激等其他體感集成于一起的VR 手套。