麻文剛, 王小鵬, 馬 鵬
(蘭州交通大學 電子與信息工程學院,甘肅 蘭州 730070)
普通電動輪椅相比智能輪椅運行安全穩(wěn)定、使用更方便、性能更優(yōu)越,可以幫助殘疾人或老年人提高生活自理能力和工作能力。目前,很多國家對智能輪椅進行了研究,并且針對不同殘疾人群與老年人開發(fā)了多種智能輪椅人機接口[1],對于殘疾程度較輕、肢體能動性較高且意識較好的人群,可以采用操縱桿控制[2]、按鍵控制、方向盤控制、觸摸屏控制和菜單控制等方式,但這些控制方式依舊不能滿足肢體能動性較低人群需要,不利于應用于智能輪椅。
本文設計了一種智能輪椅頭部姿態(tài)校正控制系統(tǒng),具有控制精度高、攜帶方便、成本低等優(yōu)點。該系統(tǒng)采用低成本的巨磁阻(giant magnetoresistance,GMR)傳感器[3~5]和無線收發(fā)模塊組成姿態(tài)測量系統(tǒng),以STM32為控制核心,采用四元素法描述和解算頭部姿態(tài)信息,通過梯度下降法多傳感器融合將解算后的姿態(tài)信息進行校正,并且實時將姿態(tài)信息傳送至接收終端,終端得到控制指令信號,控制輪椅運動。
系統(tǒng)本著操作簡單方便、經(jīng)濟實用及軟硬件可擴展設計原則,以STM32F103為控制核心,主要包括傳感器、信號調(diào)理電路以及外圍電路部分,設計系統(tǒng)框圖如圖1所示。通過GMR傳感器、三軸陀螺儀與三軸加速度計組成的姿態(tài)解算模塊實時采集頭部姿態(tài)信息數(shù)據(jù),利用無線收發(fā)模塊將采集的姿態(tài)信息數(shù)據(jù)發(fā)送至STM32微處理器;微處理器對當前姿態(tài)信息進行預處理,在微處理器內(nèi)進行數(shù)據(jù)融合與姿態(tài)解算,并結合不同頭部姿態(tài)識別出不同控制指令;
微處理器將識別的控制指令發(fā)送給輪椅控制器,控制輪椅運動。
圖1 系統(tǒng)整體框圖
姿態(tài)是表征載體坐標系相對地理坐標系的位置信息,四元素法[5,6]是常用描述載體姿態(tài)信息轉動變化關系的方法。地理坐標系矢量a到載體坐標系矢量b之間轉動變化關系可以表示為b=Ta[5],其中T為方向余弦矩陣
T=
(1)
式中Ψ,θ,γ分別為航向角、俯仰角和橫滾角。
兩坐標系之間轉動變換關系可以用四元素表示
T=
(2)
由式(1)和式(2)可得,歐拉角與轉動四元素轉化關系
(3)
θ=arcsin(2(q1q3-q0q2))
(4)
(5)
由于陀螺儀存在積分漂移[7]累積誤差,長時間工作將出現(xiàn)嚴重錯誤,影響控制精度。陀螺儀解算姿態(tài)相對于初始位置,加速度計和磁強計組合解算姿態(tài)相對于水平面和磁北極,在靜態(tài)與無外磁干擾下能表現(xiàn)出良好性能,但在動態(tài)與磁場干擾下姿態(tài)角解算會出現(xiàn)嚴重偏差,因此,單一使用某種傳感器不能解算出精確的姿態(tài)信息數(shù)據(jù)。
(6)
從點a(k)出發(fā), 沿著負梯度方向前進,設步長為μ,可得到梯度下降法迭代公式
(7)
一定條件下該序列會收斂于使得J(a)最小的解a。由梯度下降法、四元數(shù)微分方程與三軸陀螺角速率之間的關系, 建立迭代公式
(8)
圖2為基于梯度下降法與GMR傳感器姿態(tài)校正流程框圖,當目標函數(shù)f(q)達到最小值時,四元數(shù)解算姿態(tài)角與真實值差值最小。
圖2 梯度下降法校正姿態(tài)框圖
姿態(tài)解算模塊需要完成姿態(tài)檢測、姿態(tài)解算和姿態(tài)校正等信息,以及將解算姿態(tài)信息轉換成標準控制指令輸出等功能。姿態(tài)解算模塊結構框圖如圖3所示。
圖3 姿態(tài)解算框圖
姿態(tài)解算模塊主要由STM32微處理器、GMR傳感器、三軸加速度計、三軸陀螺儀、信號調(diào)理電路與一對無線收發(fā)模塊(NRF24L01)組成。STM32接收來自GMR傳感器、三軸加速度計與陀螺儀檢測的姿態(tài)信息,姿態(tài)信息經(jīng)過STM32微處理器進行解算與校正之后,利用無線收發(fā)模塊進行輸出相應控制指令。
控制信號經(jīng)過無線收發(fā)模塊至控制板,控制板接收到控制信號,驅動電機模塊控制電機運轉,實現(xiàn)控制輪椅的運動??紤]到實際接口應用,選擇STM32F103單片機為主控芯片,STM32F103帶有6個死區(qū)可編程脈寬調(diào)制(pulse width modulation,PWM)輸出通道,在異常狀況出現(xiàn)時,強迫PWM信號輸出在一個預定安全狀態(tài)。本文控制系統(tǒng)中,設置調(diào)速PWM波占空比為25%,使輪椅達到安全運行狀態(tài)。
為提高系統(tǒng)控制精度,以及驅動電路回流影響,在單片機(MCU)輸入和輸出端,用光耦作介質,對信號進行隔離。該電路主要應用在“A/D轉換器”數(shù)位信號輸出,及MCU發(fā)出的前向通道控制信號與類比電路界面,實現(xiàn)在不同系統(tǒng)間信號通路相連,在電氣通路上相互隔離,并且實現(xiàn)將類比電路和數(shù)位電路相互隔離,起到抑制交叉串擾作用。
頭部中心在空間中位置決定頭部姿態(tài)命令,輪椅控制命令設定為前進、后退、左轉、右轉和停止。5個命令區(qū)域劃分如圖4所示。
圖4 控制區(qū)域劃分
將頭部姿態(tài)獲取角度值平均分為9個區(qū)域。頭部中心位置位于區(qū)域5,姿態(tài)解算模塊解算出的“yaw”控制停止,位于區(qū)域1和2,姿態(tài)解算模塊解算出的“roll”控制前進和后退,區(qū)域1表示以1m/s速度前進,區(qū)域2表示以1m/s速度后退,位于區(qū)域3和4,姿態(tài)解算模塊解算出的“pitch”控制左轉和右轉,區(qū)域3表示以30°/s角速度右轉,區(qū)域4表示以30°/s 角速度左轉,其他區(qū)域保持原有狀態(tài)。
軟件系統(tǒng)在RealView MDK開發(fā)環(huán)境下,利用STM32官方固件庫用標準C語言編寫,主要包括系統(tǒng)初始化、姿態(tài)檢測、姿態(tài)解算、姿態(tài)校正、數(shù)據(jù)發(fā)送等過程。系統(tǒng)主程序流程如圖5所示。
圖5 系統(tǒng)主程序流程
為驗證系統(tǒng)控制精度,采用規(guī)則頭部可穿戴裝置進行數(shù)據(jù)測試,表1單獨使用陀螺儀解算姿態(tài)角信息數(shù)據(jù),可以看出,姿態(tài)角相對誤差最大達到16.6%,與陀螺儀固有缺陷即存在漂移現(xiàn)象一致。表2采用提出的數(shù)據(jù)融合校正算法,利用三軸磁強計與三軸加速度計修正陀螺儀漂移,姿態(tài)角相對誤差大幅度減小。
表1 陀螺解算姿態(tài)角
表2 數(shù)據(jù)融合姿態(tài)角
為測試輪椅操作可靠性,對智能輪椅做運動控制指令重復性實驗。即將前進、后退、左轉、右轉、停止5種指令作為1組,實驗共進行40組,如表3和表4給出了姿態(tài)校正前后,各指令識別情況。
表3 姿態(tài)校正前輪椅運行測試
實驗表明:智能輪椅在姿態(tài)校正之前運行出現(xiàn)很大偏差,最高識別率僅為47.5 %,平均識別為34.5 %,不能滿足頭部姿態(tài)智能輪椅所需控制精度;但在姿態(tài)校正之后最高識別率可達100 %,平均識別率達到97 %,能夠對輪椅簡單運動進行有效控制,控制精度高,響應時間較短。
設計了基于GMR傳感器校正的頭部姿態(tài)智能輪椅控制系統(tǒng),對輪椅5種簡單運動進行控制。系統(tǒng)采用低功耗GMR傳感器、STM32型MCU與無線收發(fā)模塊,并對傳感器模塊校準原理、方法及結果進行了詳細討論。該控制系統(tǒng)精度高、操作簡便、實時性好,在助老、助殘、輔助康復與信息無障礙交流等方面有著重要參考價值。實驗結果表明:傳感器校準過程正確有效,校正后漂移誤差減小,該控制系統(tǒng)可精準的控制智能輪椅運動。
[1] 劉海穎,王惠南,劉新文.基于UKF的四元數(shù)載體姿態(tài)確定[J].南京航空航天大學學報,2006,38(1):35-42.
[2] 汪 芳,朱少華,雷宏杰.基于卡爾曼濾波器的數(shù)字式捷聯(lián)航姿系統(tǒng)算法設計[J].中國慣性技術學報,2008(2):208-211.
[3] Ge Quanbo,Li Wenbin,Sun Ruoyu,et al.Centralized fusion algorithms based on EKF for non-linear systems[J].Acta Automatica Sinica,2012,39(6):816-825.
[4] Xin Qi,Shi ZhongKe.Flight attitude determination based on multiple measurements[J].Flight Dynamics,2012,30(6):527-531.
[5] 郭曉鴻,楊 忠,陳 喆,等.EKF和互補濾波器在飛行姿態(tài)確定中的應用[J].傳感器與微系統(tǒng),2011,30(11):149-152.
[6] 李 偉,何鵬舉,高社生.多傳感器加權信息融合算法研究[J].西北工業(yè)大學學報, 2010,28(5):674 -678.
[7] Li Yi.Hand gesture recognition using kinect[C]∥InternationalConference on Software Engineering and Service Science,Washington DC,USA:IEEE Computer Society,2011:196-199.