版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)的數(shù)據(jù)手套設(shè)計(jì)與實(shí)驗(yàn)調(diào)試研究目錄摘要 摘要隨著虛擬現(xiàn)實(shí)技術(shù)的日漸成熟,局限于鍵盤,鼠標(biāo)的輸入方式已經(jīng)不再適用,急需一種兼容虛擬技術(shù)有操作方便不受約束的輸入方式,數(shù)據(jù)手套以其符合人體工程學(xué)的輸入方式從眾多形形色色的輸入方式中脫穎而出,成為了當(dāng)今比較熱門的研究方向之一。對于人類這種擅長制造且使用工具的物種而言,手是唯一一個(gè)結(jié)合了感知世界且輕易能夠?qū)崿F(xiàn)與外界零距離貼身交流的器官,一相對比手有著其他感知器官所無法比擬的優(yōu)勢。本課題中設(shè)計(jì)的數(shù)據(jù)手套采取單片機(jī)為數(shù)據(jù)處理的核心,以陀螺儀姿態(tài)傳感器實(shí)現(xiàn)對手部數(shù)據(jù)的測量。本次設(shè)計(jì)的數(shù)據(jù)手套是以單片機(jī)為核心,采用陀螺儀姿態(tài)傳感器實(shí)現(xiàn)對手部數(shù)據(jù)的測量,單片機(jī)對讀取的參數(shù)進(jìn)行濾波處理,并以串口通信的方法發(fā)送給虛擬現(xiàn)實(shí)軟件Unity3D進(jìn)行三維顯示。本文主要講述了基于單片機(jī)的數(shù)據(jù)手套硬件設(shè)計(jì)過程、軟件設(shè)計(jì)流程、以及軟硬件聯(lián)合調(diào)試的過程,最終實(shí)現(xiàn)一種可以穩(wěn)定地為虛擬現(xiàn)實(shí)系統(tǒng)提供姿態(tài)并可以實(shí)時(shí)跟蹤的數(shù)據(jù)手套。關(guān)鍵詞:串口通信、Unity3D、卡爾曼濾波、姿態(tài)第1章緒論1.1研究背景及意義人是一種天性浪漫又愛幻想的生物,得益于這一天性人類開發(fā)出了游戲這一釋放天性,娛樂大眾的第九藝術(shù),隨著科技的發(fā)展和電子設(shè)備技術(shù)的革新虛擬現(xiàn)實(shí)這一新興名詞成為了當(dāng)下科技工作者和資本大亨們的寵兒,在虛擬現(xiàn)實(shí)技術(shù)已經(jīng)相對成熟的今天玩家們的注意力已經(jīng)從一個(gè)旁觀者轉(zhuǎn)移到了如何與虛擬現(xiàn)實(shí)中的物品進(jìn)行互動。第一代的操縱手柄因?yàn)闃邮焦殴智也灰撞僮饕呀?jīng)嚴(yán)重影響了玩家們的游戲體驗(yàn),在眼睛進(jìn)入虛擬世界的同時(shí),如果手也能同時(shí)觸摸到眼睛所看到的東西那將會是何等的歡愉,但是受限于材料和技術(shù)的發(fā)展我們能做的只有改變操縱手柄的操作方式。人手是除了眼睛,鼻子和耳朵以外人類感知世界的核心手段,如果將操縱方式改為人手式操作這將會是多么的便利,考慮到人還需要用手進(jìn)行操作那么數(shù)據(jù)手套將會是最好的方式[1]。數(shù)據(jù)手套的出現(xiàn)引起了新一波的研發(fā)浪潮,討論的議題很多,由于數(shù)據(jù)手套發(fā)展的時(shí)間有限,當(dāng)前的發(fā)展?fàn)顩r距離各行各業(yè)的實(shí)際需求仍然相差甚遠(yuǎn),數(shù)據(jù)手套要得到市場的接受還有很長的一段路要走[2]。數(shù)據(jù)手套的技術(shù)難度主要表現(xiàn)在手套檢測精度差,導(dǎo)致手套的沉浸感低,而精度高的數(shù)據(jù)手套其成本也大大提高,在一定程度上阻止了數(shù)據(jù)手套的推廣。同時(shí)數(shù)據(jù)手套也存在著一些硬件設(shè)備的材料老化快,不能長時(shí)間應(yīng)用等問題,對于數(shù)據(jù)手套的使用結(jié)果影響很大。隨著科學(xué)技術(shù)的發(fā)展,對于實(shí)驗(yàn)數(shù)據(jù)的準(zhǔn)確性要求越來越高,從而出現(xiàn)了各種類型的數(shù)據(jù)手套,目前數(shù)據(jù)手套從數(shù)據(jù)采集方法上可分為光學(xué)類、光纖類和慣性類。光學(xué)數(shù)據(jù)手套主要在手的各個(gè)部位布置紅外傳感器,通過對紅外攝像頭拍攝的畫面進(jìn)行定位,從而檢測手部的姿態(tài),該類數(shù)據(jù)數(shù)據(jù)手套的捕捉的手部動作容易被其它東西屏蔽,且對相機(jī)的拍攝幀率要求較高,同時(shí)它的成本也很高;光纖數(shù)據(jù)手套,顧名思義,采用的就是光纖傳感器,這類數(shù)據(jù)手套的數(shù)據(jù)采集精度較高,且穩(wěn)定性也很好,其昂貴的售價(jià)局限了它的發(fā)展,使它一般只用于數(shù)據(jù)要求較高的科研場合以及一些大公司的商業(yè)項(xiàng)目,并不適合大規(guī)模的應(yīng)用與市場上;慣性傳感式的數(shù)據(jù)手套因?yàn)槠洳皇芄庹障拗?,輕便耐用等優(yōu)點(diǎn)與其他數(shù)據(jù)手套拉開了一段距離,不需要特定的場合,可以做到隨時(shí)使用,但是它也有一個(gè)很明顯的缺點(diǎn),低廉的慣性傳感器導(dǎo)致它的數(shù)據(jù)并不準(zhǔn)確,這是硬件本身的問題[3]。目前慣性數(shù)據(jù)手套更滿足市場的發(fā)展和需求,實(shí)際上通過合適的濾波算法,是可以解決數(shù)據(jù)漂移以及噪聲干擾的問題。根據(jù)上述背景,本設(shè)計(jì)將研究一款基于單片機(jī)的數(shù)據(jù)手套系統(tǒng)。1.2國內(nèi)外研究現(xiàn)狀虛擬現(xiàn)實(shí)技術(shù)大規(guī)模發(fā)展以來,人機(jī)交互技術(shù)作為虛擬現(xiàn)實(shí)技術(shù)的基礎(chǔ)已經(jīng)成為了國內(nèi)外研究學(xué)者的寵兒,數(shù)據(jù)手套作為符合人體行為邏輯的一種人機(jī)交互手段會是未來研究的一個(gè)熱門方向。目前美國StanfordLabs的延伸公司開發(fā)的CyberGlove,其應(yīng)用在數(shù)據(jù)手套上的技術(shù)也極其成熟,所配備的傳感器為嬌貴的光纖傳感器,數(shù)量一般為18或22個(gè),檢測的精度非常高,可精確測量多達(dá)22個(gè)關(guān)節(jié)角度,優(yōu)于市場上大多數(shù)據(jù)手套,但是同時(shí)這款數(shù)據(jù)手套的價(jià)格也十分昂貴[4][5]。和一些發(fā)達(dá)國家相比,我國的虛擬現(xiàn)實(shí)技術(shù)起步晚,但近幾年,虛擬現(xiàn)實(shí)技術(shù)發(fā)展比較迅速,受到相關(guān)部門以及各界的重視。在國家的發(fā)展規(guī)劃綱要中將虛擬現(xiàn)實(shí)技術(shù)認(rèn)定為前沿技術(shù)中信息技術(shù)部分的三大技術(shù)之一,很多重點(diǎn)院校也積極投入這一領(lǐng)域的工作[6]。目前,國內(nèi)的互聯(lián)網(wǎng)企業(yè)憑借自己廣大的平臺,紛紛向VR行業(yè)靠攏,在自己擅長的平臺繼續(xù)發(fā)揮自己的優(yōu)勢。在2016年5月底,百度就上線了VR社區(qū)——百度VR+,旗下子公司愛奇藝也上線VR眼鏡等產(chǎn)品,提升觀眾的觀影體驗(yàn)?;ヂ?lián)網(wǎng)巨頭騰訊也與2016年發(fā)布了VR技術(shù)白皮書,表示VR社交將會成為VR技術(shù)的一個(gè)重要應(yīng)用方面,并表示未來的VR社交有三大特點(diǎn):UGC、顯示捕捉和虛實(shí)結(jié)合。阿里也推出了新的購物方式——Buy+,只需要使用VR眼鏡,就能享受身臨其境的購物體驗(yàn)[7]。國內(nèi)的智能穿戴行業(yè)近些年涌現(xiàn)了很多的可穿戴設(shè)備,包括虛擬設(shè)備VR眼鏡,VR手套等。與其他的可穿戴設(shè)備比起來,數(shù)據(jù)手套的價(jià)格昂貴,市場很小,但是數(shù)據(jù)手套的應(yīng)用前景大好,很多的機(jī)構(gòu)對其做了大量的研究工作,取得了顯著的成果[8]。國內(nèi)的Demxo是全球第一款商業(yè)化便攜式雙手無線力反饋手套,由深圳岱仕科技研發(fā),岱仕科技致力于數(shù)據(jù)手套的研發(fā)與普及,利用先進(jìn)的機(jī)器人技術(shù)為VR/MR創(chuàng)造下一代交互界面,是全球領(lǐng)先的交互系統(tǒng)設(shè)計(jì)制造商。Demxo源自岱仕科技的創(chuàng)始人谷逍馳的個(gè)人項(xiàng)目,Demxo能夠捕捉手部的動作,以及力的反饋,在各行各界都有使用。廣東工業(yè)大學(xué)潘燕彬研究將數(shù)據(jù)手套引進(jìn)虛擬手術(shù)訓(xùn)練系統(tǒng)交互技術(shù)中,最后建立了數(shù)據(jù)手套與虛擬手的映射關(guān)系[9]。揚(yáng)州大學(xué)張銳通過研究發(fā)現(xiàn)將反饋信號施加給兩個(gè)分別位于垂直與水平方向的磁鐵時(shí),兩者將彼此吸合并形成電磁力,并最終產(chǎn)生反饋力,從而成功研發(fā)出一款高精度的數(shù)據(jù)手套[10]。李兆基等人在其文章中設(shè)計(jì)的數(shù)據(jù)手套利用一組彎曲度傳感器以及九軸運(yùn)動姿態(tài)傳感器進(jìn)行數(shù)據(jù)采集[11]。王賦攀等人在其文章中通過結(jié)合3指彎曲數(shù)據(jù)與視覺采集模型相結(jié)合的方法,使手勢建模過程的復(fù)雜度大大降低,快速識別出特定的手勢[12]。1.3本課題的章節(jié)安排第一章的主要內(nèi)容是數(shù)據(jù)手套的背景和研究意義,國內(nèi)外數(shù)據(jù)手套的研究現(xiàn)狀,第二章的主要內(nèi)容是系統(tǒng)方案的設(shè)計(jì)與各模塊的器件選型,第三章的主要內(nèi)容是硬件電路設(shè)計(jì),第四章的主要內(nèi)容是系統(tǒng)的軟件設(shè)計(jì),第五章的主要內(nèi)容是系統(tǒng)的調(diào)試與分析,最后,對本設(shè)計(jì)進(jìn)行總結(jié)與展望。
第2章系統(tǒng)方案設(shè)計(jì)2.1系統(tǒng)總體設(shè)計(jì)方案本設(shè)計(jì)是基于單片機(jī)進(jìn)行設(shè)計(jì)和研究的,單片機(jī)通過對采集模塊的數(shù)據(jù)處理,將傳感器檢測的角度發(fā)送給數(shù)據(jù)顯示模塊行顯示。數(shù)據(jù)手套的系統(tǒng)方案設(shè)計(jì)主要由四個(gè)部分組成,分別為數(shù)據(jù)采集模塊、主控模塊、數(shù)據(jù)傳輸模塊以及數(shù)據(jù)顯示模塊。系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。圖1系統(tǒng)框圖數(shù)據(jù)采集模塊由陀螺儀傳感器構(gòu)成,主要是對手部姿態(tài)三維角速度以及三維加速度。主控模塊由單片機(jī)最小系統(tǒng)構(gòu)成,其主要進(jìn)行姿態(tài)的讀取和解算。數(shù)據(jù)傳輸模塊用來控制上位機(jī)與下位機(jī)數(shù)據(jù)的交互,將單片機(jī)處理過的數(shù)據(jù)發(fā)送給顯示模塊。數(shù)據(jù)顯示端將讀取的數(shù)據(jù)轉(zhuǎn)換顯示在屏幕上,達(dá)到手部姿實(shí)時(shí)態(tài)顯示的目的。2.2系統(tǒng)各模塊的選型2.2.1主控模塊作為一個(gè)系統(tǒng)的核心,主控芯片尤其重要。選擇合適的一款單片機(jī)成為設(shè)計(jì)的首要任務(wù)。51系列單片機(jī)內(nèi)部擁有一套按位操作的完整系統(tǒng),處理的對象不是字而是位,且一次能夠處理8位數(shù)據(jù)。使用者能夠直接使用乘法以及除法指令,這在其它大多8位單片機(jī)上是不具有的。51單片機(jī)的缺點(diǎn)主要是運(yùn)行速度相對較慢,還有一些常見的功能需要從外部擴(kuò)展,如ERROM。51單片機(jī)的I/O口使用雖然簡單,但需要使用高電平時(shí),卻并沒有輸出能力。且51單片機(jī)相比如其它單片機(jī),其電路的保護(hù)能力較差,如果出現(xiàn)過壓過流的問題,就會造成芯片燒壞,此款芯片一般用在性能、穩(wěn)定性不高的場合。stm32是一款能夠同時(shí)處理32位數(shù)據(jù)的單片機(jī),有著非常豐富的接口。工作的速度很快,同時(shí)功耗也控制的很好,保持高集成度和開發(fā)簡易的特點(diǎn)。其單片機(jī)程序都是模塊化的,編寫方便。以本設(shè)計(jì)擬采用的STM32F103C8T6為例,此款芯片價(jià)格低廉,存儲容量大,內(nèi)部集成有128k的ROM,I/O口數(shù)量較多,很適合本設(shè)計(jì)的開發(fā)。綜上所述,在考慮各種因素的情況下,本次畢業(yè)設(shè)計(jì)采用STM32F103C8T6作為主控芯片。2.2.2數(shù)據(jù)采集模塊陀螺儀模塊是數(shù)據(jù)手套的核心工作器件,它控制著數(shù)據(jù)的輸入,目前市場上比較流行的陀螺儀模塊有MPU9250和MPU6050兩種。MPU9250內(nèi)部集成有角速度計(jì),加速度計(jì)以及磁力計(jì),是一個(gè)9軸的運(yùn)動處理傳感器。其陀螺儀是由三個(gè)獨(dú)立檢測三軸的MEMS組成,響應(yīng)特性表現(xiàn)優(yōu)秀。但是市場上大多數(shù)MPU9250傳感器的穩(wěn)定性較差,可讀性不好。MPU6050是一款集角速度計(jì)與加速度計(jì)于一體的運(yùn)動處理傳感器,性能與MPU9250相當(dāng)。用戶可以通過程序控制傳感器的測量范圍,使用起來及其友好。另外,MPU6050的加速度計(jì)與陀螺儀間敏感度被移除,這就導(dǎo)致設(shè)計(jì)給予的影響與數(shù)據(jù)漂移被大大降低。市場上MPU6050的封裝相較于MPU9250封裝更小,工作更加穩(wěn)定,且價(jià)格也低一些。綜上所述,為降低設(shè)計(jì)的成本,增加設(shè)計(jì)的可靠性,本次設(shè)計(jì)采用MPU6050芯片。2.2.3數(shù)據(jù)傳輸模塊通信是數(shù)據(jù)正常顯示的前提,常見的單片機(jī)通信方案有藍(lán)牙通信、WiFi通信,以及串口通信。無線通信的傳輸依靠電波傳輸,不需要數(shù)據(jù)線,適合較復(fù)雜的信息傳輸,不受距離的影響。串口通信是一種普及率很高的通信技術(shù),大部分的設(shè)備都會預(yù)留串口端口,同樣在PC上也是標(biāo)配。從設(shè)計(jì)角度來說,串口通信程序編寫簡單,硬件接口比無線傳輸簡單,而且直接能夠用電腦上的串口助手顯示調(diào)試信息,不需要借助其他硬件以及軟件,使得設(shè)計(jì)與調(diào)試更加簡單,適合低速率與短距離的通信。單片機(jī)通信接口的電平邏輯不同于PC機(jī)通信接口的電平邏輯,PC機(jī)上只有USB通信接口,其電平邏輯遵循USB設(shè)計(jì)原則,而單片機(jī)上的電平邏輯遵循TTL原則。因此需要用到USB轉(zhuǎn)TTL串口的硬件設(shè)備。對于本次設(shè)計(jì),優(yōu)先考慮短距離可靠傳輸,綜合以上因素,選擇串口進(jìn)行通信。
第3章硬件電路設(shè)計(jì)與分析本設(shè)計(jì)主要研究通過單片機(jī),在虛擬現(xiàn)實(shí)開發(fā)引擎unity3D中實(shí)現(xiàn)對手部姿態(tài)的實(shí)時(shí)跟蹤。此系統(tǒng)的基本思路是:單片機(jī)上電后,將初始化指令發(fā)送給陀螺儀傳感器,傳感器正確初始化后,開始檢測手的姿態(tài),將角度信號傳遞給單片機(jī),單片機(jī)與PC之間建立串口通信,將接收到的數(shù)據(jù)傳遞給PC端口由上位機(jī)進(jìn)行處理。3.1主控電路設(shè)計(jì)本設(shè)計(jì)選用STM32F103C8T6型號的單片機(jī),該型號的單片機(jī)封裝體積小,存儲容量高,其程序存儲器FLASH容量是64KB,RAM容量是20KB。工作溫度為-40℃-85℃,穩(wěn)定性高,功能強(qiáng)大且功耗很低,很適合小項(xiàng)目開發(fā)的需求。STM32F103內(nèi)置單片機(jī)的最小系統(tǒng)由控制芯片、電源、復(fù)位、時(shí)鐘以及LED五大部分組成。3.1.1控制芯片STM32F103的是相對基礎(chǔ)的一款芯片,其引腳數(shù)目多而不雜,功能相當(dāng)豐富,性能較高,本次設(shè)計(jì)需要用到VCC、GND端口以及四個(gè)I/O口,使用3.3V電壓進(jìn)行供電,GND與電腦連接進(jìn)行共地,其中兩個(gè)I/O口與傳感器進(jìn)行連接進(jìn)行數(shù)據(jù)的讀取,另外兩個(gè)I/O口與CH340連接,與PC端進(jìn)行通信??刂菩酒囊_如圖2所示。圖2控制芯片引腳3.1.2電源供電電路電源系統(tǒng)由電源,電容,RT9193組成。最小系統(tǒng)的輸入電壓為5V,由LDO低壓差線性穩(wěn)壓器將其轉(zhuǎn)換為3.3V,為主控芯片供電。電源系統(tǒng)原理圖如圖3所示。圖3電源系統(tǒng)3.1.3復(fù)位電路單片機(jī)的復(fù)位有很多類型,例如軟件復(fù)位、上電復(fù)位、手動復(fù)位等,復(fù)位電路能夠使單片機(jī)恢復(fù)到原始狀態(tài),屬于手動復(fù)位,它的操作原理與其它常見設(shè)備的重啟功能有著異曲同工之妙,當(dāng)設(shè)定的程序運(yùn)行錯(cuò)誤,不能正常工作時(shí),就可以手動復(fù)位。復(fù)位電路原理圖如圖4所示,可以看出此處采用硬件按鍵復(fù)位。主控芯片STM32F103是NRST引腳的低電平復(fù)位,按鍵的接觸/松開的接觸過程大約有10ms的抖動,由于電容的電壓不會突變,所以采用電容C2消除按鍵抖動,防止在按鍵剛剛接觸/松開時(shí)的電平抖動引發(fā)誤動作。圖4最小系統(tǒng)復(fù)位電路3.1.4時(shí)鐘電路時(shí)鐘電路產(chǎn)生時(shí)鐘信號,為主控芯片提供系統(tǒng)時(shí)鐘,保證電路可靠運(yùn)行,晶振的大小能夠直接決定單片機(jī)的工作效率,目前大部分的單片機(jī)內(nèi)部都集成有晶體振蕩器。STM32F103系列單片機(jī)內(nèi)部集成有8MHZ的晶振,當(dāng)系統(tǒng)上電后,默認(rèn)使用內(nèi)部時(shí)鐘。本設(shè)計(jì)中時(shí)鐘電路采用外接時(shí)鐘電路,時(shí)鐘電路的原理圖如圖5所示。圖5中,外部8M晶振可讓單片機(jī)在72MHz下滿負(fù)荷工作,而32.768KHz可以讓單片機(jī)在極低主頻下工作以降低功耗。圖5最小系統(tǒng)時(shí)鐘電路3.1.5LED電路在設(shè)計(jì)開發(fā)過程中,需要不斷的通電斷電進(jìn)行調(diào)試。在接上電源的時(shí)候,D1會被點(diǎn)亮,起到通電指示的作用。D2為單片機(jī)運(yùn)行狀態(tài)指示燈,單片機(jī)正常運(yùn)行時(shí),處于熄滅狀態(tài)。LED電路如圖6所示。圖6調(diào)試接口電路3.2數(shù)據(jù)采集電路設(shè)計(jì)本系統(tǒng)中,首先需要MPU6050模塊為系統(tǒng)進(jìn)行數(shù)據(jù)的采集。MPU6050具有體積小、自帶DMP、支持IIC從機(jī)地址設(shè)置和中斷、兼容3.3V/5V系統(tǒng),使用方便等特點(diǎn)。MPU6050包含加速度計(jì)和角速度計(jì)兩個(gè)部分,分別用來測模塊的角速度和加速度。該模塊基本特性及功能如表1所示。表1MPU6050特性及功能表接口特性3.3V/5V通信接口IIC接口通信速率400KHz測量緯度加速度:3維;角速度:3維加速度測量范圍±2/±4/±8/±16g角速度測量范圍±250/±500/±1000/±2000°/秒ADC位數(shù)16位分辨率加速度;16384LSB/g(Max);角速度:131LSB/(°/s)(Max)輸出速率加速度:1Khz(Max);角速度:8Khz(Max)姿態(tài)解算輸出速率200Hz(Max)工作溫度-40℃-85℃模塊尺寸16mm*18mm角速度計(jì)由科里典利效應(yīng)來檢測每個(gè)軸的轉(zhuǎn)動,原理是:傳感器的電容會隨著某個(gè)軸發(fā)生變化而變化,傳感器再將信號放大、調(diào)解和濾波,輸出一個(gè)與角速度成正比的電壓,最后將這個(gè)電壓轉(zhuǎn)換成16位的數(shù)據(jù)。用戶還可以選擇使用低通濾波器過濾掉一部分雜波。MPU6050的三軸加速度計(jì)也進(jìn)行相互獨(dú)立檢測,同樣根據(jù)軸的偏差度引起軸上的電容的變化,從結(jié)構(gòu)上減少了各種因素造成的偏差。在水平的地面上,加速度計(jì)的X軸和Y軸會輸出0g的加速度,Z軸會輸出1g的加速度。MPU6050的電路原理圖如圖7所示。在圖7中管腳1為MPU6050的VCC,管腳2為GND,分別與單片機(jī)的VCC,GND相連;管腳3為SDA,是IIC通信數(shù)據(jù)線,與單片機(jī)I/O口的PB7相連;管腳4為SCL,為IIC通信時(shí)鐘線,與單片機(jī)的I/O口的PB6相連;管腳5與管腳6為INT、ADO,分別為中斷輸出的引腳,以及IIC從機(jī)輸出地址設(shè)置,本設(shè)計(jì)中不需要用到這兩個(gè)引腳,因此在設(shè)計(jì)電路過程中懸空管腳5管腳6即可。圖7MPU6050電路原理圖3.3數(shù)據(jù)傳輸電路設(shè)計(jì)使用串口通信的時(shí)候,需要使用USB轉(zhuǎn)TTL電路將單片機(jī)和PC的電平轉(zhuǎn)換為雙方可以識別的信號,本設(shè)計(jì)采用CH340來進(jìn)行轉(zhuǎn)換。CH340是一種極為常見的USB轉(zhuǎn)TTL的設(shè)備,在PC端WINDOWS操作系統(tǒng)下,不需要修改串口的應(yīng)用程序,完全兼容。其硬件最簡單時(shí)只需要三根線:GND,TXD,RXD,通訊波特率支持50bps-2Mbps之間,適合進(jìn)行程序調(diào)試及信息傳輸。CH340原理圖如圖8所示。圖8CH340電路原理圖管腳1可選擇連接單片機(jī)的VCC,也可以選擇不連接;管腳2為TXD,即CH340的數(shù)據(jù)發(fā)送,連接單片機(jī)I/O口的A10管腳;管腳3位RXD,即CH340的數(shù)據(jù)接收,連接單片機(jī)I/O口的A9管腳;管腳4連接單片機(jī)的GND,單片機(jī)在與電腦進(jìn)行通信的過程中,必須與CH340共地。
第4章系統(tǒng)軟件設(shè)計(jì)在對模塊選型和電路搭建之后,需要進(jìn)行系統(tǒng)的設(shè)計(jì),這是完成設(shè)計(jì)的重要一環(huán),是協(xié)調(diào)各個(gè)模塊正常運(yùn)行的基礎(chǔ)。系統(tǒng)軟件設(shè)計(jì)可分為兩個(gè)部分:第一部分為下位機(jī)程序的設(shè)計(jì),主要包括單片機(jī)主程序的設(shè)計(jì),傳感器子程序的設(shè)計(jì)以及數(shù)據(jù)的濾波程序;第二部分設(shè)計(jì)上位機(jī)Unity3D腳本程序,包括串口接收,字節(jié)處理等功能。通過這兩部分的設(shè)計(jì),最終實(shí)現(xiàn)虛擬手對現(xiàn)實(shí)世界中手的顯示和追蹤。系統(tǒng)軟件流程圖如圖9所示。圖9系統(tǒng)軟件流程圖首先給單片機(jī)上電,系統(tǒng)開始運(yùn)行。隨后對模塊進(jìn)行初始化,初始化成功,讀取數(shù)據(jù)采集模塊中的數(shù)據(jù),初始化失敗則一直發(fā)送初始化指令。模塊中的數(shù)據(jù)被單片機(jī)接收之后,開始進(jìn)行數(shù)據(jù)的解算以及濾波。再打開串口,將數(shù)據(jù)發(fā)送給上位機(jī),上位機(jī)判斷有沒有接收到串口的數(shù)據(jù),若有對數(shù)據(jù)進(jìn)行解析,并更新Unity3D中模型屬性的數(shù)據(jù),然后返回循環(huán)。若沒有接收到數(shù)據(jù),上位機(jī)則無響應(yīng),同時(shí)系統(tǒng)也返回循環(huán)。4.1軟件介紹在程序設(shè)計(jì)過程中,需要使用KeiluVision5以及VisualStudio進(jìn)行程序的編寫,下面對這兩款軟件進(jìn)行介紹。KeiluVision5是一款經(jīng)典的編寫C語言程序的軟件,該軟件擁有靈活的窗口管理系統(tǒng),方便代碼的閱讀。并且軟件內(nèi)部集成了C編譯器,連接器等強(qiáng)大的功能,可直接通過該軟件編譯并且下載程序,方便調(diào)試。VisualStudio是微軟開發(fā)的工具包系列產(chǎn)品,作為一款高效的編寫程序的軟件,能夠使用VisualStudio提供的通用代碼庫在Windows、Linux等大操作系統(tǒng)上快速開發(fā)應(yīng)用軟件。在編寫C#語言方面,配置簡單,適合Unity腳本的開發(fā)。本次設(shè)計(jì)使用的是2015版本的VisualStudio,相較于前面的幾代,此版本支持更多優(yōu)秀的功能,例如移動端的跨平臺開發(fā)、Web和云開發(fā)等。4.2下位機(jī)程序設(shè)計(jì)4.2.1單片機(jī)主程序設(shè)計(jì)在本系統(tǒng)下位機(jī)程序的設(shè)計(jì)中,首先需要對串口以及傳感器模塊進(jìn)行初始化,等待初始化成功后,單片機(jī)開始接收MPU6050部分發(fā)送的三軸加速度計(jì)以及三軸陀螺儀原始數(shù)據(jù),將讀取的數(shù)據(jù)進(jìn)行濾波處理以及姿態(tài)解算,等待與電腦建立通信后,將處理完成后的數(shù)據(jù)發(fā)送到PC端口。單片機(jī)控制著下位機(jī)的運(yùn)行以及上位機(jī)的輸入,在模塊初始化之后,單片機(jī)會進(jìn)入循環(huán)的處理運(yùn)行。單片機(jī)主程序設(shè)計(jì)如圖10所示。圖10單片機(jī)主程序4.2.2數(shù)據(jù)采集子程序設(shè)計(jì)在整個(gè)程序設(shè)計(jì)過程中,數(shù)據(jù)采集模塊作為本系統(tǒng)的輸入部分,起著至關(guān)重要的作用,對于MPU6050的操作主要有寫寄存器和讀寄存器兩個(gè)操作。在MPU6050模塊初始化后,如果要寫入MPU6050寄存器,需要在單片機(jī)發(fā)出開始位的信號之后,然后加上一個(gè)讀/寫位,其中0表示寫,1表示讀。直到第9個(gè)時(shí)鐘周期,MPU6050會產(chǎn)生一個(gè)應(yīng)答信號,然后單片機(jī)向MPU6050傳送寄存器的地址,仍然要有應(yīng)答信號,開始向傳送寄存器數(shù)據(jù),依次類推。如果要讀取MPU6050寄存器的值,首先由單片機(jī)產(chǎn)生一個(gè)開始信號,再繼續(xù)發(fā)送MPU6050設(shè)備地址和一個(gè)讀數(shù)據(jù)位,作為從設(shè)備的MPU6050開始產(chǎn)生應(yīng)答信號,并將寄存器數(shù)據(jù)發(fā)送給單片機(jī)。MPU6050和單片機(jī)的通信以單片機(jī)產(chǎn)生的拒絕應(yīng)答信號和結(jié)束標(biāo)志結(jié)束。拒絕應(yīng)答信號產(chǎn)生定義為SDA數(shù)據(jù)在第9個(gè)時(shí)鐘周期一直為高。本程序主要讀取MPU6050寄存器中存取的三軸加速度及三軸角速度的數(shù)據(jù),讀取寄存器流程圖如圖11所示:圖11MPU6050寄存器讀取流程MPU6050正確初始化之后,會向其寄存器寫入讀取的加速度和角速度,此時(shí)單片機(jī)需要向MPU6050發(fā)送開始位來確認(rèn)讀取數(shù)據(jù),再把此設(shè)備的地址發(fā)送以及讀信號發(fā)送給MPU6050,傳感器確認(rèn)了信息準(zhǔn)確之后,會產(chǎn)生一個(gè)應(yīng)答信號,單片機(jī)接收到之后繼續(xù)發(fā)送寄存器地址,開始讀取MPU6050中的數(shù)據(jù)。4.2.3姿態(tài)解算子程序設(shè)計(jì)在將MPU6050的數(shù)據(jù)讀取到之后,要對數(shù)據(jù)進(jìn)行姿態(tài)解算,將加速度以及角速度解算成三軸旋轉(zhuǎn)的角度,首先對加速度進(jìn)行解算。當(dāng)MPU6050水平置于地面上時(shí),Z軸受到重力加速度的影響,其加速度為1g,X軸以及Y軸的加速度為0g??梢詫⑵鋵懗上蛄?0,0,g),對每個(gè)軸進(jìn)行旋轉(zhuǎn)就是對此向量進(jìn)行操作。基于此,可以將一個(gè)任意的旋轉(zhuǎn)分解為三步,先對Z軸進(jìn)行旋轉(zhuǎn):(4.1)其中,為Z軸旋轉(zhuǎn)的角度,、、分別為三個(gè)軸繞Z軸旋轉(zhuǎn)后的加速度。再對Y軸進(jìn)行旋轉(zhuǎn):(4.2)其中,為Y軸旋轉(zhuǎn)的角度,、、分別為三個(gè)軸繞Y軸旋轉(zhuǎn)后的加速度。最后對X軸進(jìn)行旋轉(zhuǎn):(4.3)其中,為X軸旋轉(zhuǎn)的角度,、、分別為三個(gè)軸繞X軸旋轉(zhuǎn)后的加速度。通過對上述各部分的運(yùn)算最終可以求得:(4.4)這是一個(gè)關(guān)于,的方程,通過解這個(gè)方程,可以求得,。以上是對加速度的解算,在繞Z軸旋轉(zhuǎn)過程中,重力加速度始終為g,因此通過加速度無法解算。角速度解算成的角度主要用于姿態(tài)的更新,主要通過對角速度進(jìn)行積分,計(jì)算出旋轉(zhuǎn)的角度。假設(shè)時(shí)刻X軸旋轉(zhuǎn)的角度為,時(shí)刻內(nèi)角度變化量為,所以時(shí)刻的角度為。在角速度的解算過程中,Z軸旋轉(zhuǎn)的角度為時(shí),用于姿態(tài)更新的角速度則為,此時(shí)各軸讀到角速度可寫為:(4.5)此時(shí)繞Y軸的角速度還需要經(jīng)歷一次旋轉(zhuǎn)變化,而繞X軸就不需要。所以總的各軸角速度為:(4.6)經(jīng)過簡化、反解可得:(4.7)、、等求得的角度為姿態(tài)更新時(shí)需要用到的角度。角速度的解算是對相同時(shí)間段內(nèi)的角速度進(jìn)行積分,得到角度的變化量,將其加到上一個(gè)時(shí)刻角度,得到新的角度,這種方法可以求出、、三個(gè)角度。4.2.4濾波子程序設(shè)計(jì)MPU6050讀取數(shù)據(jù)會有噪聲的影響,產(chǎn)生零漂現(xiàn)象,所以要對數(shù)據(jù)進(jìn)行濾波處理。本設(shè)計(jì)濾波方案采用的是卡爾曼濾波??柭鼮V波作為最優(yōu)化自回歸數(shù)據(jù)的處理算法,能夠去除干擾及噪聲還原近乎真實(shí)的數(shù)據(jù)。卡爾曼濾波于上個(gè)世紀(jì)60年代被提出,其利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)的輸入和輸出觀測數(shù)據(jù),對系統(tǒng)的狀態(tài)進(jìn)行最優(yōu)估計(jì)。在觀測數(shù)據(jù)中,這種最優(yōu)估計(jì)已經(jīng)考慮了噪聲以及干擾的影響,所以其廣義上可以認(rèn)為是一個(gè)濾波過程。假如在不同的時(shí)刻系統(tǒng)受到了一定的擾動以及測量上誤差的影響,此時(shí)只需要為它的某些統(tǒng)計(jì)數(shù)據(jù)設(shè)定一個(gè)適當(dāng)?shù)臉?biāo)準(zhǔn),然后對這些難以處理的噪聲信號進(jìn)行處理,所求的誤差進(jìn)行一個(gè)平均運(yùn)算,就可以估計(jì)認(rèn)為所得數(shù)值為最小真實(shí)信號值,由此可以看出卡爾曼濾波是可以處理各種復(fù)雜的信號和噪聲的。所以,各行各業(yè)中都有應(yīng)用到卡爾曼濾波理論,得益于這一理論的出現(xiàn),在該理論所應(yīng)用到的領(lǐng)域中逐漸涌現(xiàn)出具有代表性和劃時(shí)代性的應(yīng)用成就[13]??柭鼮V波的核心為2個(gè)時(shí)間更新方程以及3個(gè)狀態(tài)更新方程。時(shí)間更新方程是基于系統(tǒng)的上一狀態(tài)而預(yù)測出現(xiàn)在的狀態(tài):(4.8)(4.9)為系統(tǒng)噪聲方差,這里忽略了系統(tǒng)的噪聲,這個(gè)系統(tǒng)的噪聲就成了需要手動設(shè)置的值,其意義在于能夠給人工干預(yù)留下一個(gè)入口。是協(xié)方差,描述估計(jì)值的準(zhǔn)確程度。計(jì)算現(xiàn)在狀態(tài)的最優(yōu)化估算值:(4.10)(4.11)其中為卡爾曼增益,其作用是用來調(diào)整濾波程度的大小??柭鼮V波器在每一次循環(huán)處理最后還需要更新迭代狀態(tài)下的的協(xié)方差。(4.12)其中為1的矩陣,對于只有一個(gè)模型測量的量,=1。當(dāng)系統(tǒng)進(jìn)入狀態(tài)時(shí),就是式子(4.9)的。這樣,算法就可以自回歸運(yùn)算下去[14]。在本設(shè)計(jì)中,卡爾曼濾波設(shè)計(jì)思路如圖12所示。圖12卡爾曼濾波設(shè)計(jì)思路通過加速度求出的旋轉(zhuǎn)角度,將其輸入卡爾曼濾波器,使用角速度求出的角度來進(jìn)行數(shù)據(jù)的融合計(jì)算,從而得出可靠穩(wěn)定的新數(shù)據(jù),此數(shù)據(jù)為本設(shè)計(jì)所求真實(shí)角度。4.3上位機(jī)程序設(shè)計(jì)Unity3D是一款由UnityTechnologies公司開發(fā)的虛擬現(xiàn)實(shí)引擎軟件,具有很高的靈活性。Unity3D作為一個(gè)先進(jìn)的國際專業(yè)游戲引擎,能夠更方便的創(chuàng)建游戲以及創(chuàng)造三維互動內(nèi)容。Unity3D能夠?yàn)閯?chuàng)作者提供超過20個(gè)平臺創(chuàng)作和優(yōu)化,包括一些大型主流平臺,如Windows、iOS、Android、Swtich等,內(nèi)部組件能夠及時(shí)的更新跌代[15]。Unity3D在移動平臺幾乎成為3D游戲開發(fā)的標(biāo)準(zhǔn)工具,使用它開發(fā)的游戲數(shù)不勝數(shù)。本次模型設(shè)計(jì)及演示使用的是2019版本。在Unity3D上顯示傳感器發(fā)送的數(shù)據(jù),首先需要建立實(shí)際的模型,通過Unity3D中的各個(gè)組件來設(shè)計(jì)手的模型,并在窗口以文本形式顯示出數(shù)據(jù),便于對模型進(jìn)行更加直觀的調(diào)試。建立模型完成后,需要通過腳本來控制Unity3D實(shí)時(shí)讀取端口數(shù)據(jù),并將腳本附加給Unity3D的模型。上位機(jī)運(yùn)行流程圖如圖13所示,主要有以下幾個(gè)步驟:(1)創(chuàng)建串口并設(shè)置端口的基本信息,主要包括端口的串口名,波特率,校驗(yàn)位,數(shù)據(jù)位,停止位。(2)使用內(nèi)置串口類,進(jìn)行串口數(shù)據(jù)的接收。設(shè)置的波特率為9600,則設(shè)置每次接收的字節(jié)數(shù)組長度為24位,并判斷是否接收到“\r”,結(jié)束本次接收。圖13上位機(jī)程序流程圖(3)接收的數(shù)據(jù)為十六進(jìn)制字節(jié)的數(shù)組,需要將其轉(zhuǎn)換為明文。首先將數(shù)組轉(zhuǎn)換成字符串,并在數(shù)組的每一個(gè)元素之間插入空格組成字符串,再使用C#中的convert方法進(jìn)行轉(zhuǎn)換。(4)更新Unity3D模型的數(shù)據(jù),在Unity3D固定更新函數(shù)FixedUpdate中,將旋轉(zhuǎn)的角度發(fā)送至模型的旋轉(zhuǎn)組件以及文本組件,F(xiàn)ixedUpdate的更新頻率為每0.0025s更新一次。
第5章系統(tǒng)調(diào)試在完成對硬件電路以及系統(tǒng)軟件的設(shè)計(jì)之后,首先根據(jù)原理圖,在面包板上搭建仿真電路。然后通過CH340模塊燒寫程序,正確連接單片機(jī)與PC的通信線路。根據(jù)出現(xiàn)的情況不斷進(jìn)行調(diào)試和改進(jìn)。對于本設(shè)計(jì),使用到的軟件較多,需要調(diào)試的參數(shù)也很多,下面從一些常用的軟件介紹展開,從硬件和軟件兩個(gè)方面介紹對系統(tǒng)調(diào)試時(shí)出現(xiàn)的一些問題及分析。5.1硬件調(diào)試本次硬件設(shè)計(jì)過程中,我主要進(jìn)行了以下的幾個(gè)步驟:(1)在加工PCB板之前,首先對自己的原理圖以及PCB是否出現(xiàn)問題。檢查過程中發(fā)現(xiàn)PCB圖未正確走線,單層板會導(dǎo)致直接短路。(2)拿到PCB裸板之后,仔細(xì)檢查加工怎么樣,使用萬用表測量電源和地有沒有被短路。未發(fā)現(xiàn)異常后,再進(jìn)行電子元器件的焊接。焊接一部分調(diào)試一部分元器件,降低不必要的工作量,以達(dá)到事半功倍的效果。焊接完成后,檢查是否有漏焊、虛焊,使得每一個(gè)焊點(diǎn)飽滿勻稱,確保板子的質(zhì)量以及不會因?yàn)槎秳釉斐珊更c(diǎn)的脫落。在檢測過程中,發(fā)現(xiàn)板子上兩個(gè)焊點(diǎn)中間的錫因?yàn)檎`操作沒有被清理干凈,進(jìn)行及時(shí)處理之后,未有新問題發(fā)現(xiàn)。(3)接著通電進(jìn)行整機(jī)的調(diào)試,首先觀察單片機(jī)上檢測短路的LED是否亮起,以防出現(xiàn)線路短路問題。再檢查是否有元器件過熱問題出現(xiàn),未出現(xiàn)任何問題,硬件調(diào)試完成。5.2軟件調(diào)試軟件調(diào)試是一個(gè)系統(tǒng)設(shè)計(jì)的重要步驟,軟件調(diào)試的過程問題也是很多的。下面對軟件的調(diào)試步驟進(jìn)行說明。(1)進(jìn)行程序的燒寫。為了方便調(diào)試,同樣使用CH340進(jìn)行ISP方式下載程序燒寫軟件為FlyMcu。將單片機(jī)的BOOT0置1,單片機(jī)將從系統(tǒng)存儲器啟動。上電之后,選擇正確的端口進(jìn)行程序下載。在下載之前,還要檢查DTR和RTS的是否設(shè)置正確,正常情況下缺省即為正確,否則下載可能失敗。(2)燒寫完成之后,將BOOT0置0,上電之后,程序開始運(yùn)行,先使用串口助手讀取串口接收的數(shù)據(jù)是否是期望的數(shù)據(jù)。要注意端口號和波特率是否正確,否則讀不到數(shù)據(jù)或者讀到的數(shù)據(jù)出現(xiàn)亂碼。(3)在串口助手出現(xiàn)期望的數(shù)據(jù)之后,可以將上位機(jī)進(jìn)行運(yùn)行,讀取串口的數(shù)據(jù)。如果在Unity3D中無數(shù)據(jù)顯示,要檢查是否將C#腳本正確移到模型組件里。在交互的過程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年太湖創(chuàng)意職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及參考答案詳解1套
- 2026年吐魯番職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案詳解
- 2026年長沙南方職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫及答案詳解一套
- 2026年江蘇省泰州市單招職業(yè)傾向性測試題庫及完整答案詳解1套
- 2026年西安電力機(jī)械制造公司機(jī)電學(xué)院單招職業(yè)傾向性考試題庫及答案詳解一套
- 2026年江西工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫及答案詳解一套
- 2026年錦州師范高等??茖W(xué)校單招職業(yè)技能考試題庫及參考答案詳解1套
- 2026年黑龍江藝術(shù)職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及參考答案詳解
- 2026年遼寧建筑職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案詳解1套
- 2026年吉林電子信息職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及參考答案詳解1套
- MOOC 跨文化交際通識通論-揚(yáng)州大學(xué) 中國大學(xué)慕課答案
- 新能源汽車充電樁專屬安裝竣工驗(yàn)收單模板
- 華文慕課計(jì)算機(jī)網(wǎng)絡(luò)原理和因特網(wǎng)(北京大學(xué))章節(jié)測驗(yàn)答案
- 員工激勵管理方案模板
- GB/T 5008.2-2005起動用鉛酸蓄電池產(chǎn)品品種和規(guī)格
- GB/T 27696-2011一般起重用4級鍛造吊環(huán)螺栓
- GB/T 25000.10-2016系統(tǒng)與軟件工程系統(tǒng)與軟件質(zhì)量要求和評價(jià)(SQuaRE)第10部分:系統(tǒng)與軟件質(zhì)量模型
- GB/T 21470-2008錘上鋼質(zhì)自由鍛件機(jī)械加工余量與公差盤、柱、環(huán)、筒類
- GB/T 14260-2010散裝重有色金屬浮選精礦取樣、制樣通則
- GB/T 1048-2019管道元件公稱壓力的定義和選用
- 凱石量化對沖2號基金合同
評論
0/150
提交評論