朱穎,楊荻鎧,邴林園,師平,溫德軍
(廣東工業大學華立學院,廣東廣州 511325)
隨著信息技術的飛速發展,人機交互由以機器為中心向以人為中心發展,即機器要協同用戶進行交互[1]。數據手套作為一種新型的輸入設備被廣泛應用于眾多的人機交互系統中[2]。數據手套能夠捕捉手部姿態,是提高虛擬現實技術操作真實性的重要手段[3]。國內外對數據手套進行了大量研制[4-5],如Immersion 公司的CyberGlove 和南非的5DT Glove、國內的CAS-Glove 和Wise Glove[6],國內學者也對數據手套做了一些應用和算法研究[7-8]。隨著機械控制技術的發展,機械手作為一種機械與電子元件控制一體的具有抓取和移動物體功能的新型裝置,很好地幫助人們完成繁復的勞動工作,已在眾多領域得到了廣泛應用,但許多復雜環境的工作仍需技術人員親自操作,如礦山作業等。文中提出一種基于數據手套體感控制機械手作業的方案來解決該問題。通過數據手套的傳感器獲取手指伸展、彎曲,手背彎拱、手腕位姿等狀態信息傳給主控器,進而控制機械手對物體進行抓取、移動、裝配,對設備進行操縱、控制等動作。
基于數據手套的機械手體感控制系統通過數據手套上的傳感器來采集佩戴者的手部運動變化信息,采集到的信息經過主控器ATmega2560 修正處理后進行手部姿態信息的識別,將識別結果通過HC-05 藍牙模塊實現與從控器的無線通訊,從控器結合PID 算法控制手指電機與手腕舵機動作,同時采集機械手位姿信息反饋給從控器,使機械手與數據手套佩戴者手部姿態同步。
基于數據手套的機械手控制系統主要包含硬件系統與軟件系統。硬件系統包含數據手套設計與機械手設計,主要包含主控制器ATmega2560、Flex 彎曲傳感器、微電機系統(Micro Electro Mechanical System,MEMS)姿態傳感器、無線模塊、手指電機和手腕舵機。硬件系統框圖如圖1 所示。
數據手套根據其工作原理的不同主要有圖像數據手套、機械數據手套、光纖數據手套和微慣性傳感器數據手套[9]。圖像數據手套對環境要求較高,特別是受光照影響大;機械數據手套笨重,操作攜帶不方便;光纖數據手套壽命短,易疲勞;微慣性傳感器數據手套輕便耐用,對環境要求低,易更換,但所需傳感器數量多[10],改進數據處理算法可減少傳感器數量[11]。文中設計的數據手套為傳感器數據手套,共采用6個微慣性傳感器。
文中數據手套采用ATmega2560 作為主控制器,由Flex4.5 單向薄膜彎曲度傳感器和MEMS 姿態傳感器進行數據采集。數據手套的彎曲傳感器與姿態傳感器的分布如圖2 所示,S1~S5 均為彎曲傳感器,分布在5 個手指頭上,并在關節處固定,用于采集各手指彎曲信息;W1 為姿態傳感器,位于手背,用于獲取手掌拱度與手腕動作信息。佩戴者戴上手套后,可以通過檢測手部運動提供反饋[12]。

圖2 數據手套
ATmega2560 是一個基于Microchip 的8 位AVR RISC 高性能、低功耗微控制器,最小系統板上擁有54 個數字輸入/輸出引腳,16 個模擬輸入分辨率為10位,為數據采集和處理提供良好環境。
Flex4.5 單向薄膜彎曲傳感器為四層薄膜結構,最外兩層為傳感器增加強度和彈性,中間層由兩層電阻薄膜構成。當傳感器彎曲時,上下電阻薄膜相互滑動引起阻值變化,電阻不同使得輸出電壓發生變化。Flex4.5 通過不同的電壓信號獲取手指彎曲信息,其工作原理如圖3 所示。ATmega2560 將模擬量電壓信號轉化為數字量進行讀取,5 V(其最大值)時讀數為1 023,0 V 時讀數為0。

圖3 彎曲傳感器工作原理
測試彎曲傳感器在平坦舒展狀態下電阻約為5 Ω,彎曲至90°時電阻約為50 kΩ,將其與22 kΩ電阻串聯可獲取線性模擬值,因此將其與22 kΩ電阻串聯連接至ATmega2560 模擬腳即可通過讀取電壓判斷手指彎曲狀態,可以較為準確地得出佩戴者手指彎曲角度。
微電機系統(MEMS)慣性傳感器在移動智能設備上廣泛應用[13]。MEMS 內部有一個連接在彈簧上的質量塊,彈簧被限制在一個方向移動,并且有固定的極板。當加速度在特定方向作用時,質量塊移動,極板與質量塊之間的電容發生變化,將電容的這種變化處理映射得到加速度值。通過加速度與速度位移的關系能測量某段時間的相對速度和位移,使得手掌的姿態信息可以通過獲取傳感器的模擬信號來確定。
機械手設計包括結構設計和控制電路設計兩部分。機械結構仿照成年人右手骨骼進行設計,控制電路主要包括控制器、手指拉線電機、手腕舵機及姿態傳感器組成。
成年人手骨主要由節指骨和關節組成,關節分為手指關節和手腕關節,如圖4 所示。

圖4 人類右手骨骼結構
不同關節間左右側擺和彎曲決定了機械手的姿態,為了更好地仿人手動作,該機械手共設有17 個自由度:大拇指有2 個自由度,其余四指各有3 個自由度;手掌與無名指、小指有2 個側向自由度,手掌與大拇指有一個自由度。機械手結構如圖5 所示。為了實現正常抓握功能,手掌分別設計了大拇指、無名指和小拇指的轉向軸承。無名指和小拇指轉向軸承可使其自由移動到手掌內側,以實現向內的錐形運動,使抓握動作更加自然。

圖5 機械手結構
機械手控制電路使用ATmega2560 作為從控制器,通過IO 口對機械手的7 個電機進行PWM 控制,以實現機械手與人手姿態的同步動作,其中5 個拉線電機控制手指指節的彎曲伸展運動,2 個舵機旋轉控制手掌的姿態,并在機械手上設置MEMS 姿態傳感器,用于實時采集機械手手掌的姿態,并反饋給控制器,使機械手動作更加精準。
軟件設計主要包括數據采集模塊、手姿態數據修正和機械手PID 控制三大模塊。數據手套通過采集數據獲取手部姿態的信息,將所收集到的手指信息通過數據修正和濾波處理后,映射為PWM 的占空比來控制拉線電機的松緊程度,手掌部分則通過閉環PID 計算出PWM 占空比控制舵機轉動來控制姿態。控制主流程圖如圖6 所示。

圖6 主流程圖
手勢識別通過使用特定的硬件設備來捕獲佩戴者手部動作,并將捕獲到的手部特征轉換為信號量,傳遞給計算機3D 模型手完成驅動操作。其實質是識別佩戴者做出的手部動作和操作意圖,并形成相應操作命令。
手勢識別過程包括以下步驟:運動捕獲、數據修正和手勢識別。
數據手套采集的手部運動信息包括5 個運動關節(食指、中指、無名指、小指、拇指)和2 個加速度變化量(X,Y)信息。手部運動信息如圖7 所示。

圖7 手部運動信息
數據手套通常需要不同人員佩戴,不同佩戴人員手的大小和關節之間的長度不同[14]。數據手套輸出數據存在一定的噪聲和波動,直接使用原始數據計算機械手關節角將造成機械手運動控制的不穩定。人不同手指的關節有差異,運動也有差異,而關節自身有一定的活動范圍。如果將收集的數據直接用于操作命令,則會出現與佩戴者手部姿勢不同步的問題[15],因此必須對原始數據進行濾波消抖去噪處理來獲取平滑、穩定的關節角信號[16]。
為了保持數據手套的通用性與精確性,文中對采集的數據進行歸一化、限幅消抖和平滑濾波等處理。
首先,求手指節長度的平均長度,將手指節長度歸一化為平均長度,即使手指節長度發生改變也不會造成關節間的夾角變化。
然后,對歸一化后的數據進行限幅消抖,主要目的是消除大幅度數據波動。對各運動節數據進行限幅約束,數據修正如表1 所示。假設當前手套彎曲度傳感器測量值為c,若c∈(a,b),則修正后彎曲度w=c-d;若c>b,則彎曲度w=b-d;若c<a,則彎曲度w=ad。約束參數確保當前c值一直都在約束參數區間內。

表1 數據修正表
下一步將限幅消抖后的數據進行平滑濾波,文中采用卡爾曼濾波算法進行平滑去噪。卡爾曼濾波算法是利用線性系統狀態方程來進行平滑去噪[17]的,可以消除微小范圍內的波動,使計算出的機械手彎曲角更加穩定、平滑[18-19]。
假設某一個手指的活動角度是M,修正參數為d,則當前的彎曲角度N可以通過式(1)得到:

通過該關系可以定義每個手指的姿態,完成手部姿態的同步。
PID 控制廣泛應用在機械設備和電子設備控制中。PID 控制通過將實測值與給定值進行比較,從而計算出偏差量e(t),調節Kp、Ki、Kd使其誤差變小,同時兼顧調節時間和超調量等系統動態參數。數字PID 包括位置PID 算法、速度PID 算法和增量式PID算法。PID 算法由3 部分組成,分別為比例、積分和微分,如圖8 所示。

圖8 PID算法
為了使得機械手的運動更平滑,文中加入位置PID 控制算法對手腕舵機進行調節。位置PID 算法可以優化判斷當前系統的實際位置的響應性、穩定度和識別度,如式(2)所示。

其中,Kp是比例系數,Ki是積分系數,Kd是微分系數,當前誤差是上次誤差。位置PID 算法為當前系統實際位置與預期位置的偏差。比例部分只與當前偏差有關,積分部分則是系統過去所有偏差的累積。文中對輸出進行限幅控制,以防輸出不變而積分項繼續累加造成積分飽和過深。
系統采用PID 控制主要是為了消除靜態誤差,提高系統控制精度。調節積分參數可消除靜態誤差,在消除靜態誤差的同時也增加了系統的震蕩次數,使響應變得緩慢,加入微分、比例兩參數來減少系統震蕩,加快響應速度。其控制輸出曲線效果如圖9 灰色曲線所示,黑色曲線為沒有進行PID 控制的響應曲線。

圖9 PID控制輸出曲線對比圖
采用文中研制的數據手套、手部姿態算法與機械手控制算法,設計仿真試驗進行驗證。首先搭建仿真機械手控制系統,實現對機械手的體感控制。
實驗平臺包含操作者、數據手套、數據處理平臺和仿真平臺。
仿真部分采用Matlab/Simulink 環境進行實驗。首先用SolidWorks 對機械手進行建模,然后通過SimMechanics Link 將機械手3D 模型轉移到Matlab中并轉換為Simulink 模型,自動生成body blocks 和joint blocks,如圖10 所示。

圖10 Simulink環境中機械手3D模型
然后在Simulink 中建立模型控制系統,將3D 模型手的控制分成6 個子系統:模擬量輸入子系統、數據修正子系統、PID 控制子系統、關節驅動子系統、3D 模型子系統和傳感器子系統。
在仿真控制模式下,操作者佩戴數據手套控制仿真機械手從完全伸展狀態運動到食指按鍵動作,并保持該動作,由此實現仿人機械手對設備的操作,如圖11、12 所示,不同工作狀態下的手指角度彎曲角度如表2 所示。

圖11 舒展狀態

圖12 食指按鍵狀態

表2 不同工作狀態下的手指角度
然后再回到伸展狀態模擬抓取工件并握緊,實驗效果與角度參數如圖13 所示。

圖13 握緊狀態
由實驗結果可以看出,數據手套很好地達到了控制機械手的預期效果,完成簡單的同步作業操作。要完成更加精細的動作還需對機械手進一步優化。
機械手作業動作主要包括抓握、松開、食指按等動作,文中仿人手設計了機械手,經仿真驗證,可同步完成機械手基本的作業動作。文中設計了簡單便攜的數據手套,用于采集人手姿態信息。針對不同操作者節骨的差異性,對指骨長度進行了歸一化處理;針對數據干擾噪聲以及不同手指關節的差異性,提出了限幅卡爾曼濾波算法。實驗證明,該方法能有效去抖濾波,使機械手彎曲角更加穩定、平滑。
針對機械手動作的不穩定性,使用了位置PID來消除誤差,為避免誤差累計對輸出進行了限幅處理。實驗驗證,該方法能有效消除靜態誤差、消除振蕩、快速響應,使機械手動作更穩定、平滑和流暢,能達到人手控制機械手同步動作的效果。