洪 鋒, 劉茹茹, 孫 佐, 楊莫非
(1.池州學(xué)院 機電工程學(xué)院,安徽 池州 247000;2 合肥工業(yè)大學(xué) 計算機與信息學(xué)院,安徽 合肥 230063)
隨著智能家居等一系列借助網(wǎng)絡(luò)連接的智能生態(tài)系統(tǒng)逐漸成型,智能手套設(shè)備作為離人最近的智能設(shè)備,在擔負起用戶數(shù)據(jù)收集的任務(wù)同時,更多的將會扮演一個控制終端的角色。目前來看智能手套無論是功能技術(shù)層面,還是用戶覆蓋都處于較初級的階段,未來智能生態(tài)系統(tǒng)的搭建還有很長的路要走。智能手套是以手套為載體,將智能主控核心嵌入手套內(nèi)部,實現(xiàn)各種功能。國內(nèi)的智能手套的產(chǎn)品還不多,大多數(shù)為加熱和材料上的升級,并不具備真正意義上的智能[1~4]。智能手套可以方便人們生活,提高人們工作效率,還可以滿足特定人群需求,例如騎行者可以穿戴具備智能轉(zhuǎn)向燈的手套,盲人可以穿戴測距手套達到避讓效果。
國外的一些平臺型公司正在打造行業(yè)生態(tài)系統(tǒng),國內(nèi)百度、阿里巴巴和騰訊利用其平臺型公司的優(yōu)勢地位,著手構(gòu)建數(shù)據(jù)接入、云平臺打造等業(yè)務(wù)模塊[5,6]。在客觀上對智能穿戴設(shè)備的生態(tài)系統(tǒng)的構(gòu)建起著積極的作用。因此,智能手環(huán)項目雖然還面臨著許多現(xiàn)實的困難,但本身的研究和與之相適應(yīng)的服務(wù)項目的市場前景還是相當樂觀的。
本設(shè)計實現(xiàn)了紅外測距、心率監(jiān)測、空中鼠標、智能轉(zhuǎn)向4種功能,并預(yù)留了USB接口以便后續(xù)升級。其中空中鼠標功能利用了四軸飛行器姿態(tài)解算方法,使得操控更加線性,其與當前的虛擬現(xiàn)實操控有著相似的原理[7]。
整個智能手套包括發(fā)射端和接收端,接收端主要為配合手套實現(xiàn)空中鼠標和數(shù)據(jù)傳輸以及調(diào)試功能。手套的背面嵌入智能核心,具體運行流程如下所示。
圖1 智能手套運行示意
1.1.1 智能轉(zhuǎn)向
當用戶選擇此功能時,手套內(nèi)部電路選擇與MPU6050模塊通信,STM32主控作為運算處理,主控將MPU6050的原始數(shù)據(jù)進行滑動中值濾波,并對加速度和陀螺儀進行閾值判斷,當手傾斜一定角度時,加速度計和陀螺儀的數(shù)值會超過程序設(shè)置最大值MAX,這時STM32會控制發(fā)光二級管(light emitting diode,LED)的引腳使得LED亮;當揮動手臂,陀螺儀的數(shù)值會劇烈變化,此時程序判斷為揮手狀態(tài),此時連接LED的引腳會產(chǎn)生一段脈寬調(diào)制(pulse width modulation,PWM)波使得LED閃爍,從而達到警示的作用[8]。
1.1.2 紅外測距
選擇夏普紅外測距傳感器,將其聚焦部分拆去,檢測范圍變成扇形范圍,只需設(shè)置單片機的引腳讀取狀態(tài)即可,當檢測到物體時,STM32會控制手套內(nèi)部的蜂鳴器,使手套發(fā)出警報以達到提示的作用。
1.1.3 空中鼠標
公務(wù)員培訓(xùn)的變革與創(chuàng)新是一個系統(tǒng)工程,根據(jù)“具身認知”理論公務(wù)培訓(xùn)本質(zhì)上是涉身的、情境的、生成的教學(xué)活動。為了達到這一目標,我們認為,公務(wù)員培訓(xùn)變革和創(chuàng)新的實踐路徑如下。
空中鼠標功能是本設(shè)計最難也是核心的部分,需要大量的算法實現(xiàn)。程序先讀取MPU6050六軸傳感器的數(shù)據(jù),將六軸傳感器的數(shù)據(jù)進行姿態(tài)融合,轉(zhuǎn)換為四元數(shù),再將四元數(shù)轉(zhuǎn)為歐拉角,該轉(zhuǎn)換是四軸飛行器的核心算法,設(shè)計將其移植到手套上來,最后再將歐拉角乘上三角函數(shù)得到坐標點位置,將數(shù)據(jù)打包發(fā)送到接收端,接收端通過通用串行總線(universal serial bus,USB)傳送到上位機電腦來控制鼠標[5]。設(shè)計相對于其他空中鼠標僅采用陀螺儀數(shù)據(jù)作為移動坐標具有良好的線性優(yōu)點,過渡更加平滑,可操作性更好,該功能還可以全程操控演示文稿(power point,PPT)翻頁、勾畫,也可以與個人電腦(personal computer,PC)連接體驗遠程游戲操作。
1.1.4 心率監(jiān)測
手套的心率監(jiān)測是必備功能,設(shè)計采用較為成熟的Pulse Sensor心率傳感器,STM32單片機只需要設(shè)置一個引腳讀取傳感器的碼,利用STM32的定時器設(shè)計10 ms/次中斷AD讀取1次傳感器的狀態(tài),當手放于傳感器時開始計時,當手離開時,計時結(jié)束,單片機此時內(nèi)部記錄波峰的次數(shù),除以時間即為心率,但實際代碼量較多,需要初始化AD、定時器、通用輸入輸出(general purpose input /output,GPIO)中斷等。
在四元數(shù)和歐拉角之間的轉(zhuǎn)換和矩陣相比較,具有很多的優(yōu)點,四元數(shù)的定義如下
q=[ωxyz]T
(1)
|q|2=ω2+x2+y2+z2
(2)
通過旋轉(zhuǎn)軸和繞該軸旋轉(zhuǎn)的角度可以構(gòu)造一個四元數(shù)
ω=cos(α/2),x=sin(α/2)cosβx,y=sin(α/2)cosβy,
z=sin(α/2)cosβz
(3)
式中α為繞旋轉(zhuǎn)軸旋轉(zhuǎn)的角度,cosβx,cosβy,cosβz為旋轉(zhuǎn)軸在x,y,z方向的分量。通過歐拉角到四元數(shù)的轉(zhuǎn)換公式可以表達如下[8]
同時在四元數(shù)到歐拉角的轉(zhuǎn)換為
函數(shù)arctan和arcsin的計算結(jié)果是[-π/2,π/2],這并不能覆蓋所有朝向,對于θ角[-π/2,π/2]的取值范圍,是180°,而繞軸旋轉(zhuǎn)時范圍是360°,并不滿足要求,因此,需要用atan2來代替arctan。
本文主要采用的核心算法是最先進的高數(shù)四元數(shù)算法實現(xiàn)無線體感鼠標功能,與虛擬現(xiàn)實(virtual reality,VR)設(shè)備相結(jié)合,實現(xiàn)娛樂辦公雙重功能。現(xiàn)已開發(fā)出的智能手套有騎行手套、避障手套、健康手套、空鼠手套,該產(chǎn)品的實物圖如圖2所示。
圖2 智能手套的實物功能實現(xiàn)示意
設(shè)計電路圖時考慮到有些傳感器大多為模塊,由于設(shè)計者能力和器材有限,有些功能實現(xiàn)的電路部分采用預(yù)留針腳和模塊拼接實現(xiàn)。
將六軸傳感器MPU6050,運用在設(shè)計的智能手套上,六軸傳感器的原始數(shù)據(jù)加速度和陀螺儀數(shù)據(jù)如圖3所示[9]。
圖3 MPU6050六軸傳感器的運行數(shù)據(jù)
運行時通過上位機顯示數(shù)據(jù)(用了四軸飛行器的上位機查看數(shù)據(jù),可以觀察MPU6050原始數(shù)據(jù)經(jīng)過姿態(tài)算法后的結(jié)果。結(jié)果顯示在界面PIT,ROL,YAW對應(yīng)俯仰角、橫滾角、偏航角等,這個角度乘以三角函數(shù)sin,cos得到的數(shù)據(jù)發(fā)送到接收端,接收端將數(shù)據(jù)傳給鼠標就可以操控鼠標。
通過仿真運行軌跡和跟蹤軌跡、觀測角度和實測角度的結(jié)果說明,在初始狀態(tài)效果較差,原因復(fù)雜多樣,經(jīng)過多次迭代之后效果基本已經(jīng)達到預(yù)期效果。如圖4、圖5所示。
圖4 誤差比較
圖5 運行時間內(nèi)真實值和估計值之間的關(guān)系仿真
相對初始初度較低的情況下,運行相對較穩(wěn)定,運行的實際角度和軌跡誤差也相對較小。
上位機接收的數(shù)據(jù)格式有規(guī)定的標準形式,本文規(guī)定的格式是以0XAA為幀頭來校驗數(shù)據(jù)在傳輸?shù)倪^程中的數(shù)據(jù)是否合理;距離傳感器和心率傳感器接收的運行數(shù)據(jù),如圖6所示。
圖6 運行數(shù)據(jù)
本文在運行四軸平行算法的基礎(chǔ)上設(shè)計的智能手套其主要功能是能根據(jù)個體需求感受位置和角度的變化,通過仿真結(jié)果顯示運行的軌跡和角度相對實際運行變化不多,能根據(jù)測量結(jié)果達到預(yù)期設(shè)計的目的;同時在最終完成的智能手套的設(shè)計和調(diào)整合適的參數(shù),使體驗更加舒適,所提到功能全部實現(xiàn)。
目前手套的問題還表現(xiàn)在檢測障礙物上,由于是距離傳感器,檢測的方式是通過紅外線發(fā)射和接收檢測障礙物,無法像攝像頭那樣能夠檢測物體的大小、距離等。在空間算法上,暫時沒有加上地磁傳感器,因為在姿態(tài)解算的z軸方向上不受控制,沒有一個對比的參數(shù),導(dǎo)致在z軸方向上逐漸的漂移,反映在鼠標上的現(xiàn)象是一段時間會向右漂移,其解決方法只需要加上地磁傳感器修改解算代碼即可,可通過代碼升級解決。