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