劉宇棟 李允同 劉清揚(yáng)
當(dāng)今社會(huì)老齡化形勢(shì)日益嚴(yán)峻,許多老人及行動(dòng)不便群體備受社會(huì)關(guān)注,他們因力量不足、需長(zhǎng)期臥床等問(wèn)題造成日常生活的諸多不便,所以有必要為他們?cè)O(shè)計(jì)一款輕松便捷的操作平臺(tái)。
手勢(shì)控制作為一種蓬勃發(fā)展的現(xiàn)代控制方式,具有操作簡(jiǎn)單、靈活性高等特點(diǎn)。通過(guò)移動(dòng)端捕捉手勢(shì)的變化來(lái)執(zhí)行命令,人們利用簡(jiǎn)單的手套就可以完成他們想要執(zhí)行的動(dòng)作。
通過(guò)查閱相關(guān)資料,我們?cè)O(shè)計(jì)了解決行動(dòng)受限問(wèn)題的手勢(shì)控制移動(dòng)平臺(tái)。該平臺(tái)由智能手套和搭載了機(jī)械手的無(wú)人車組成。
一、智能手套
1.硬件設(shè)計(jì)
智能手套的主體模塊由開源硬件單片機(jī)、彎曲度傳感器、六軸陀螺儀(MPU6050)和無(wú)線射頻模塊(XBee)組成。通過(guò)彎曲度傳感器感知五根手指的動(dòng)作,由六軸陀螺儀捕捉手部的空間位置及移動(dòng)情況,以無(wú)線射頻作為通信工具,并將這些功能用單片機(jī)結(jié)合,達(dá)到遠(yuǎn)程手勢(shì)控制的目的。
智能手套選取彎曲度傳感器識(shí)別手指姿態(tài)。彎曲度傳感器可隨著其彎曲連續(xù)地改變阻值,能與手指彎曲度保持一致。阻值由單片機(jī)的模擬串口接收,同時(shí)將其轉(zhuǎn)化為1024個(gè)高、低電平信號(hào)。與單片機(jī)連接的電腦可檢測(cè)出其中的高、低電平信號(hào)數(shù)量(以下簡(jiǎn)稱“pwm”值),并將其轉(zhuǎn)化為預(yù)設(shè)變量的值。
由傳感器輸出的pwm高、低電平值轉(zhuǎn)化成的串口數(shù)據(jù)經(jīng)過(guò)算法放大和除顫后轉(zhuǎn)化為角度發(fā)送給單片機(jī),進(jìn)一步處理后再發(fā)送至無(wú)線通信串口。
智能手套采用空間運(yùn)動(dòng)傳感器芯片-六軸陀螺儀(MPU6050)獲取器件當(dāng)前的三個(gè)加速度分量和三個(gè)旋轉(zhuǎn)角速度,從而確定手部空間姿態(tài)及運(yùn)動(dòng)狀態(tài)。
XBee模塊是采用ZigBee技術(shù)的無(wú)線模塊,通過(guò)串口與單片機(jī)等進(jìn)行通信,能快速將設(shè)備接入ZigBee網(wǎng)絡(luò),具有信號(hào)傳輸距離遠(yuǎn)、速度快的特點(diǎn)。
將XBee連入開發(fā)底板后接入電腦,配套X-CTU程序?qū)Bee模塊進(jìn)行設(shè)置。在點(diǎn)對(duì)點(diǎn)的通信中,設(shè)置其中一個(gè)a模塊為協(xié)調(diào)器,另一個(gè)b模塊為路由器,進(jìn)行相應(yīng)操作后,b模塊加入a模塊的網(wǎng)絡(luò)中,實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的信號(hào)傳輸。
2.軟件設(shè)計(jì)
智能手套軟件使用四元數(shù)法通過(guò)六軸陀螺儀進(jìn)行姿態(tài)解算得出手部位置及運(yùn)動(dòng)準(zhǔn)確狀態(tài),然后結(jié)合彎曲傳感器數(shù)據(jù)得到整個(gè)手部的姿態(tài)及移動(dòng)狀態(tài),最后將數(shù)據(jù)打包,通過(guò)無(wú)線模塊發(fā)送給與手套進(jìn)行無(wú)線連接的移動(dòng)平臺(tái)。智能手套軟件流程圖如圖1所示。
二、手勢(shì)控制設(shè)計(jì)
1.手勢(shì)控制盒子與手勢(shì)控制機(jī)械手
模型是一個(gè)基于壓力傳感器的手勢(shì)控制盒子,由五指附有壓力傳感器及單片機(jī)的手套和用舵機(jī)控制開合的盒子組成。佩戴者以一定力度按壓特定的、分別固定在五個(gè)指尖的壓力傳感電阻,使單片機(jī)芯片接收到pwm值模擬信號(hào),再由單片機(jī)進(jìn)行判斷。
如果檢測(cè)到特定組合的幾個(gè)傳感器的pwm值,則盒子開啟或關(guān)閉。
為通過(guò)捕捉手勢(shì)的變化來(lái)執(zhí)行較復(fù)雜的連續(xù)指令,我們制作了手勢(shì)控制機(jī)械手模型。機(jī)械手可實(shí)時(shí)模擬操作者的手部動(dòng)作,這要求手部傳感器必須輸出連續(xù)并且較穩(wěn)定的pwm值。
由于FSR壓力傳感器屬于半導(dǎo)體電阻式傳感器,金屬絲受外力作用時(shí),長(zhǎng)度和橫截面積發(fā)生變化,其電阻值即發(fā)生改變,輸出的電阻值再轉(zhuǎn)化為電信號(hào)。其輸出的值雖然具有連續(xù)性,但變化過(guò)快,無(wú)法滿足需求,因此我們選用可隨彎曲而連續(xù)改變阻值的彎曲度傳感器(見圖3)。
通過(guò)對(duì)手部肌肉的研究制作作為執(zhí)行端的機(jī)械手,手部屈肌可通過(guò)接收的神經(jīng)信號(hào)伸縮實(shí)現(xiàn)手指的屈伸。因此,基于仿生的思路,設(shè)計(jì)用繩子代替手部屈肌,伺服舵機(jī)代替其伸長(zhǎng)或縮短機(jī)制,以實(shí)現(xiàn)機(jī)械手手指的屈伸。
伺服舵機(jī)是一種可以驅(qū)動(dòng)轉(zhuǎn)輪旋轉(zhuǎn)的驅(qū)動(dòng)器,舵機(jī)的旋轉(zhuǎn)角度為0°到180°,由整形變量的0到180轉(zhuǎn)化而來(lái),運(yùn)用了舵機(jī)驅(qū)動(dòng)語(yǔ)句,數(shù)據(jù)來(lái)源于串口收到的數(shù)據(jù)。然而由于傳感器本身的性質(zhì),串口數(shù)據(jù)并非處在0到180的區(qū)間內(nèi),變化區(qū)間卻比180小得多,例如flex4.5的串口數(shù)據(jù)val通常在450到550之間。這時(shí)就需要簡(jiǎn)單算法將val適當(dāng)轉(zhuǎn)化為旋轉(zhuǎn)角度Pos:
Pos=(val-400)*3.6
從而得到在正確區(qū)間范圍內(nèi)的Pos值。
Flex4.5傳感器電阻變化雖然穩(wěn)定,但肉眼看不見的彎曲度變化仍會(huì)導(dǎo)致val值細(xì)微的波動(dòng)。這種波動(dòng)在通過(guò)上述算法轉(zhuǎn)化為Pos值時(shí)放大了3.6倍,可使舵機(jī)發(fā)生可見的顫動(dòng)。
利用分段函數(shù)除顫和方差除顫兩種方法通過(guò)相關(guān)代碼消除顫動(dòng),我們成功實(shí)現(xiàn)了通過(guò)智能手套控制機(jī)械手。未來(lái)該模型可運(yùn)用到在危險(xiǎn)環(huán)境內(nèi)工作的機(jī)器人中。
在該部分的制作與研究中,我們測(cè)試了FSR402壓力傳感器、flex2.2彎曲度傳感器、flex4.5彎曲度傳感器三種不同的半導(dǎo)體電阻傳感器,并最終選用flex4.5彎曲度傳感器作為智能手套上感知手勢(shì)的傳感器之一。
2.手勢(shì)控制車
為使智能手套對(duì)手勢(shì)變化的捕捉更完整,并測(cè)試手套與執(zhí)行端間的無(wú)線通信,我們制作了手勢(shì)控制智能車模型。
該模型主體由Arduino單片機(jī)、MPU6050空間運(yùn)動(dòng)傳感器(簡(jiǎn)稱“陀螺儀”)、MBot智能車及Xbee無(wú)線射頻模塊組成。手勢(shì)的姿態(tài)判斷由陀螺儀實(shí)現(xiàn),陀螺儀模塊將感知的姿態(tài)信息傳輸至控制端Arduino單片機(jī),控制端Arduino單片機(jī)處理后通過(guò)通信串口實(shí)時(shí)傳輸至執(zhí)行端的Arduino單片機(jī)。
項(xiàng)目通過(guò)2個(gè)Arduino單片機(jī)將所有模塊進(jìn)行編程并集成為一體,讓模塊之間可以互相通信,實(shí)現(xiàn)全部設(shè)計(jì)的功能。模型主要運(yùn)行流程見圖5。實(shí)際模型如圖6所示。
三、應(yīng)用
1.行動(dòng)不便的人可通過(guò)該移動(dòng)平臺(tái)上的機(jī)械手進(jìn)行需要的操作,采用手勢(shì)控制也使操作更加直接而靈活。
2.在特殊環(huán)境下如有毒氣體或核污染的環(huán)境、生化實(shí)驗(yàn)等可能發(fā)生危險(xiǎn)的場(chǎng)所作為人工操作的代替。
3.記錄運(yùn)動(dòng)姿態(tài)。如可以記錄醫(yī)生手術(shù)時(shí)的手部移動(dòng)狀態(tài),提供可以分析和學(xué)習(xí)的數(shù)據(jù)。(指導(dǎo)老師:譚洪政)
發(fā)明與創(chuàng)新·中學(xué)生2018年6期