吳海全 姜德軍 張恩勤


摘要:本文提出了一套三自由度的VR/AR遙控器系統設計,其具有高靈敏度、高精確度和低功耗的特點,實際使用效果非常好,已經批量生產
[關鍵詞]遙控器低功耗藍牙三自由度虛擬現實增強虛擬現實
過去幾年VR/AR在教育、醫療、設計和制造等領域得到廣泛應用。以教育市場為例,IDC市場調查報告顯示,2018年國內教育市場VR/AR出貨量份額將占整體市場接近7.0%。在生產領域VR/AR也已經成為的重要工具之一,IDC預計到2024年,55%的中國大中型企業將為部分員工部署VR/AR硬件,其關鍵驅動因素是VR/AR可以有效提升工作效率。隨著相關政策的推動,VR/AR還將在更多細分垂直領域得到快速發展。各種行業應用的發展同時也對VR/AR的最重要人機交互接口遙控器提出了更高要求。如何準確實時地還原遙控器控制信息來提升用戶體驗是遙控器設計的一個難點。
本文從硬件設計、軟件系統架構、傳感器校驗和算法優化調整等多角度研究分析,設計實現速度更快,精度更高,功耗更低的三自由度VR/AR遙控器。
1硬件設計
硬件整體設計如圖1所示,核心器件包含無線微處理器、九軸傳感器(磁力計、加速計和陀螺儀)、觸摸微處理芯片、充電管理芯片、按鍵和LED指示燈。
作為核心主控的無線微處理器選用了Nordic51822(以下簡稱主控)。Nordic51822是一顆基于ARMCorte一M0的微處理器,支持單模BLE通信,并內部集成Flash。其通過I2C和GPIO連接諸多外設,對外設和傳感器數據進行采樣并對采樣數據進行姿態融合處理,同時承擔著通過BLE連接主機。16MHz和32.768KHz的兩顆晶振分別為系統在工作和休眠模式(Sleep)下提供主時鐘。
姿態控制是VR/AR遙控器的核心功能之一,設計采用兩顆MEMS傳感器提供姿態原始數據。遙控器不同于手機等PCB空間較小的設備,可以選擇兩個分離的MEMS器件,這樣件經濟性更好。LSM6DS3集成了加速計和陀螺儀,通過I2C連接到主控I2C1端口,同時必須將INT1連接到主控的一個GPIO作為中斷源,因為中斷模式比輪詢模式具有及時性更好,功耗更低的優點,其缺點是軟件復雜度較高。
區別于目前不少三自由度遙控器的六軸設計,為了控制精度更高,本設計采用九軸設計,附加使用磁力計,磁力計能有效校準陀螺儀的長時間使用時的數據漂移。磁力計LIS3MDL是通過I2C連接到主控I2C1端口,同時也需要將DRDY和INT管腳連接到主控的兩個GPIO上用于中斷響應和數據狀態監測。
觸摸芯片IQS525通過I2C連接到主控I2C2端口上,NRST和DRY連接到主控的兩個GPIO腳上。觸摸芯片芯片需要燒寫固件和調試靈敏度,以上的四個管腳加上1.8vVDDHI和GND需要留測試點(TestPoint)或者燒錄接口。
充電芯片PG和CHG都需要同時接主控GPIO,用于檢測USB充電口是否插入和是否處于充電狀態。電量檢測采用兩顆分壓電阻直接對鋰電池VBAT進行分壓,分壓后接入主控的AIO,主控內部的ADC會定時對AIO端口采樣,通過換算即可的到當前電池電源,在結合電池放電曲線由軟件得出電量百分比。
盡管傳感器芯片和觸摸控制芯片都有低功耗模式,但是這些芯片本身不是遙控器系統的中斷喚醒源,所以我們可以進一步優化設計,通過一個GPIO控制的開關電路直接控制所有外設的供電,這樣在待機模式下的功耗進一步降低。如圖2通過主控的一個GPIO來控制CTP_PWREN可以控制AVDD是否導通。
金屬影響磁力線的走向,設計需要避免磁力計附件有大塊金屬,磁力計還需要避免布局在電源線附近和邏輯主芯片板對面。機械應力會影響陀螺儀和加速計的準確度,其位置必須要遠離按鍵、螺絲、USB插口,需要固定,避免布局在FPC上。工藝上也比必須考慮,例如膠水會熱脹冷縮改變機械應力,生成中不能超聲波焊接,超聲波清洗,超聲波檢測虛焊等。傳感器對溫度非常敏感,設計上需要遠離發熱器件,從而降低溫飄概率。觸控板PCB背面需要網狀鋪銅,避免背面器件的工作引起觸控誤報操作。
2軟件設計
2.1軟件框架設計
軟件系統的主要功能是驅動各種外設進行數據采集,并將采集的數據融合處理后發給被控制的VR/AR設備。
整體軟件分為三層,最底層為操作系統(RTOS)和設備驅動層,RTOS由芯片廠商提供,設備驅動層主要是實現九軸傳感器驅動、觸摸板驅動、基于PWM的LED驅動和系統休眠喚醒管理等。
中間層為數據服務和硬件抽象層,主要實現定制的藍牙通信協議、陀螺儀高通濾波算法、磁力計數據校準應用算法和九軸姿態融合算法等。
最上層為應用層,主要實現各種功能模塊如開機、低壓關機、連接和數據匯報等,采用基于狀態機遷移的設計模式。
2.2優化設計要點
遙控器控制數據從傳感器到VR/AR歷經數據采集、數據緩存、數據預處理、數據融合和數據傳輸這樣一個很長的鏈路,為了提高系統的靈敏度和精確度需要軟件多方面的優化設計。
最終數據精度的決定因素首先來自原始數據的采樣精度。精度來自兩個方面,一是數據的位寬,另外一個是傳感器的量程。目前主流九軸傳感器的位寬皆為16位,基本不可以設置。在固定位寬的情況下,量程越大其數據精度越低,但是并非量程低了就好,量程低了可能會有數據溢出。以加速計為例,結合實際測試大多人的使用習慣,選擇-4G到+4G的量程效果比較理想。
各種傳感器的采樣率也是各不相同,例如磁力計普遍頻率較低一般為80Hz,陀螺儀和加速計可以工作到8KHz。這樣不同的采樣頻率會帶來數據的延時不同,也就是用于計算當前狀態的數值可能是傳感器在不同的時間采集的。這也是影響用戶體驗的一個非常重要的因素。我們需要在理解姿態融合算計的基礎之上對數據做預處理,例如陀螺儀數據是主要是對時間積分用于短時間的內的移動偵測,長時間時會有漂移,可以采樣高采樣率,首先通過零偏校正,再通過高通濾波后,然后累計平均,取最新的一次數據傳入姿態融合算法同時清除所有緩存。加速計和磁力計的數據更多用于決定運動的最終位置,所以他們的采樣點需要盡量晚,盡量接近數據被使用的時間點。
最接近被使用的時間點如何選擇呢,Nordic51822支持一種RadioNotfication的中斷,通過如下示意代碼的配置,我們可以在BLE無線啟動接受主機數據包前得一個中斷,軟件響應中斷,然后在中斷響應函數內采集和處理數據。
voidinit_radioIrq(void){
sd_nvic_ClearPendingIRQ(SWI1_IRQn);
sd_nvic_SetPriority(SWI1_IRQn,3);
sd_nvic_EnableIRQ(SWI1_IRQn);
sd_radio_notification_cfg_set(NRF_
RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE,
NRF_RADIO_NOTIFICATION_DISTANCE800US);
voidRADIO_NOTIFICATION_IRQHandler(void){
app_sched_event_put(NULL,8,radio_scheduler_event_handler);
最后姿態融合算法生成的數據附加上序列號、時間戳和按鍵狀態等信息一起組成數據包,通過GATT發送給VR/AR主機。BLE的通訊特點決定了只有當主機(Master)詢問從設備(Slave)時,從設備才能發送數據包。當主從連接建立后Master以固定的連接間隔(ConnectionInterval)詢問Slave,所以盡量考慮使用最小的連接間隔。Apple設備的最小連接間隔為20ms,而安卓系統可以為7.5ms。藍牙4.2以前的版本不支持長數據包(DLE),超過GTAAMTU(MTU=23)的數據將會被拆分成多個包,為了提高傳輸速度降低延時并兼容4.0/4.1版本我們設計每個數據包大小為20字節,這是不分包情況下BLE允許的最大有效數據長度。
2.3系統狀態機
應用層定義如圖3更多細分的狀態,更加有助狀態控制從而降低工作功耗。例如傳感器不在系統初始化進行初始化,也不在藍牙建立連接時初始化,而是選擇在主機系統訂閱姿態數據的最后時刻才上電并初始化傳感器。對應地當主機斷開連接也是首先傳感器。
當設備打開但是沒有主機來連接時,快速廣播、慢速廣播和系統休眠這三種狀態,它們的功耗由高到低,連接延時(對應著用戶體驗)由快到慢,通過快速廣播、慢速廣播和系統休眠三種狀態的切換有效平衡待機功耗和用戶體驗。
3遙控器系統傳感器校準
對于有九軸傳感器的3DOF遙控器而言,MEMS傳感器的個體差異比較大,傳感器校準也十分重要。
陀螺儀可以采用靜態校準技術,遙控器安裝完成后,按組合鍵進入校準模式(CalibrationMode),然后水平靜態放置一段時間,軟件自動采集500至1000組數據計算出陀螺儀的零飄。
手機為代表的移動設備,磁力計校準一般采用空中畫8字,得到的數據直接在移動設備里面做橢圓擬合,但是這種方法其算法比較復雜,在遙控器這種資源有限的小系統里面無法實現。我們選擇設計一個獨立的磁力計在線校驗模式,這種模式下BLE將直接輸出磁力計原始數據,通過一個PC端應用程序讀取這些數據并在PC環境下做校準,校準后的矩陣再通過BLE回寫到遙控器的Flash,這樣出廠的每個遙控器都可以工作在其最佳狀態。
4結語
本系統設計之初就從硬件、軟件和算法等角度考慮提高精度和降低延時,實際配合VR/AR系統測試效果很好,具有延時小、動作還原準確度高的特點。功耗測試也非常出色,一次充滿電情況下可以連續工作1周或者待機12個月以上。
參考文獻
[1]Madgwick S 0 H,Harrison A J L,Vaidyanathan R. Estimat ion ofIMU and MARG orientation using agradient descent algorithm[C]//Rehabilitation Robotics (ICORR),2011 IEEE International Conferenceon. IEEE,2011: 1-7.
[2]禹發來,楊云飛,基于藍牙通信和GSM的單片機智能家居系統設計[J].科技廣場,2016(03):185-188.