朱穎,楊荻鎧,邴林園,師平,溫德軍
(廣東工業(yè)大學華立學院,廣東廣州 511325)
隨著信息技術(shù)的飛速發(fā)展,人機交互由以機器為中心向以人為中心發(fā)展,即機器要協(xié)同用戶進行交互[1]。數(shù)據(jù)手套作為一種新型的輸入設備被廣泛應用于眾多的人機交互系統(tǒng)中[2]。數(shù)據(jù)手套能夠捕捉手部姿態(tài),是提高虛擬現(xiàn)實技術(shù)操作真實性的重要手段[3]。國內(nèi)外對數(shù)據(jù)手套進行了大量研制[4-5],如Immersion 公司的CyberGlove 和南非的5DT Glove、國內(nèi)的CAS-Glove 和Wise Glove[6],國內(nèi)學者也對數(shù)據(jù)手套做了一些應用和算法研究[7-8]。隨著機械控制技術(shù)的發(fā)展,機械手作為一種機械與電子元件控制一體的具有抓取和移動物體功能的新型裝置,很好地幫助人們完成繁復的勞動工作,已在眾多領域得到了廣泛應用,但許多復雜環(huán)境的工作仍需技術(shù)人員親自操作,如礦山作業(yè)等。文中提出一種基于數(shù)據(jù)手套體感控制機械手作業(yè)的方案來解決該問題。通過數(shù)據(jù)手套的傳感器獲取手指伸展、彎曲,手背彎拱、手腕位姿等狀態(tài)信息傳給主控器,進而控制機械手對物體進行抓取、移動、裝配,對設備進行操縱、控制等動作。
基于數(shù)據(jù)手套的機械手體感控制系統(tǒng)通過數(shù)據(jù)手套上的傳感器來采集佩戴者的手部運動變化信息,采集到的信息經(jīng)過主控器ATmega2560 修正處理后進行手部姿態(tài)信息的識別,將識別結(jié)果通過HC-05 藍牙模塊實現(xiàn)與從控器的無線通訊,從控器結(jié)合PID 算法控制手指電機與手腕舵機動作,同時采集機械手位姿信息反饋給從控器,使機械手與數(shù)據(jù)手套佩戴者手部姿態(tài)同步。
基于數(shù)據(jù)手套的機械手控制系統(tǒng)主要包含硬件系統(tǒng)與軟件系統(tǒng)。硬件系統(tǒng)包含數(shù)據(jù)手套設計與機械手設計,主要包含主控制器ATmega2560、Flex 彎曲傳感器、微電機系統(tǒng)(Micro Electro Mechanical System,MEMS)姿態(tài)傳感器、無線模塊、手指電機和手腕舵機。硬件系統(tǒng)框圖如圖1 所示。
數(shù)據(jù)手套根據(jù)其工作原理的不同主要有圖像數(shù)據(jù)手套、機械數(shù)據(jù)手套、光纖數(shù)據(jù)手套和微慣性傳感器數(shù)據(jù)手套[9]。圖像數(shù)據(jù)手套對環(huán)境要求較高,特別是受光照影響大;機械數(shù)據(jù)手套笨重,操作攜帶不方便;光纖數(shù)據(jù)手套壽命短,易疲勞;微慣性傳感器數(shù)據(jù)手套輕便耐用,對環(huán)境要求低,易更換,但所需傳感器數(shù)量多[10],改進數(shù)據(jù)處理算法可減少傳感器數(shù)量[11]。文中設計的數(shù)據(jù)手套為傳感器數(shù)據(jù)手套,共采用6個微慣性傳感器。
文中數(shù)據(jù)手套采用ATmega2560 作為主控制器,由Flex4.5 單向薄膜彎曲度傳感器和MEMS 姿態(tài)傳感器進行數(shù)據(jù)采集。數(shù)據(jù)手套的彎曲傳感器與姿態(tài)傳感器的分布如圖2 所示,S1~S5 均為彎曲傳感器,分布在5 個手指頭上,并在關(guān)節(jié)處固定,用于采集各手指彎曲信息;W1 為姿態(tài)傳感器,位于手背,用于獲取手掌拱度與手腕動作信息。佩戴者戴上手套后,可以通過檢測手部運動提供反饋[12]。
圖2 數(shù)據(jù)手套
ATmega2560 是一個基于Microchip 的8 位AVR RISC 高性能、低功耗微控制器,最小系統(tǒng)板上擁有54 個數(shù)字輸入/輸出引腳,16 個模擬輸入分辨率為10位,為數(shù)據(jù)采集和處理提供良好環(huán)境。
Flex4.5 單向薄膜彎曲傳感器為四層薄膜結(jié)構(gòu),最外兩層為傳感器增加強度和彈性,中間層由兩層電阻薄膜構(gòu)成。當傳感器彎曲時,上下電阻薄膜相互滑動引起阻值變化,電阻不同使得輸出電壓發(fā)生變化。Flex4.5 通過不同的電壓信號獲取手指彎曲信息,其工作原理如圖3 所示。ATmega2560 將模擬量電壓信號轉(zhuǎn)化為數(shù)字量進行讀取,5 V(其最大值)時讀數(shù)為1 023,0 V 時讀數(shù)為0。
圖3 彎曲傳感器工作原理
測試彎曲傳感器在平坦舒展狀態(tài)下電阻約為5 Ω,彎曲至90°時電阻約為50 kΩ,將其與22 kΩ電阻串聯(lián)可獲取線性模擬值,因此將其與22 kΩ電阻串聯(lián)連接至ATmega2560 模擬腳即可通過讀取電壓判斷手指彎曲狀態(tài),可以較為準確地得出佩戴者手指彎曲角度。
微電機系統(tǒng)(MEMS)慣性傳感器在移動智能設備上廣泛應用[13]。MEMS 內(nèi)部有一個連接在彈簧上的質(zhì)量塊,彈簧被限制在一個方向移動,并且有固定的極板。當加速度在特定方向作用時,質(zhì)量塊移動,極板與質(zhì)量塊之間的電容發(fā)生變化,將電容的這種變化處理映射得到加速度值。通過加速度與速度位移的關(guān)系能測量某段時間的相對速度和位移,使得手掌的姿態(tài)信息可以通過獲取傳感器的模擬信號來確定。
機械手設計包括結(jié)構(gòu)設計和控制電路設計兩部分。機械結(jié)構(gòu)仿照成年人右手骨骼進行設計,控制電路主要包括控制器、手指拉線電機、手腕舵機及姿態(tài)傳感器組成。
成年人手骨主要由節(jié)指骨和關(guān)節(jié)組成,關(guān)節(jié)分為手指關(guān)節(jié)和手腕關(guān)節(jié),如圖4 所示。
圖4 人類右手骨骼結(jié)構(gòu)
不同關(guān)節(jié)間左右側(cè)擺和彎曲決定了機械手的姿態(tài),為了更好地仿人手動作,該機械手共設有17 個自由度:大拇指有2 個自由度,其余四指各有3 個自由度;手掌與無名指、小指有2 個側(cè)向自由度,手掌與大拇指有一個自由度。機械手結(jié)構(gòu)如圖5 所示。為了實現(xiàn)正常抓握功能,手掌分別設計了大拇指、無名指和小拇指的轉(zhuǎn)向軸承。無名指和小拇指轉(zhuǎn)向軸承可使其自由移動到手掌內(nèi)側(cè),以實現(xiàn)向內(nèi)的錐形運動,使抓握動作更加自然。
圖5 機械手結(jié)構(gòu)
機械手控制電路使用ATmega2560 作為從控制器,通過IO 口對機械手的7 個電機進行PWM 控制,以實現(xiàn)機械手與人手姿態(tài)的同步動作,其中5 個拉線電機控制手指指節(jié)的彎曲伸展運動,2 個舵機旋轉(zhuǎn)控制手掌的姿態(tài),并在機械手上設置MEMS 姿態(tài)傳感器,用于實時采集機械手手掌的姿態(tài),并反饋給控制器,使機械手動作更加精準。
軟件設計主要包括數(shù)據(jù)采集模塊、手姿態(tài)數(shù)據(jù)修正和機械手PID 控制三大模塊。數(shù)據(jù)手套通過采集數(shù)據(jù)獲取手部姿態(tài)的信息,將所收集到的手指信息通過數(shù)據(jù)修正和濾波處理后,映射為PWM 的占空比來控制拉線電機的松緊程度,手掌部分則通過閉環(huán)PID 計算出PWM 占空比控制舵機轉(zhuǎn)動來控制姿態(tài)。控制主流程圖如圖6 所示。
圖6 主流程圖
手勢識別通過使用特定的硬件設備來捕獲佩戴者手部動作,并將捕獲到的手部特征轉(zhuǎn)換為信號量,傳遞給計算機3D 模型手完成驅(qū)動操作。其實質(zhì)是識別佩戴者做出的手部動作和操作意圖,并形成相應操作命令。
手勢識別過程包括以下步驟:運動捕獲、數(shù)據(jù)修正和手勢識別。
數(shù)據(jù)手套采集的手部運動信息包括5 個運動關(guān)節(jié)(食指、中指、無名指、小指、拇指)和2 個加速度變化量(X,Y)信息。手部運動信息如圖7 所示。
圖7 手部運動信息
數(shù)據(jù)手套通常需要不同人員佩戴,不同佩戴人員手的大小和關(guān)節(jié)之間的長度不同[14]。數(shù)據(jù)手套輸出數(shù)據(jù)存在一定的噪聲和波動,直接使用原始數(shù)據(jù)計算機械手關(guān)節(jié)角將造成機械手運動控制的不穩(wěn)定。人不同手指的關(guān)節(jié)有差異,運動也有差異,而關(guān)節(jié)自身有一定的活動范圍。如果將收集的數(shù)據(jù)直接用于操作命令,則會出現(xiàn)與佩戴者手部姿勢不同步的問題[15],因此必須對原始數(shù)據(jù)進行濾波消抖去噪處理來獲取平滑、穩(wěn)定的關(guān)節(jié)角信號[16]。
為了保持數(shù)據(jù)手套的通用性與精確性,文中對采集的數(shù)據(jù)進行歸一化、限幅消抖和平滑濾波等處理。
首先,求手指節(jié)長度的平均長度,將手指節(jié)長度歸一化為平均長度,即使手指節(jié)長度發(fā)生改變也不會造成關(guān)節(jié)間的夾角變化。
然后,對歸一化后的數(shù)據(jù)進行限幅消抖,主要目的是消除大幅度數(shù)據(jù)波動。對各運動節(jié)數(shù)據(jù)進行限幅約束,數(shù)據(jù)修正如表1 所示。假設當前手套彎曲度傳感器測量值為c,若c∈(a,b),則修正后彎曲度w=c-d;若c>b,則彎曲度w=b-d;若c<a,則彎曲度w=ad。約束參數(shù)確保當前c值一直都在約束參數(shù)區(qū)間內(nèi)。
表1 數(shù)據(jù)修正表
下一步將限幅消抖后的數(shù)據(jù)進行平滑濾波,文中采用卡爾曼濾波算法進行平滑去噪??柭鼮V波算法是利用線性系統(tǒng)狀態(tài)方程來進行平滑去噪[17]的,可以消除微小范圍內(nèi)的波動,使計算出的機械手彎曲角更加穩(wěn)定、平滑[18-19]。
假設某一個手指的活動角度是M,修正參數(shù)為d,則當前的彎曲角度N可以通過式(1)得到:
通過該關(guān)系可以定義每個手指的姿態(tài),完成手部姿態(tài)的同步。
PID 控制廣泛應用在機械設備和電子設備控制中。PID 控制通過將實測值與給定值進行比較,從而計算出偏差量e(t),調(diào)節(jié)Kp、Ki、Kd使其誤差變小,同時兼顧調(diào)節(jié)時間和超調(diào)量等系統(tǒng)動態(tài)參數(shù)。數(shù)字PID 包括位置PID 算法、速度PID 算法和增量式PID算法。PID 算法由3 部分組成,分別為比例、積分和微分,如圖8 所示。
圖8 PID算法
為了使得機械手的運動更平滑,文中加入位置PID 控制算法對手腕舵機進行調(diào)節(jié)。位置PID 算法可以優(yōu)化判斷當前系統(tǒng)的實際位置的響應性、穩(wěn)定度和識別度,如式(2)所示。
其中,Kp是比例系數(shù),Ki是積分系數(shù),Kd是微分系數(shù),當前誤差是上次誤差。位置PID 算法為當前系統(tǒng)實際位置與預期位置的偏差。比例部分只與當前偏差有關(guān),積分部分則是系統(tǒng)過去所有偏差的累積。文中對輸出進行限幅控制,以防輸出不變而積分項繼續(xù)累加造成積分飽和過深。
系統(tǒng)采用PID 控制主要是為了消除靜態(tài)誤差,提高系統(tǒng)控制精度。調(diào)節(jié)積分參數(shù)可消除靜態(tài)誤差,在消除靜態(tài)誤差的同時也增加了系統(tǒng)的震蕩次數(shù),使響應變得緩慢,加入微分、比例兩參數(shù)來減少系統(tǒng)震蕩,加快響應速度。其控制輸出曲線效果如圖9 灰色曲線所示,黑色曲線為沒有進行PID 控制的響應曲線。
圖9 PID控制輸出曲線對比圖
采用文中研制的數(shù)據(jù)手套、手部姿態(tài)算法與機械手控制算法,設計仿真試驗進行驗證。首先搭建仿真機械手控制系統(tǒng),實現(xiàn)對機械手的體感控制。
實驗平臺包含操作者、數(shù)據(jù)手套、數(shù)據(jù)處理平臺和仿真平臺。
仿真部分采用Matlab/Simulink 環(huán)境進行實驗。首先用SolidWorks 對機械手進行建模,然后通過SimMechanics Link 將機械手3D 模型轉(zhuǎn)移到Matlab中并轉(zhuǎn)換為Simulink 模型,自動生成body blocks 和joint blocks,如圖10 所示。
圖10 Simulink環(huán)境中機械手3D模型
然后在Simulink 中建立模型控制系統(tǒng),將3D 模型手的控制分成6 個子系統(tǒng):模擬量輸入子系統(tǒng)、數(shù)據(jù)修正子系統(tǒng)、PID 控制子系統(tǒng)、關(guān)節(jié)驅(qū)動子系統(tǒng)、3D 模型子系統(tǒng)和傳感器子系統(tǒng)。
在仿真控制模式下,操作者佩戴數(shù)據(jù)手套控制仿真機械手從完全伸展狀態(tài)運動到食指按鍵動作,并保持該動作,由此實現(xiàn)仿人機械手對設備的操作,如圖11、12 所示,不同工作狀態(tài)下的手指角度彎曲角度如表2 所示。
圖11 舒展狀態(tài)
圖12 食指按鍵狀態(tài)
表2 不同工作狀態(tài)下的手指角度
然后再回到伸展狀態(tài)模擬抓取工件并握緊,實驗效果與角度參數(shù)如圖13 所示。
圖13 握緊狀態(tài)
由實驗結(jié)果可以看出,數(shù)據(jù)手套很好地達到了控制機械手的預期效果,完成簡單的同步作業(yè)操作。要完成更加精細的動作還需對機械手進一步優(yōu)化。
機械手作業(yè)動作主要包括抓握、松開、食指按等動作,文中仿人手設計了機械手,經(jīng)仿真驗證,可同步完成機械手基本的作業(yè)動作。文中設計了簡單便攜的數(shù)據(jù)手套,用于采集人手姿態(tài)信息。針對不同操作者節(jié)骨的差異性,對指骨長度進行了歸一化處理;針對數(shù)據(jù)干擾噪聲以及不同手指關(guān)節(jié)的差異性,提出了限幅卡爾曼濾波算法。實驗證明,該方法能有效去抖濾波,使機械手彎曲角更加穩(wěn)定、平滑。
針對機械手動作的不穩(wěn)定性,使用了位置PID來消除誤差,為避免誤差累計對輸出進行了限幅處理。實驗驗證,該方法能有效消除靜態(tài)誤差、消除振蕩、快速響應,使機械手動作更穩(wěn)定、平滑和流暢,能達到人手控制機械手同步動作的效果。