国产性70yerg老太,狠狠的日,欧美人与动牲交a免费,中文字幕成人网站

基本信息

項(xiàng)目名稱:
無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)
小類:
信息技術(shù)
簡介:
本設(shè)計(jì)采用ZigBee無線傳感器網(wǎng)絡(luò)和SimpliciTI網(wǎng)絡(luò)實(shí)現(xiàn)計(jì)算機(jī)終端對機(jī)器人進(jìn)行無線控制與定位。通過組建ZigBee無線傳感器網(wǎng)絡(luò),將大量無線的傳感器節(jié)點(diǎn)組網(wǎng),計(jì)算機(jī)終端可與機(jī)器人之間進(jìn)行無線數(shù)據(jù)傳輸,不僅能夠?qū)C(jī)器人工作環(huán)境進(jìn)行實(shí)時(shí)數(shù)據(jù)監(jiān)測,而且能夠?qū)C(jī)器人無線控制以及無線定位。 經(jīng)測試:機(jī)器人在發(fā)出命令到動(dòng)作時(shí)間平均響應(yīng)時(shí)間為0.8s;在室內(nèi)的環(huán)境下無線操控范圍距離小于20m,室外空曠地小于100m;定位功能受到環(huán)境和節(jié)點(diǎn)位置影響較大,定位精度小于5m;視頻的最大傳輸值平均為7Mb/s;通信誤碼率<1/10000;信噪比(SNR)為60dB~75dB。 無線定位機(jī)器人既可獨(dú)立工作,將采集各種數(shù)據(jù)傳回PC控制端;PC控制端也可對其的進(jìn)行遠(yuǎn)程操縱以及精確定位、目標(biāo)跟蹤。利用遠(yuǎn)程監(jiān)控克服了全人工智能無法應(yīng)對突發(fā)情況的缺點(diǎn),將人工智能和人工干預(yù)相結(jié)合,因此大大加強(qiáng)了系統(tǒng)的靈活性與復(fù)雜環(huán)境的適用性??梢云毡閼?yīng)用于工廠、車站物流運(yùn)輸,小區(qū)安防巡邏、醫(yī)療護(hù)理、高危場所等領(lǐng)域。
詳細(xì)介紹:
無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng) 1. 系統(tǒng)設(shè)計(jì) 1.1 系統(tǒng)結(jié)構(gòu)及功能 1.2 方案論證與選擇 1.2.1 無線通信網(wǎng)絡(luò)的方案論證與選擇 1.2.2 定位方式方案論證與選擇 1.2.3 定位算法方案論證與選擇 1.2.4 智能避障的設(shè)計(jì)方案論證與選擇 2. 系統(tǒng)單元設(shè)計(jì) 2.1 移動(dòng)平臺設(shè)計(jì) 2.1.1 移動(dòng)平臺結(jié)構(gòu)與性能 2.1.2 電機(jī)以及驅(qū)動(dòng)電路設(shè)計(jì) 2.1.3 超聲波測距儀設(shè)計(jì) 2.1.4 紅外避障模塊設(shè)計(jì) 2.1.5 軌跡記錄儀設(shè)計(jì) 2.2 控制電路設(shè)計(jì) 2.3 視頻及其傳輸模塊設(shè)計(jì) 2.4 ZigBee無線傳感器網(wǎng)絡(luò)硬件設(shè)計(jì) 2.4.1監(jiān)控終端以及監(jiān)控節(jié)點(diǎn)硬件設(shè)計(jì) 2.4.2 無線定位節(jié)點(diǎn)硬件設(shè)計(jì) 2.5 SimpliciTI無線通信網(wǎng)絡(luò)設(shè)計(jì) 2.5.1 SimpliciTI無線通信網(wǎng)絡(luò)軟件設(shè)計(jì) 2.5.3 SimpliciTI無線通信網(wǎng)絡(luò)硬件平臺設(shè)計(jì) 3. ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì) 3.1 開發(fā)工具IAR Embedded Workbench for MCS-51簡介 3.2 建立ZigBee無線傳感器網(wǎng)絡(luò) 3.2.1啟動(dòng)ZigBee網(wǎng)絡(luò)協(xié)調(diào)器 3.2.2允許設(shè)備入網(wǎng) 3.2.3設(shè)備入網(wǎng) 3.3 ZigBee無線傳感器網(wǎng)絡(luò)數(shù)據(jù)服務(wù) 3.3.1 NWK數(shù)據(jù)服務(wù)請求 3.3.2 NWK數(shù)據(jù)服務(wù)證實(shí) 4. ZigBee無線傳感器網(wǎng)絡(luò)定位系統(tǒng) 4.1 ZigBee無線傳感器網(wǎng)絡(luò)定位機(jī)制 4.2 ZigBee無線傳感器網(wǎng)絡(luò)定位引擎配置 4.3 ZigBee無線傳感器網(wǎng)絡(luò)定位系統(tǒng)節(jié)點(diǎn)的設(shè)置與部署 5. 程序設(shè)計(jì) 5.1 硬件設(shè)計(jì)和軟件設(shè)計(jì)的關(guān)系 5.2 上位機(jī)部分程序設(shè)計(jì) 5.2.1 程序流程圖 5.3 下位機(jī)部分程序設(shè)計(jì) 5.3.1 程序流程圖 5.3.3 避障部分程序設(shè)計(jì) 5.3.3 測距部分程序設(shè)計(jì) 5.3.4 軌跡記錄部分程序設(shè)計(jì) 5.4 無線通信部分程序設(shè)計(jì) 5.5 無線定位部分程序設(shè)計(jì) 6. 系統(tǒng)測試 6.1 功能測試 6.2 性能測試 7. 結(jié)論 8. 參考文獻(xiàn) 附錄1 使用說明 附錄2 主要元器件清單 附錄3 電路原理圖 附錄3.1 移動(dòng)平臺控制部分電路原理圖 附錄3.2 CC1110無線網(wǎng)絡(luò)節(jié)點(diǎn)電路原理圖 附錄3.3 CC2430/CC2431無線網(wǎng)絡(luò)節(jié)點(diǎn)電路原理圖 附錄4 電路印制板圖 附錄4.1 移動(dòng)平臺控制部分印制板圖 附錄4.2 CC1110無線網(wǎng)絡(luò)節(jié)點(diǎn)印制板圖(頂層) 附錄4.3 CC1110無線網(wǎng)絡(luò)節(jié)點(diǎn)印制板圖(底層) 附錄4.4 CC2430/CC2431無線網(wǎng)絡(luò)節(jié)點(diǎn)印制板圖(頂層) 附錄4.3 CC2430/CC2431無線網(wǎng)絡(luò)節(jié)點(diǎn)印制板圖(底層) 附錄5 程序清單 附錄5.1 電機(jī)控制程序清單 附錄5.2 上位機(jī)主控模塊程序清單 附錄5.3 下位機(jī)主控模塊程序清單 附錄5.4 CC2430參考節(jié)點(diǎn)代碼 附錄5.5 CC2431定位節(jié)點(diǎn)代碼 附錄5.6 ZigBee協(xié)議協(xié)調(diào)器操作代碼 附錄5.7 CC1110 AP節(jié)點(diǎn)代碼 附錄5.8 CC1110 ED節(jié)點(diǎn)代碼 附錄6 實(shí)物圖 附錄6.1 移動(dòng)平臺實(shí)物圖 附錄6.2 無線網(wǎng)絡(luò)節(jié)點(diǎn)及其網(wǎng)關(guān)實(shí)物圖 1. 系統(tǒng)設(shè)計(jì) 1.1 系統(tǒng)結(jié)構(gòu)及功能 本系統(tǒng)可以分成機(jī)器人工作終端、無線傳感器監(jiān)控網(wǎng)絡(luò)和PC監(jiān)控終端,通過ZigBee和SimpliciTI無線通信網(wǎng)絡(luò)網(wǎng)絡(luò)將二者連接起來。機(jī)器人工作終端以移動(dòng)平臺為載體,搭載自動(dòng)化設(shè)備和傳感器,并通過無線網(wǎng)絡(luò)將各類傳感器收集獲得的數(shù)據(jù)由傳輸至PC監(jiān)控終端。同時(shí)PC監(jiān)控終端也可以通過無線傳感器監(jiān)控網(wǎng)絡(luò)上傳的數(shù)據(jù)。這樣PC監(jiān)控終端既可獲得各機(jī)器人工作終端的位置,亦可對機(jī)器人的工作環(huán)境和情況進(jìn)行實(shí)時(shí)監(jiān)視,在必要時(shí)對機(jī)器人終端通過SimpliciTI無線通信網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程無線操縱。 監(jiān)控終端由數(shù)據(jù)中心與電腦組成。數(shù)據(jù)中心是由無線網(wǎng)絡(luò)的無線網(wǎng)關(guān)構(gòu)成,在兩種網(wǎng)絡(luò)中分別由Zigbee無線網(wǎng)關(guān)和SimpliciTI 無線網(wǎng)關(guān)所擔(dān)任,數(shù)據(jù)中心負(fù)責(zé)網(wǎng)絡(luò)管理,擔(dān)當(dāng)網(wǎng)絡(luò)內(nèi)設(shè)備成員管理任務(wù)并為終端節(jié)點(diǎn)提供數(shù)據(jù)儲存及轉(zhuǎn)發(fā)。此外監(jiān)控終端還包括一個(gè)無線視頻監(jiān)控器,其攝像端安置于工作終端,通過此方式加大了對工作終端監(jiān)控力度。 機(jī)器人工作終端系統(tǒng)是由微控制器與網(wǎng)絡(luò)節(jié)點(diǎn)、傳感器、移動(dòng)平臺共同組成,在微控制器的統(tǒng)一調(diào)度之下,使機(jī)器人自主工作,將采集到的工作環(huán)境信息及位置信息經(jīng)無線網(wǎng)絡(luò)傳回?zé)o線網(wǎng)關(guān),并能接收控制信號引導(dǎo)機(jī)器人動(dòng)作。 無線傳感器監(jiān)測網(wǎng)絡(luò)是由大量的監(jiān)控節(jié)點(diǎn)構(gòu)成,監(jiān)測節(jié)點(diǎn)攜帶了所需要的傳感器,大量的監(jiān)測節(jié)點(diǎn)形成的無線網(wǎng)絡(luò)用于收集機(jī)器人發(fā)送的位置信息、環(huán)境信息,當(dāng)機(jī)器人工作位置在PC監(jiān)控終端“1跳”范圍之外時(shí),監(jiān)測節(jié)點(diǎn)還可以擔(dān)任數(shù)據(jù)傳輸中轉(zhuǎn)任務(wù)。 1.2 方案的確定 1.2.1 無線通信網(wǎng)絡(luò)方案 無線通信方式有工作頻段、覆蓋范圍、網(wǎng)絡(luò)容量、傳輸速度、安全性、功耗等性能指標(biāo)。從傳輸速率的角度來劃分可以分為兩大類。一類是以無線高保真Wi-Fi和藍(lán)牙(Bluetooth) 為代表的高速無線通信技術(shù),一類是以Zigbee為代表的低速無線通信網(wǎng)絡(luò)技術(shù)。從設(shè)計(jì)的需求來分析,要求通信方式必須易于組網(wǎng),對通信速率要求相對較低,抗干擾以及安全性較弱,對頻段沒有特殊的要求。 根據(jù)對不同方案的初步分析,可以看到各種網(wǎng)絡(luò)的性能以及應(yīng)用范圍。Wi-Fi技術(shù)性能優(yōu)越,滿足了多媒體以及Internet數(shù)據(jù)的傳輸要求,但是將其應(yīng)用與本設(shè)計(jì)就將大大浪費(fèi)資源,并且其高功耗使得系統(tǒng)持續(xù)工作時(shí)間很短。Bluetooth的傳輸速度也達(dá)到了1Mbit/s,而且安全性也相對較高,雖然設(shè)備的通用性較高,但是協(xié)議復(fù)雜、組網(wǎng)不夠便利且覆蓋范圍較小。由以上分析可知Wi-Fi和Bluetooth 都是很出色的無線系統(tǒng),實(shí)際上它擁有最大的無線技術(shù)容量,但是這些技術(shù)的目標(biāo)并不是以監(jiān)控為主要目標(biāo)的無線應(yīng)用。相對于簡單的低功耗應(yīng)用來說,兩者的功能都過于強(qiáng)大,產(chǎn)生資源的浪費(fèi)。因此Zigbee 為代表的低速無線通信技術(shù)應(yīng)為方案的首選。從數(shù)據(jù)速率以及覆蓋范圍、功耗二者沒有太大的區(qū)別,但是Zigbee網(wǎng)絡(luò)支持一種定位技術(shù),相比之下其監(jiān)控功能強(qiáng)大很多。從Zigbee協(xié)議結(jié)構(gòu)與SimpliciTI協(xié)議結(jié)構(gòu)相比,SimpliciTI協(xié)議取消了物理層(PHY)和數(shù)據(jù)鏈路層(MAC),使協(xié)議更加簡化。正是由于SimpliciTI拋棄了很多保障功能,其數(shù)據(jù)速率會更快、功耗會更低。因此將二者結(jié)合使用,發(fā)揮自身的優(yōu)勢。 1.2.2 定位方案 根據(jù)機(jī)器人的工作環(huán)境的不同可分為室內(nèi)、室外兩種情況,并且這兩種情況下都有與之相適應(yīng)的的定位技術(shù)。目前廣泛應(yīng)用于定位領(lǐng)域的是GPS技術(shù),GPS幾乎可以覆蓋全球并且民用是免費(fèi)的。相對于GPS而言在某些場合下針對局部范圍內(nèi)的定位方式大多都必須根據(jù)實(shí)際情況架設(shè)RF基站,在組成無線網(wǎng)絡(luò)之后才能針對設(shè)備終端信號進(jìn)行位置判斷。 在機(jī)器人定位方式的選擇中,GPS定位系統(tǒng)相對小型設(shè)備定位精度比較低,而且當(dāng)移動(dòng)平臺在室內(nèi)工作時(shí)GPS又需要對設(shè)備進(jìn)行改進(jìn),此方案在應(yīng)用中會遇到很多實(shí)際問題。而上述局部定位方式,在架設(shè)基站與組建局域網(wǎng)的過程中會遇到復(fù)雜的問題,并且在接收與處理信號方面對硬件有更高的要求,實(shí)現(xiàn)起來所需的算法以及數(shù)據(jù)處理非常復(fù)雜。相對而言基于CC2431無線定位引擎的定位系統(tǒng)的開發(fā)和使用比較簡單,而且由于建立ZigBee無線傳感器網(wǎng)絡(luò)的基礎(chǔ)上,大大節(jié)約了系統(tǒng)整體的軟硬件開銷。此外需再結(jié)合多種傳感器對機(jī)器人進(jìn)行輔助定位。 1.2.3 定位算法方案 在基于ZigBee協(xié)議的無線傳感器網(wǎng)絡(luò)中,其定位機(jī)制可以簡述為:根據(jù)有限的位置已知的信標(biāo)節(jié)點(diǎn)來確定網(wǎng)絡(luò)中其他節(jié)點(diǎn)的位置,在無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)之間建立起位置關(guān)聯(lián)的機(jī)制。在該網(wǎng)絡(luò)中需要定位的節(jié)點(diǎn)稱之為未知節(jié)點(diǎn)(Blind node),而已知位置并需確定該網(wǎng)絡(luò)中未知節(jié)點(diǎn)位置的節(jié)點(diǎn)稱之為參考節(jié)點(diǎn)(Reference node),在一個(gè)節(jié)點(diǎn)通信半徑范圍的可直接通信的節(jié)點(diǎn)稱之為鄰節(jié)點(diǎn)(Neighbor node)。 在基于ZigBee協(xié)議的無線傳感器網(wǎng)絡(luò)中,傳感器節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)目大、能量有限、可靠性差,甚至部署都有不確定性,此外節(jié)點(diǎn)通信能力、數(shù)據(jù)儲存和處理能力有限。因此建立在ZigBee無線傳感器網(wǎng)絡(luò)上的定位技術(shù),需要針對無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量多,網(wǎng)絡(luò)規(guī)模大的特點(diǎn),滿足其低成本、低功耗、低依賴度和高適應(yīng)性的要求。 在ZigBee無線傳感器網(wǎng)絡(luò)當(dāng)中,由CC2431芯片組成的節(jié)點(diǎn)模塊使用芯片已有的定位引擎精確地讀出RSSI值,進(jìn)一步處理和傳輸RSSI值,不需要增加額外硬件的。在測定節(jié)點(diǎn)間距離的基礎(chǔ)上,通過參考節(jié)點(diǎn)計(jì)算未知節(jié)點(diǎn)的方法有多種,從最簡單三點(diǎn)定位直至多點(diǎn)定位可以由幾何關(guān)系建立方程組從而求得未知節(jié)點(diǎn)的位置。 在大規(guī)模的無線傳感器網(wǎng)絡(luò)中,這種簡單的定位算法不可能適應(yīng),因此在此基礎(chǔ)之上必須改進(jìn)網(wǎng)絡(luò)節(jié)點(diǎn)的部署和定位算法。為了約束網(wǎng)絡(luò)的無限擴(kuò)大和節(jié)點(diǎn)之間的復(fù)雜無序狀態(tài),按照每個(gè)未知節(jié)點(diǎn)和周圍節(jié)點(diǎn)相近的位置關(guān)系自動(dòng)組合,形成若干個(gè)單元,通過多個(gè)未知節(jié)點(diǎn)之間的距離信息將各單元相組合,形成相對的坐標(biāo)系統(tǒng)。從其中劃分出邊界節(jié)點(diǎn),通過對周圍單元網(wǎng)絡(luò)的約束關(guān)系,從而確定了全局坐標(biāo)下各單元網(wǎng)絡(luò)的坐標(biāo)變換矩陣。進(jìn)一步將網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)一步細(xì)分為:參考節(jié)點(diǎn)、已知節(jié)點(diǎn)、準(zhǔn)已知節(jié)點(diǎn)、邊界節(jié)點(diǎn)、未知節(jié)點(diǎn)。準(zhǔn)已知節(jié)點(diǎn)是指單位網(wǎng)絡(luò)內(nèi)局部坐標(biāo)系下位置已知點(diǎn),而局部坐標(biāo)系又可通過坐標(biāo)變換矩陣同全局坐標(biāo)系相轉(zhuǎn)換,最終確定了每一節(jié)點(diǎn)的位置。 目前在各種領(lǐng)域內(nèi)都有與其相適應(yīng)的合適算法,例如DV-HOP、EUCLIDEAN、ROBUST POSITION等算法,它們都各自用來解決不同的問題支持不同的應(yīng)用范圍。在本設(shè)計(jì)中由于網(wǎng)絡(luò)沒有形成很大規(guī)模,因此只需要簡單的算法既可。 CC2431的定位算法為基于處理RSSI方法,定位方案示意圖。在此坐標(biāo)系下,所以參考節(jié)點(diǎn)的位置信息可以簡化為(x,y)的形式。當(dāng)進(jìn)行定位檢測時(shí)未知節(jié)點(diǎn)(Blind node)向各參考節(jié)點(diǎn)(Reference node)發(fā)出請求并接收參考節(jié)點(diǎn)的響應(yīng)信號,各參考節(jié)點(diǎn)向未知節(jié)點(diǎn)發(fā)送包含參考節(jié)點(diǎn)“X”和“Y”位置信息的數(shù)據(jù)包,未知節(jié)點(diǎn)讀出接收到的RSSI數(shù)值,并送入硬件引擎。此外定位計(jì)算能夠在每一個(gè)未知節(jié)點(diǎn)上所運(yùn)行,運(yùn)算被分散,只有傳送計(jì)算后的位置,這樣減少了在網(wǎng)絡(luò)中傳輸數(shù)據(jù)的總量。因此在簡易的條件下,以CC2431芯片為基礎(chǔ)的ZigBee定位方案是最佳的選擇。 1.2.4 智能避障方案 超聲波傳感器相比之下檢測速度快、范圍廣,并且超聲波傳感器可以測量移動(dòng)平臺至障礙物的距離。在本設(shè)計(jì)中超聲波傳感器是實(shí)現(xiàn)測量障礙物距離最佳的選擇。 2. 系統(tǒng)單元 無線定位機(jī)器人主要包括機(jī)器人終端、無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)和PC監(jiān)控端。機(jī)器人終端以車體機(jī)械平臺為載體,包含有控制器電路模塊、電機(jī)驅(qū)動(dòng)模塊、視頻圖像模塊、智能避障模塊、軌跡記錄儀模塊、CC2431定位模塊等部分。無線網(wǎng)絡(luò)節(jié)點(diǎn)是由多個(gè)CC2431無線模塊通過ZigBee協(xié)議組成一個(gè)無線網(wǎng)絡(luò),每個(gè)模塊可以安裝各種傳感器接收所在位置的數(shù)據(jù)并將其傳回?zé)o線網(wǎng)關(guān),最終上傳至PC控制端。同時(shí)無線網(wǎng)絡(luò)節(jié)點(diǎn)也可以對機(jī)器人終端進(jìn)行定位。 2.1 移動(dòng)平臺 移動(dòng)平臺的工作環(huán)境不確定,因此移動(dòng)平臺需要具有強(qiáng)勁的動(dòng)力,轉(zhuǎn)彎靈活爬坡能力好,于是本設(shè)計(jì)采用由步進(jìn)電機(jī)驅(qū)動(dòng)的兩輪履帶設(shè)計(jì)方案。從動(dòng)鏈輪的芯輪軸置于可前后和上下移動(dòng)的調(diào)節(jié)滑塊和彈性懸架上,使前輪不僅具有轉(zhuǎn)向作用又能夠起到驅(qū)動(dòng)作用,這樣移動(dòng)平臺牽引力得到增強(qiáng),滿足在負(fù)載較大時(shí)對牽引力的需求,轉(zhuǎn)向精度也大大提高并且具備了原地旋轉(zhuǎn)的能力。 2.1.1 移動(dòng)平臺結(jié)構(gòu)與性能 移動(dòng)平臺結(jié)構(gòu)與性能如下所示: 車體外形:180mm(長)× 125.5mm(寬)× 55mm(高),底盤高 9mm ,車輪直徑48mm ; 電機(jī):額定功率下輸出電流270mA; 齒輪:三級12:50; 扭矩大?。?1.2 kg?cm; 載重:7.5Kg; 速度:最大行駛速度30cm/s,通過調(diào)整PWM輸出可以控制移動(dòng)平臺的速度; 電池:采用鉛蓄電池,型號為BT- 12M HRSEALED LEAD.ACID BATTERY,重量為1.00Kg,最大充電電流為550mA,充電電壓為14.5V~15.0V。 根據(jù)移動(dòng)平臺的載重大小和速度的快慢不同,測試結(jié)果表明最長續(xù)航時(shí)間為3小時(shí)。 2.1.2 電機(jī)以及驅(qū)動(dòng)電路 電機(jī)作為移動(dòng)平臺移動(dòng)能力核心來源,直接關(guān)系到整個(gè)移動(dòng)平臺的性能,因此必須選取合適的電機(jī)。本移動(dòng)平臺采用了260直流電機(jī),針對市面上種類繁多的直流電機(jī)驅(qū)動(dòng)器集成電路芯片,結(jié)合大量的260直流電機(jī)工作的實(shí)際數(shù)據(jù)進(jìn)行分析。主要以移動(dòng)平臺堵轉(zhuǎn)時(shí)的最大電流,正常行駛中的平均電流,爬坡時(shí)的相對電流平均值,電機(jī)的工作電壓,以及要求的實(shí)時(shí)反應(yīng)速度為主要指標(biāo),最終確定選擇專用電機(jī)驅(qū)動(dòng)集成電路芯片LM18200來驅(qū)動(dòng)電機(jī)。 2.1.3 超聲波測距儀 超聲波測距儀的設(shè)計(jì)包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩個(gè)部分。將超聲波傳感器與舵機(jī)結(jié)合安裝,舵機(jī)在微控制器的控制下可旋轉(zhuǎn)180°,由舵機(jī)帶動(dòng)控制超聲波傳感器的旋轉(zhuǎn),利用一個(gè)超聲波傳感器檢測前方180°內(nèi)的障礙。相比單一的超聲波傳感器安裝方案視野更加廣闊,避障更強(qiáng)。這種方案不但節(jié)省了器件成本,而其節(jié)約了I/O口線的資源。使得避障模塊占用CPU資源少,CPU則可以更大發(fā)揮其功能。 2.1.4 紅外避障模塊 采用紅外傳感器E18-D80NK可探測是否存在前方障礙物。加裝施密特觸發(fā)器及濾光后,可以精確探測前方3厘米處是否有障礙物。此外在移動(dòng)平臺前方,左側(cè)和右側(cè)各安裝一只紅外傳感器。 2.1.5 軌跡記錄儀 通過記錄平臺直線移動(dòng)距離以及車體轉(zhuǎn)向角度可以達(dá)到記錄平臺的行進(jìn)軌跡的目的。記錄直線移動(dòng)距離可以通過測量車輪轉(zhuǎn)動(dòng)的次數(shù)與車輪周長即可,記錄移動(dòng)平臺轉(zhuǎn)動(dòng)角度通過軟件的方式記錄前后電機(jī)行進(jìn)時(shí)間和暫停時(shí)間從而間接測量移動(dòng)平臺的轉(zhuǎn)動(dòng)數(shù)據(jù)。記錄直線移動(dòng)距離采用霍爾集傳感器。 2.2 控制電路 移動(dòng)平臺的控制電路以P89V51RD2為核心,外圍設(shè)備包括電源電路、電機(jī)驅(qū)動(dòng)電路、軌跡記錄儀、紅外避障,障礙物距離檢測等模塊,完成了P89V51RD2與各工作模塊通信,并對其進(jìn)行統(tǒng)一協(xié)調(diào)控制。 2.3 視頻及其傳輸模塊 該系統(tǒng)包括CCD成像系統(tǒng)和無線數(shù)據(jù)傳輸模塊。CCD (Charge Coupled Device)可以將可視范圍內(nèi)的景物通過感光單元逐點(diǎn)地進(jìn)行光電信號轉(zhuǎn)換、存儲和傳輸,輸出為視頻信號。無線視頻數(shù)據(jù)傳輸可以實(shí)現(xiàn)PC監(jiān)控端得到機(jī)器人周圍圖像,操控人員依據(jù)視頻圖像對機(jī)器人進(jìn)行遠(yuǎn)程無線操控。 2.4 ZigBee無線傳感器網(wǎng)絡(luò)硬件 Zigbee技術(shù)是一種具有統(tǒng)一技術(shù)標(biāo)準(zhǔn)的短距離無線通信技術(shù)。完整的Zigbee協(xié)議棧由物理層(PHY)、介質(zhì)訪問控制層(MAC)、網(wǎng)絡(luò)層、安全層和應(yīng)用層組成。其物理層和介質(zhì)訪問控制層協(xié)議為IEEE802.15.4協(xié)議標(biāo)準(zhǔn),網(wǎng)絡(luò)層和安全層由Zigbee聯(lián)盟制定,應(yīng)用層的開發(fā)應(yīng)根據(jù)用戶自己的需要,進(jìn)行進(jìn)一步開發(fā)利用。 物理層和介質(zhì)訪問控制層協(xié)議為IEEE802.15.4協(xié)議標(biāo)準(zhǔn),本設(shè)計(jì)選定工作層為2.4GHz物理層,該頻段定義了16個(gè)頻道。IEEE規(guī)范了物理層的傳輸速率和調(diào)制方式等相關(guān)內(nèi)容并且為MAC和物理層保留了一個(gè)無線通道的接口。 介質(zhì)訪問控制層處理所有物理層無線信道的接入,包括設(shè)備間無線鏈路的建立、維護(hù)和斷開,確定模式的幀傳送與接收,信道的接入與控制。在本設(shè)計(jì)中,Zigbee網(wǎng)絡(luò)采用星狀網(wǎng)絡(luò),需要中心控制設(shè)備,并且與PC相通信,組成PC監(jiān)控端。 ZigBee網(wǎng)絡(luò)層的主要功能是提供一些必要的函數(shù),確保ZIgBee的MAC層正常工作,并且為應(yīng)用層提供合適的服務(wù)接口。為了向應(yīng)用層提供其接口,網(wǎng)絡(luò)層提供了兩個(gè)必須的功能服務(wù)實(shí)體,它們分別為數(shù)據(jù)服務(wù)實(shí)體和管理服務(wù)實(shí)體。數(shù)據(jù)服務(wù)實(shí)體為數(shù)據(jù)提供服務(wù),在同一個(gè)內(nèi)部個(gè)域網(wǎng)中兩個(gè)或者更多的設(shè)備之間傳送數(shù)據(jù)時(shí),將按照應(yīng)用協(xié)議數(shù)據(jù)單元(APDU)的格式進(jìn)行傳送。網(wǎng)絡(luò)層管理實(shí)體提供網(wǎng)絡(luò)管理服務(wù),具有配置一個(gè)新的設(shè)備、初始化一個(gè)網(wǎng)絡(luò)、連接和斷開網(wǎng)絡(luò)、鄰居設(shè)備發(fā)現(xiàn)、路由發(fā)現(xiàn)、接收控制等功能。 在ZigBee網(wǎng)絡(luò)中存在三種邏輯設(shè)備類型:協(xié)調(diào)器 (Coordinator),路由器 (Router)和終端設(shè)備 (End-Device)。ZigBee網(wǎng)絡(luò)由一個(gè)協(xié)調(diào)器以及多個(gè)路由器和多個(gè)終端設(shè)備組成 。ZigBee無線傳感器終端節(jié)點(diǎn)都是由一個(gè)8位或16位的單片機(jī)和ZigBee射頻芯片組成。Ti-Chipcon公司生產(chǎn)的CC2430/31是其中的比較好的選擇。終端節(jié)點(diǎn)可分為參考節(jié)點(diǎn)和未知節(jié)點(diǎn)以及傳感器監(jiān)控節(jié)點(diǎn)。從硬件組成來說,各節(jié)點(diǎn)都是由CC2430/31為核心搭建的模塊。唯一不同是CC2431相比CC2430增加了一個(gè)定位引擎,也正是因此,搭載了CC2431的模塊可以作為未知節(jié)點(diǎn),參考節(jié)點(diǎn)可由CC2430擔(dān)任,未知節(jié)點(diǎn)通過對參考節(jié)點(diǎn)的檢測即可得出自身位置,完成對機(jī)器人的定位。 2.4.1監(jiān)控終端以及監(jiān)控節(jié)點(diǎn)硬件 監(jiān)控終端在網(wǎng)絡(luò)中是作為協(xié)調(diào)器存在,監(jiān)控節(jié)點(diǎn)是作為終端設(shè)備或者路由器存在。為了節(jié)約成本,不需要定位功能的監(jiān)控終端和監(jiān)控節(jié)點(diǎn)均可以由CC2430擔(dān)任。 CC2430是一款支持ZigBee協(xié)議的低功耗的片上系統(tǒng),它包括ZigBee 射頻前端、內(nèi)存和微控制器。 2.4.2無線定位節(jié)點(diǎn)硬件 無線定位節(jié)點(diǎn)要求芯片具有定位功能,因此無線定位節(jié)點(diǎn)模塊必須選用帶有定位引擎的CC2431芯片。定位引擎利用是一個(gè)從軟件層面看來極其簡單的輸入輸出端口,簡單地可以理解為寫入?yún)?shù),等待計(jì)算,讀出計(jì)算的位置結(jié)果。 2.5 SimpliciTI無線通信網(wǎng)絡(luò) 2.5.1 SimpliciTI無線通信網(wǎng)絡(luò)軟件 SimpliciTI 網(wǎng)絡(luò)協(xié)議能夠簡化施工,可實(shí)現(xiàn)MCU資源占用的最小化,從而降低了低功耗RF網(wǎng)絡(luò)的系統(tǒng)成本,對Zigbee網(wǎng)絡(luò)是一種很好的補(bǔ)充。SimpliciTI 網(wǎng)絡(luò)協(xié)議支持星狀網(wǎng)絡(luò)拓?fù)浜忘c(diǎn)對點(diǎn)對等網(wǎng)絡(luò)兩種基本的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。星狀網(wǎng)絡(luò)拓?fù)浒?個(gè)數(shù)據(jù)中心和若干個(gè)終端節(jié)點(diǎn)。數(shù)據(jù)中心負(fù)責(zé)網(wǎng)絡(luò)管理。為終端節(jié)點(diǎn)提供數(shù)據(jù)儲存轉(zhuǎn)發(fā),并可以管理網(wǎng)絡(luò)內(nèi)設(shè)備成員。SimpliciTI 網(wǎng)絡(luò)協(xié)議所支持的點(diǎn)對點(diǎn)通信,可以使數(shù)據(jù)中心(Access Point)儲存并發(fā)送數(shù)據(jù),并且通過范圍拓展設(shè)備(Range Extender)來擴(kuò)大網(wǎng)絡(luò)覆蓋范圍以支持四次網(wǎng)絡(luò)跳轉(zhuǎn)。 SimpliciTI協(xié)議主要包括。SimpliciTI 網(wǎng)絡(luò)協(xié)議主要包括三層:應(yīng)用層(Application Layer)、網(wǎng)絡(luò)層(Network Layer)、硬件邏輯層(Lite Hardware Abstraction Layer),硬件邏輯層包括射頻層(Radio)、應(yīng)用板支持程序包(Board Support Package)。SimpliciTI沒有物理層(PHY)和數(shù)據(jù)鏈路層(MAc/LLC),數(shù)據(jù)直接從射頻層接收。 本設(shè)計(jì)中將通信網(wǎng)絡(luò)設(shè)置為星狀網(wǎng)絡(luò)。其包括1個(gè)數(shù)據(jù)中心和若干終端節(jié)點(diǎn)。數(shù)據(jù)中心主要負(fù)責(zé)網(wǎng)絡(luò)管理。數(shù)據(jù)中心為終端節(jié)點(diǎn)ED提供存儲、轉(zhuǎn)發(fā)等,并管理網(wǎng)絡(luò)設(shè)備內(nèi)成員權(quán)限、連接權(quán)限以及安全等。同時(shí)支持點(diǎn)對點(diǎn)無線數(shù)據(jù)傳輸。即sirnpliciTI網(wǎng)絡(luò)可以支持任意一對點(diǎn)對點(diǎn)設(shè)備之間的數(shù)據(jù)傳輸。以此為基礎(chǔ),PC監(jiān)控端可以與任意的機(jī)器人之間相互通信從而達(dá)到無線操控的目的。 2.5.3 SimpliciTI無線通信網(wǎng)絡(luò)硬件平臺 SimpliciTI協(xié)議能夠開盒即用(out of the box)地在CC1110上運(yùn)行,因此在SimpliciTI網(wǎng)絡(luò)中經(jīng)常使用CC1110來完成組網(wǎng)任務(wù)。無線通信網(wǎng)絡(luò)的節(jié)點(diǎn)是以CC1110為核心搭建而成。 3. ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì) 3.1 開發(fā)工具IAR Embedded Workbench for MCS-51 IAR Embedded Workbench for MCS-51S是由IAR Systems公司為CC2430、CC1110等芯片開發(fā)的一個(gè)集成環(huán)境。IAR Embedded Workbench具有入門容易、使用方便、代碼緊湊的特點(diǎn)。該環(huán)境包含一個(gè)全軟件的模擬程序。用戶不需要任何硬件支持就可以針對各種芯片內(nèi)核,外部設(shè)備以及中斷進(jìn)行仿真。本設(shè)計(jì)所用的是IAR Embedded Workbench 7.20。 3.2 ZigBee無線傳感器網(wǎng)絡(luò)建立 3.2.1啟動(dòng)ZigBee網(wǎng)絡(luò)協(xié)調(diào)器 在對以下函數(shù)進(jìn)行調(diào)用后,即可啟動(dòng)ZigBee網(wǎng)絡(luò)協(xié)調(diào)器。 (1)NLME-NETWORK-FORMATION.request原語 (2)MLME-SCAN.request原語 (3)MLME-SCAN.confirm原語 (4)MLME-SET.request原語 (5)MLME-START.request原語 (6)NLME-NETWORK-FORMATION.confirm原語等 3.2.2允許設(shè)備入網(wǎng) ZigBee協(xié)調(diào)器或路由器的上層產(chǎn)生NLME-PERMIT-JIONING.request請求原語,并將其發(fā)送到NLME,為MAC子層的允許關(guān)聯(lián)標(biāo)志位設(shè)置為某個(gè)數(shù)值,在此時(shí)間內(nèi)ZigBee協(xié)調(diào)器或路由器允許其他設(shè)備加入到它所在的網(wǎng)絡(luò)。 NLME-PERMIT-JOINlNG.request原語由ZigBee協(xié)調(diào)器或路由器的上層產(chǎn)生并發(fā)送給NLME,用以把MAC子層的允許關(guān)聯(lián)標(biāo)志位設(shè)置為一個(gè)固定時(shí)限,在這段時(shí)間內(nèi)ZigBee協(xié)調(diào)器或路由器允許其他設(shè)備加入到它所在的網(wǎng)絡(luò)。只有ZigBee協(xié)調(diào)器或路由器的上層能夠發(fā)NLME-PERMIT-JOINlNG.request原語。如果一個(gè)ZigBee終端設(shè)備的NWK層收到該請求原語,NLME-PERMIT-JOINING.confirm證實(shí)原語將返回狀態(tài)INVALID_REQUEST。當(dāng)接收到NLME-PERMIT-JOINING.request原的PermitDumtion等于0x00時(shí),NLME就向MAC子層發(fā)出MLME-SET.request原語把MACPIB屬性macAssociationPermit設(shè)為FALSE。MLME在收到來自MAC層的證實(shí)原語MIME-SET.confirm后,再向上一層發(fā)送與MLME-SET.comfirm相同狀態(tài)的證實(shí)原語NLME-PERMIT-JOINING.confirm。當(dāng)接收到NLME-PERMIT-JOINING.request原語PermitDuration參數(shù)值等于0xFF時(shí),NLME就向MAC子層發(fā)出MLME-SET.request原語把MAC PIB屬性maeAssociationPermit設(shè)為TRUE。MLME在收到證實(shí)原語MLME-SET.confirm后,再向上一層發(fā)送相同狀態(tài)的證實(shí)原語NLME-PERMIT-JOINIMG.confirm。如果接收到NLME-PERMIT-JOINING.request原語的PermitDuration參數(shù)值不等于Ox00或Oxff,NLME將采用同樣的方法把MAC PIB屬性maeAssociatiouPermit設(shè)為TRUE,在接收到證實(shí)原語MLME-SET.confirm后啟動(dòng)一個(gè)定時(shí)器,計(jì)時(shí)時(shí)長為PermitDmation秒。啟動(dòng)定時(shí)器后,NLME就向上層發(fā)送NLME-PERMIT-firm證實(shí)原語,狀態(tài)等于MAC子層返回的狀態(tài)。計(jì)時(shí)期滿后,NLME再次調(diào)用MLME-SET.request原語把屬macAssociafionPermit設(shè)置為FALSE。 NLME-PERMIT-firm證實(shí)原語是對NLME-PERMIT-JOINING.request的響應(yīng),它是由ZigBee協(xié)調(diào)器或路由器的NLME發(fā)送,告知應(yīng)用層請求允許關(guān)聯(lián)的請求結(jié)果。 3.2.3設(shè)備入網(wǎng) 設(shè)備入網(wǎng),需要對以下函數(shù)進(jìn)行調(diào)用。 (1)NLME-NETWORK-DISCOVERY.request原語 (2)MLME-BEACON-NOTIFY.indcation指示原語 (3)NLME-NETWORK-DISCOVERY.confirm原語 (4)NLME-JOIN.request請求原語 (5)MLME-ASSOCIATE.request原語 (6)MLME-ASSOCIATE.indication關(guān)聯(lián)指示原語 (7)MLME-COMM-STATUS.indication原語 (8)NLME-JOIN.indication原語 (9)NLME-DIRECT-JOIN.request原語 (10)NLME-DIRECT-JOIN.confirm原語 (11)MLME-ORPHAN.indication原語 (12)MLME-ORPHAN.response原語 (13)NLME-START-ROUTER.request原語 (14)NLME-START-ROUTER.confirm原語 3.3 ZigBee無線傳感器網(wǎng)絡(luò)數(shù)據(jù)服務(wù) NLDE-SAP支持在對等應(yīng)用實(shí)體之間傳送應(yīng)用協(xié)議數(shù)據(jù)單元(APDU)。NLDE-SAP支持的原語包括NLDE-DATA請求、證實(shí)和指示原語。 3.3.1 NWK數(shù)據(jù)服務(wù)請求 NWK數(shù)據(jù)服務(wù)請求,需要對以下函數(shù)進(jìn)行調(diào)用。 (1)NLDE-DATA.request原語 (2)NLDE-DATA.request原語 (3)MCPS-DATA.confirm原語 (4)MCPS-DATA.indication原語 (5)MCPS-PURGE.request原語 (6)MCPS-PURGE.confirm原語 3.3.2 NWK數(shù)據(jù)服務(wù)證實(shí) NWK數(shù)據(jù)服務(wù)證實(shí),需要對以下函數(shù)進(jìn)行調(diào)用。 (1)NLDE-DATA.confirm原語 (2)NLDE-DATA.indication原語 4. ZigBee無線傳感器網(wǎng)絡(luò)定位系統(tǒng) 4.1 ZigBee無線傳感器網(wǎng)絡(luò)定位機(jī)制 在基于ZigBee協(xié)議的無線傳感器網(wǎng)絡(luò)中,其定位機(jī)制可以表述為:根據(jù)有限的位置已知的節(jié)點(diǎn)來確定網(wǎng)絡(luò)中其他節(jié)點(diǎn)的位置,在無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)之間建立起位置關(guān)聯(lián)的機(jī)制。在該網(wǎng)絡(luò)中需要定位的節(jié)點(diǎn)稱之為未知節(jié)點(diǎn),而已知位置并需確定該網(wǎng)絡(luò)中未知節(jié)點(diǎn)位置的節(jié)點(diǎn)稱之為參考節(jié)點(diǎn),在一個(gè)節(jié)點(diǎn)通信半徑范圍的可直接通信的節(jié)點(diǎn)稱之為鄰節(jié)點(diǎn)。 4.2 ZigBee無線傳感器網(wǎng)絡(luò)定位引擎配置 定位機(jī)制的實(shí)現(xiàn)必須依賴相應(yīng)的物理硬件,即帶有定位引擎的CC2431以及CC2430,以CC2431為基礎(chǔ)的盲節(jié)點(diǎn)利用其定位引擎可以依據(jù)參考節(jié)點(diǎn)所提供的物理位置參數(shù)(參考節(jié)點(diǎn)X和Y值)以及RSSI值計(jì)算出盲節(jié)點(diǎn)的物理位置。而基于CC2431的定位機(jī)制中所使用的算法則是依賴于接收信號強(qiáng)度指示器(RSSI)的數(shù)值RSSI值隨距離增加而減小。 參考節(jié)點(diǎn)需要具有靜態(tài)位置,必須配置反映該節(jié)點(diǎn)物理位置的X和Y值。參考節(jié)點(diǎn)的主要任務(wù)是提供包含XY坐標(biāo)的數(shù)據(jù)包傳輸給盲節(jié)點(diǎn),也可做為錨定節(jié)點(diǎn)被查閱。此類節(jié)點(diǎn)只要能反映出RSSI值即可,因此參考節(jié)點(diǎn)可以使用CC2430。 盲節(jié)點(diǎn)需要與其周圍的參考節(jié)點(diǎn)通信,并且需要收集每個(gè)參考節(jié)點(diǎn)的物理位置的X和Y值以及RSSI,然后使用硬件定位引擎計(jì)算它身的位置。然后將計(jì)算出的位置發(fā)送至無線網(wǎng)關(guān)。因此盲節(jié)點(diǎn)必須使用帶有定位引擎的CC2431。 定位引擎利用是一個(gè)從軟件層面看來極其簡單的輸入輸出端口,簡單地可以理解為寫入?yún)?shù),等待計(jì)算,讀出計(jì)算的位置結(jié)果。 4.3 ZigBee無線傳感器網(wǎng)絡(luò)定位系統(tǒng)節(jié)點(diǎn)的設(shè)置與部署 一般來說參考節(jié)點(diǎn)的數(shù)目盡可能多的參考節(jié)點(diǎn)應(yīng)該被使用。要得到一個(gè)比較準(zhǔn)確的坐標(biāo)至少需要4個(gè)參考節(jié)點(diǎn)。如果太少節(jié)點(diǎn)被使用,來自于每個(gè)節(jié)點(diǎn)的混淆會變得更高,并且錯(cuò)誤的RSSI值能引起計(jì)算出的位置重大改變。 在實(shí)際的計(jì)算之中,最近的參考節(jié)點(diǎn)優(yōu)選被用于計(jì)算。一般來說是具有最高RSSI值的8個(gè)參考節(jié)點(diǎn),而其他的所有節(jié)點(diǎn)應(yīng)該被忽略。如果達(dá)不到8個(gè),那么盡可能多的節(jié)點(diǎn)應(yīng)該被使用。 在大規(guī)模的無線傳感器網(wǎng)絡(luò)中,這種簡單的定位算法不可能適應(yīng),因此在此基礎(chǔ)之上必須改進(jìn)網(wǎng)絡(luò)節(jié)點(diǎn)的部署和定位算法。 為了約束網(wǎng)絡(luò)的無限擴(kuò)大和節(jié)點(diǎn)之間的復(fù)雜無序狀態(tài),按照每個(gè)未知節(jié)點(diǎn)和周圍節(jié)點(diǎn)相近的位置關(guān)系自動(dòng)組合,形成若干個(gè)單元,通過多個(gè)未知節(jié)點(diǎn)之間的距離信息將各單元相組合,形成相對的坐標(biāo)系統(tǒng)。從其中劃分出邊界節(jié)點(diǎn),通過對周圍單元網(wǎng)絡(luò)的約束關(guān)系,從而確定了全局坐標(biāo)下各單元網(wǎng)絡(luò)的坐標(biāo)變換矩陣。進(jìn)一步將網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)一步細(xì)分為:參考節(jié)點(diǎn)、已知節(jié)點(diǎn)、準(zhǔn)已知節(jié)點(diǎn)、邊界節(jié)點(diǎn)、未知節(jié)點(diǎn)。準(zhǔn)已知節(jié)點(diǎn)是指單位網(wǎng)絡(luò)內(nèi)局部坐標(biāo)系下位置已知點(diǎn),而局部坐標(biāo)系又可通過坐標(biāo)變換矩陣同全局坐標(biāo)系相轉(zhuǎn)換,最終確定了每一節(jié)點(diǎn)的位置。 在ZigBee無線網(wǎng)絡(luò)定位系統(tǒng)中網(wǎng)關(guān)是必不可少的。網(wǎng)關(guān)的一些典型的功能是有節(jié)點(diǎn)配置、檢查網(wǎng)絡(luò)狀態(tài)、要求盲節(jié)點(diǎn)執(zhí)行計(jì)算。因?yàn)樗械奈恢糜?jì)算在盲節(jié)點(diǎn)中執(zhí)行,網(wǎng)關(guān)將不執(zhí)行任何位置計(jì)算。它唯一的用途就是給用戶提供與網(wǎng)絡(luò)交互的能力。有兩個(gè)主要途徑建立網(wǎng)關(guān):(1)網(wǎng)關(guān)是一個(gè)被動(dòng)的設(shè)備,只能被動(dòng)監(jiān)聽網(wǎng)絡(luò)通信(2)它也做為網(wǎng)絡(luò)活動(dòng)的一部分。被動(dòng)途徑主要是包探測器,網(wǎng)關(guān)僅捕獲RF包和提供這些信息給使用者。 在定位系統(tǒng)中需要使用Z-Stack定位規(guī)范,該定位規(guī)范被做為了一個(gè)ZigBee規(guī)范,并且可以通過ZigBee設(shè)備對象服務(wù)從而得到各種報(bào)文。 參考節(jié)點(diǎn)(設(shè)備ID:0x0010)總是允許盲節(jié)點(diǎn)查詢它的位置(X/Y坐標(biāo))。 盲節(jié)點(diǎn)(設(shè)備ID:0x0011)是一個(gè)可移動(dòng)的節(jié)點(diǎn),可以查詢射頻范圍內(nèi)的參考節(jié)點(diǎn)(1跳鄰節(jié)點(diǎn))的位置和與它們每一個(gè)的RSSI。 Location Dongle(設(shè)備ID:0x0012) 設(shè)備與PC相連接并被其應(yīng)用所使用(一個(gè)調(diào)試工具以及任何通過串口或USB的應(yīng)用),可以用來與盲節(jié)點(diǎn)和參考節(jié)點(diǎn)交換TOA信息。PC應(yīng)用可通過請求盲節(jié)點(diǎn)位置來執(zhí)行定位處理,或者可以被動(dòng)接收盲節(jié)點(diǎn)和參考節(jié)點(diǎn)的位置報(bào)告。PC端還可以配置盲節(jié)點(diǎn)和參考節(jié)點(diǎn)。 XY-RSSI請求(簇lD:0x0011)用來觸發(fā)一個(gè)XY-RSSI響應(yīng)報(bào)文。在發(fā)送一系列RSSI Blast報(bào)文后該請求應(yīng)被立即發(fā)送,然后取回在“l(fā)跳”射頻范圍內(nèi)的參考節(jié)點(diǎn)的坐標(biāo)以及它們每一個(gè)的平均RSSI值。如果該報(bào)文被發(fā)送大于“1跳”半徑,那么RssI將不可用。 XY-RSSI響應(yīng)(簇ID:0x00l2)作為XY-RSSI請求報(bào)文發(fā)送的響應(yīng),RSSI平均值包含了RSSI請求報(bào)文本身的RSSI,然后RSSI平均值被歸零以便為另一個(gè)一系列Blast報(bào)文做準(zhǔn)備。因此,如果Blast報(bào)文從來被發(fā)送,那么RSSI平均值就是請求報(bào)文的RSSI值。 盲節(jié)點(diǎn)查找請求(簇ID:0x0013)報(bào)文使一個(gè)盲節(jié)點(diǎn)以迫使它執(zhí)行一個(gè)位置查找。當(dāng)位置查找完成后,該報(bào)文的響應(yīng)報(bào)文被盲節(jié)點(diǎn)發(fā)回。位置查找時(shí)間取決于網(wǎng)絡(luò)的總流量。 盲節(jié)點(diǎn)查找響應(yīng)(簇ID:0x0014)是盲節(jié)點(diǎn)查找請求的響應(yīng)。 參考節(jié)點(diǎn)配置(簇ID:0x0015)發(fā)送該報(bào)文給一個(gè)參考節(jié)點(diǎn)來設(shè)置它的配置項(xiàng)目。該報(bào)文也從參考節(jié)點(diǎn)被發(fā)送以響應(yīng)參考節(jié)點(diǎn)配置請求報(bào)文。 盲節(jié)點(diǎn)配置(簇ID:0x0016)發(fā)送該報(bào)文給一個(gè)盲節(jié)點(diǎn)來設(shè)置它的配置項(xiàng)目。該報(bào)文也從參考節(jié)點(diǎn)被發(fā)送以響應(yīng)“盲節(jié)點(diǎn)配置”請求報(bào)文。 參考節(jié)點(diǎn)配置請求(簇ID:0x0017)配置一個(gè)參考節(jié)點(diǎn)。該請求報(bào)文的響應(yīng)報(bào)文是“參考節(jié)點(diǎn)配置”報(bào)文。 盲節(jié)點(diǎn)配置請求(ID:0x0018)配置一個(gè)盲節(jié)點(diǎn)。該請求報(bào)文的響應(yīng)報(bào)文是“盲節(jié)點(diǎn)配置”報(bào)文。 RSSI Blast(簇ID:0x0019)以“1跳”半徑廣播該報(bào)文,在相對短的時(shí)間多次發(fā)送來觸發(fā)射頻范圍內(nèi)的參考節(jié)點(diǎn)計(jì)算它們收到的Blast 廣播報(bào)文的平均RSSI。 5. 程序設(shè)計(jì) 軟件分為上位機(jī)程序和下位機(jī)程序兩部分。軟件設(shè)計(jì)的平臺為Windows XP SP2,上位機(jī)程序使用Microsoft Visual C++ 6.0(SP6)開發(fā),下位機(jī)程序使用u Vision3 V3.34(Keil Software)開發(fā)。 5.1 硬件設(shè)計(jì)和軟件設(shè)計(jì)的關(guān)系 硬件設(shè)計(jì)的目標(biāo)是標(biāo)準(zhǔn)化、模塊化、簡單化,以求達(dá)到給軟件提供清晰明了、可控性強(qiáng)的硬件接口的目的。于是,在進(jìn)行軟件設(shè)計(jì)時(shí)就能集中精力去實(shí)現(xiàn)關(guān)鍵部分的算法并且設(shè)計(jì)出更加良好的軟件架構(gòu),以求提高軟件的穩(wěn)定性、可復(fù)用性、可修改性,進(jìn)而提升系統(tǒng)的整體性能。 5.2 上位機(jī)部分程序設(shè)計(jì) 上位機(jī)程序主要可分為舵機(jī)控制模塊、電機(jī)控制模塊、數(shù)據(jù)接收模塊,其中舵機(jī)模塊包含測距模塊和圖像傳輸模塊。 5.3 下位機(jī)部分程序設(shè)計(jì) 下位機(jī)程序主要可分為定位模塊、超聲波測距模塊、電機(jī)控制模塊、溫度檢測模塊、液晶顯示模塊、軌跡記錄模塊、智能避障模塊、舵機(jī)控制模塊。 5.4 無線通信部分程序設(shè)計(jì) 系統(tǒng)采用SimpliciTI協(xié)議下CC1110 星狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行無線通信。主要分AP(數(shù)據(jù)中心)和ED(節(jié)點(diǎn))兩個(gè)部分。 5.5 無線定位部分程序設(shè)計(jì) 系統(tǒng)采用基于Zigbee無線傳感器網(wǎng)絡(luò)定位的方式,其中CC2431無線模塊具有定位引擎從而可以根據(jù)RSSI進(jìn)行無線定位。其程序主要分為協(xié)調(diào)器,參考節(jié)點(diǎn)和未知節(jié)點(diǎn)程序。 6. 系統(tǒng)測試 本系統(tǒng)可以分成工作終端和監(jiān)控終端。測試主要分為功能測試、性能測試以及結(jié)論分析。測試所使用的儀器設(shè)備、軟件有:數(shù)字示波器、串口調(diào)試助手等。 6.1 功能測試 測試的方法步驟為:將充好電的移動(dòng)平臺放到室內(nèi)的平地上,連接好通信芯片,打開上位機(jī)軟件,接通電源,操作上位機(jī)軟件的同時(shí)記錄移動(dòng)平臺反應(yīng)的時(shí)間、溫度、視頻數(shù)據(jù);將電機(jī)部分拆下?lián)Q成低頻示波器,分別記錄其不同狀態(tài)下的數(shù)據(jù)。 移動(dòng)平臺速度與占空比曲線測試,把占空比分為20個(gè)等分點(diǎn),每個(gè)點(diǎn)相距5個(gè)百分點(diǎn),測試時(shí),先由0%上升到100%記錄相應(yīng)點(diǎn)的速度,再從100%下降到0%記錄相應(yīng)點(diǎn)的速度,記錄相應(yīng)點(diǎn)電機(jī)的速度,計(jì)算時(shí)取兩點(diǎn)的平均值。已知齒輪比換算可得移動(dòng)速度。 6.2 性能測試 測試的主要方法:下載測試程序到控制端芯片中,通過PC機(jī)的串口調(diào)試助手,發(fā)送數(shù)據(jù)給終端控制芯片并讀出返回值,通過返回值可以得出相應(yīng)的數(shù)據(jù)結(jié)果,同時(shí)記錄好數(shù)據(jù) 7. 結(jié)論 無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)的設(shè)計(jì)與制作,最終完成了實(shí)現(xiàn)計(jì)算機(jī)終端對機(jī)器人進(jìn)行無線操控與定位,完成了預(yù)期的目標(biāo)。經(jīng)測試:移動(dòng)平臺的動(dòng)作靈敏度在電池電壓為12V室內(nèi)環(huán)境,發(fā)出命令到動(dòng)作時(shí)間平均響應(yīng)時(shí)間為0.8s;定位精度在室內(nèi)的環(huán)境與主通信節(jié)點(diǎn)距離小于20m,大約為4cm;在室內(nèi)復(fù)雜環(huán)境,視頻圖像掉幀現(xiàn)象不明顯,圖像實(shí)時(shí)完整性;視頻的最大傳輸值平均為7Mb/s;通信誤碼率<1/10000;RSSI的瞬時(shí)值為sum(I2+Q2);RSSI的平均值為sum(RSSI(瞬時(shí))/8192;信噪比(SNR)為60dB~75dB。 通過組建ZigBee無線傳感器網(wǎng)絡(luò),將大量無線的傳感器節(jié)點(diǎn)組成無線網(wǎng)絡(luò),不僅能夠?qū)C(jī)器人工作環(huán)境進(jìn)行實(shí)時(shí)數(shù)據(jù)監(jiān)測,而且能夠?qū)C(jī)器人無線控制以及無線定位。與現(xiàn)有的一些機(jī)器人控制系統(tǒng)相比較,本設(shè)計(jì)著重從無線控制方面入手,將機(jī)器人從有線電纜相分離,使得操作人員不僅可以輕松地完成對機(jī)器人的操縱,而且利用ZigBee無線傳感器網(wǎng)絡(luò)完成了對機(jī)器人工作環(huán)境的檢測。此外機(jī)器人的定位問題一直是一個(gè)相對復(fù)雜的問題,本設(shè)計(jì)放棄了傳統(tǒng)的定位方式,從大量信號傳播方向路徑的計(jì)算另辟蹊徑,借助大量的廉價(jià)的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn),簡單的RSSI信號強(qiáng)度的距離衰減功率完成了對機(jī)器人的無線信號定位。 在實(shí)際測試當(dāng)中,Zigbee無線傳感器網(wǎng)絡(luò)在組建之后系統(tǒng)將穩(wěn)定運(yùn)行,但是由于硬件原因程序下載不成功的概率比較大,而且在進(jìn)出網(wǎng)絡(luò)的時(shí)候比較容易丟失程序??傮w來看工作相對穩(wěn)定。RSSI值基于穩(wěn)定無線網(wǎng)絡(luò)環(huán)境下才能夠穩(wěn)定和計(jì)算的精確,而實(shí)際情況下無線電干擾因素太多,讀出的數(shù)據(jù)很不穩(wěn)定,特別是在電磁環(huán)境復(fù)雜的室內(nèi)信號會更差,所以在室內(nèi)環(huán)境下,受環(huán)境影響特別的大,比如關(guān)鍵參數(shù)包括:RSSI(接收信號場強(qiáng))、干擾、SNR(信噪比)、最強(qiáng)接入點(diǎn)、總接入點(diǎn)數(shù)、信道信號和數(shù)據(jù)速率等,定位精度的效果不是很理想。但是誤差還在允許的范圍之內(nèi)。以后的工作當(dāng)中需要針對無線節(jié)點(diǎn)的位置進(jìn)行進(jìn)一步的研究,得出一個(gè)比較通用的結(jié)論,使得該系統(tǒng)能夠廣泛的適用于各種場合。 8. 參考文獻(xiàn) [1] 倪巍,王宗欣.基于接受信號強(qiáng)度測量的室內(nèi)定位算法[J].復(fù)旦學(xué)報(bào)(自然科學(xué)版),2004年2月第43卷第1期,P72-P76 [2] 張明華,張申生,曹健.無線局域網(wǎng)中基于信號強(qiáng)度的室內(nèi)定位[J].計(jì)算機(jī)科學(xué),2007年,Vol134 №16,P68-P71 [3] 王文峰,耿力,基于射頻識別的實(shí)時(shí)定位系統(tǒng)技術(shù)研究[J].集成電路,2007年第7期,P21-P24 [4] 楊鳳,史浩山,朱靈波,趙洪鋼.一種基于測距的無線傳感器網(wǎng)絡(luò)智能定位算法[J].傳感技術(shù)學(xué)報(bào),2008年1月第21 卷 第1 期,P135-P140 [5] 石鵬,徐鳳燕,王宗欣.基于傳播損耗模型的最大似然估計(jì)室內(nèi)定位算法[J].信號處理,2005年10月第5期,P502-P504 [6] 陳維克,李文鋒,首珩,袁兵. 基于RSSI的無線傳感器網(wǎng)絡(luò)加權(quán)質(zhì)心定位算法[J].武漢理工大學(xué)學(xué)報(bào)(交通科學(xué)與工程版), 2006,(02) . [7] 李泳. 基于ZigBee技術(shù)的室內(nèi)定位系統(tǒng)設(shè)計(jì)[D]. 上海師范大學(xué), 2008 . [8] 李本佳. 無線傳感器網(wǎng)絡(luò)中的分布式定位算法[D]. 浙江大學(xué), 2007 . [9] 王立波,陳慈發(fā). CC2431的室內(nèi)定位系統(tǒng)設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2008,(09) . [10] 王福豹,史龍,任豐原. 無線傳感器網(wǎng)絡(luò)中的自身定位系統(tǒng)和算法[J]. 軟件學(xué)報(bào), 2005,(05) . [11] Steven W Smith.The Scientist and Engineer S Guide to Digital Signal Processing [M]. California Technical Publishing,1999 [12] Texas Instruments Incorporated.CC1110Fx/CC111Fx Low-power sub-1GHz RF System-on-Chip (SoC) with MCU[EB/OL]. [2009.6.14]. /cn/ [13] Texas Instruments Incorporated.SimpliciTI Specification[EB/OL]. [2009.6.14]. [14] 李文仲,段朝玉.CC1110/CC2510無線自組織網(wǎng)絡(luò)入門與實(shí)戰(zhàn)[M].北京航空航天大學(xué)出版社,2007 [15] 李文仲,段朝玉.Zigbee2006無線網(wǎng)絡(luò)與無線定位實(shí)踐[M].北京航空航天大學(xué)出版社,2008 [16] 李文仲,段朝玉.Zigbee無線網(wǎng)絡(luò)技術(shù)入門與實(shí)戰(zhàn)[M]. 北京航空航天大學(xué)出版社,2007 [17] 黃智偉.全國大學(xué)生電子設(shè)計(jì)競賽制作實(shí)訓(xùn)[M].北京航空航天大學(xué)出版社,2007 [18] 黃智偉.全國大學(xué)生電子設(shè)計(jì)競賽電路設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006 [19] 黃智偉.全國大學(xué)生電子設(shè)計(jì)競賽系統(tǒng)設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006 附錄1 使用說明 無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)使用可以分為兩個(gè)部分,第一為部分為網(wǎng)絡(luò)節(jié)點(diǎn)的部署,在布網(wǎng)時(shí)要考慮傳感器節(jié)點(diǎn)的位置并且將定位節(jié)點(diǎn)和通信節(jié)點(diǎn)安裝于機(jī)器人外側(cè),PC監(jiān)控端要與無線網(wǎng)關(guān)相連接調(diào)試實(shí)現(xiàn)網(wǎng)絡(luò)暢通。第二部分為代碼下載與軟件安裝,將機(jī)器人運(yùn)動(dòng)操控代碼下載入控制器,將上位機(jī)軟件安裝于PC監(jiān)控端。調(diào)試成功之后便可運(yùn)行監(jiān)控程序,實(shí)現(xiàn)對環(huán)境與機(jī)器人的無線監(jiān)控。使用時(shí)首先打開PC機(jī),連接好通信終端,啟動(dòng)上位機(jī)軟件;然后依次接通無線網(wǎng)關(guān)電源、移動(dòng)平臺電源,此時(shí)系統(tǒng)進(jìn)入自檢狀態(tài)。當(dāng)1602液晶顯示自檢完成后即可開始工作。 附錄2 主要元器件清單(略) 附錄3 電路原理圖(略) 附錄4 電路印制板圖(略) 附錄5 程序清單 附錄5.1 電機(jī)控制程序清單(略) 附錄5.2 上位機(jī)主控模塊程序清單(略) 附錄5.3 下位機(jī)主控模塊程序清單(略) 附錄5.4 CC2430參考節(jié)點(diǎn)代碼 ************************************************************************ // 函數(shù)名: static void processMSGCmd(afIncomingMSGPacket_t*pkt) // 功能: 通過串ID對數(shù)據(jù)信息處理 // 輸入: 接收的數(shù)據(jù) // 輸出: 無 *************************************************************************/ static void processMSGCmd(afIncomingMSGPacket_t *pkt) { switch(pkt->clusterld) { case LOCAtiON_XY_RSSI_REQUEST: //XY_RSSI請求 rssiRsp(pkt); break; case LOCATION_REFNODE_CONFIG: //參考節(jié)點(diǎn)配置 parseConfig(pkt->cmd.Data); break; case LOCATION_REFNODE_REQUEST_CONFIG: //參考節(jié)點(diǎn)請求配置 pkt->srcAddr.addrMode=afAddr16Bit; rspMsgE43 = 0x88; rspMsg[5] = 0x99; (void)AF_DataRequest(&pkt->srcAddr,(endPointDesc_t*)&epDesc, \ LOCATION_REFNODE_CONFIG,REFNODE_CONFIG_LEN,rspMsg, & transId,0,AF_DEFAULT_RADIUS); break; case LOCATION_RSSI_BLAST: //收集RSSI addBlast(pkt->srcAddr.addr.shortAddr,pkt->LinkQuality); break; default; break; } }/*********************************************************************** // 函數(shù)名:static void rssiRsp(afIncomingMSGPacket_t *pkt) // 功能:響應(yīng)XY_RSSI請求,發(fā)送RSSI平均值和坐標(biāo)值 // 輸入:接收的數(shù)據(jù) // 輸出:無 *************************************************************************/ static void rssiRsp(afIncomingMSGPacket_t *pkt) { blastAcc_t*ptr = blastPtr; blastAcc_t*prev=NULL; byte options,radius; while(ptr) { if(ptr->addr == pkt->srcAddr.addr.shortAddr) { break; } prey = ptr; ptr.ptr->next: } if(ptr) { rspMsg[LOCATION_XY_RSSI_RSSI_IDX] = (ptr->acc+pkt->LinkQuality)/(ptr->cnt + 1): if(prey) { prey->next.ptr->next; } else { blastPtr = ptr->next; } osal_mem_free(ptr); options = AF_SKIP_ROUTING; radius = 1; } else { rspMsg[LOCATION_XY_RSSI_RSSI_IDX] = pkt->LinkQuality; // 求RSSI平均值 options = AF_TX_OPTIONS_NONE; radius = AF_DEFAULT_RADIUS; } pkt->srcAddr.addrMode = afAddr16Bit; (void)AF_DataRequest(&pkt->srcAddr,(endPointDesc_t *)&epDesc, \ LOCATION_XY_RSSI_RESPONSE, LOCATION_XY_RSSI_LEN, \ rspMsg, &transId,options, radius); /************************************************************************ // 函數(shù)名:static void parseConfig(byte *msg) // 功能:配置參考節(jié)點(diǎn)坐標(biāo) // 輸入:接收的數(shù)據(jù) // 輸出:無 *************************************************************************/ static void parseConfig(byte *msg) { refNode_Config_t config; config.x = BUILD_UINTl6(msg[REFNODE_CONFIG_X_LO_IDX], \ // x坐標(biāo)低8位 msg[REFNODE_CONFIG_X_HI_IDX3) // x坐標(biāo)高8位 config.y = BUILD_UINTl6(msg[REFNODE_CONFIG_Y_LO_IDX], \ // x坐標(biāo)低8位 msg[REFNODE_CONFIG_Y_HI_IDX3) // y坐標(biāo)高8位 osal_nv_write(LOC_NV_REFNODE_CONFIG, 0, sizeof(refNode_Config_t), &config); // 將配置參數(shù)寫入Flash rspMsg[REFNODE_CONFIG_X_LO_IDX] = msg[REFNODE_CONFIG_X_LO_IDX]; rspMsg[REFNODE_CONFIG_X_HI_IDX] = msg[REFNODE_CONFIG_X_HI_IDX]; rspMsgEREFNODE_CONFIG_Y_LO_IDX] = msg[REFNODE_CONFIG_Y_LO_IDX]; spMsg[REFNODE_CONFIG_Y_HI_IDx] = msg[REFNODE_CONFIG_Y_HI_IDX]; } /************************************************************************* //函數(shù)名:static void addBlast(uintl6 addr,byte rssi) // 功能:添加或初始化一個(gè)定位節(jié)點(diǎn)和自身的RSSI值 // 輸入:定位節(jié)點(diǎn)網(wǎng)絡(luò)地址、RSSI // 輸出:無 *************************************************************************/ static void addBlast(uintl6 addr,byte rssi) { blastAcc_t *ptr = blastPtr; while(ptr) { if(ptr->addr == addr) //網(wǎng)絡(luò)地址已經(jīng)存在 { break; } Ptr = ptr->next; } if(ptr) { Ptr->aCC+ = rssi; //添加RSSI Ptr->cnt++: } else { Ptr = (blastAcc_t*)osal_mem_alloc(sizeof(blastAcc_t)); if(ptr) //網(wǎng)絡(luò)地址不存在 { Ptr->next = blastPtr; blastPtr = ptr; ptr->addr = addr; ptr->acc = rssi; ptr->cnt = 1; } }} /************************************************************************* //函數(shù)名:static void processMSGCmd(afIncomingMSGPacket_t *pkt) // 功能:數(shù)據(jù)回收處理 // 輸入:接收到的數(shù)據(jù) // 輸出:無 *************************************************************************/ static void processMSGCmd(afIncomingMSGPacket_t *pkt) { switch(pkt->clusterId) { case LOCATION_XY_RSSI_REQUEST: rssiRsp(pkt); break; case LOCATION_REFNODE_CONFIG: parseConfig(pkt->cmd.Data); break; case LOCATION_REFNODE_REQUES_CONFIG: pkt一>srcAddr.a(chǎn)ddrMode = afAddrl6Bit; (void)AF_DataRequest(&pkt->srcAddr,(endPointDesc_t*)&epDesc, LOCATION_REFNODE_CONFIG,REFNODE_CONFIG_LEN,rspMsg, &transId,0,AF_DEFAULT_RADIUS); break; case LOCATl0N_RSSI_BLAST: addBlast(pkt->srcAddr.addr.shortAddr,pkt->LinkQuality); break; default; break; } } 附錄5.5 CC2431定位節(jié)點(diǎn)代碼 /*********************************************************************** // 函數(shù)名:static void processMSGCmd(afIncomingMSGPacket_t*pkt) // 功能:接收數(shù)據(jù)處理 // 輸入:接收到的數(shù)據(jù) // 輸出:無 ***********************************************************************/ static void processMSGCmd(afIncomingMSGPacket_t *pkt) { switch(pkt->clusterId) { case LOCATION_XY_RSSI_REQUEST: //0x0011RSSI數(shù)據(jù)請求 rspMsg[LOCATION_XY_RSSI_RSSI_IDx] = pkt->LinkQuality; pkt->srcAddr.addrMode = afAddr16Bit; (Void)AF_DataRequest(&pkt->srcAddr,(endPointDeC_t *)&epDesc, LOCATION_XY_RSSI_RESPONSE,LOCATION_Y_RSSI_LEN, spMsg,&transId,0,AF_DEFAULT_RADIUS); break; case LOCATION_BLINDNODE_FIND_REQUEST: //0x0013定位節(jié)點(diǎn)發(fā)求 if(state == eBnldle defAddr.addrMode = afAddr166Bit; defAddr?addr.shortAddr = pkt->srcAddr.addr.shortAddr; defAddr.endPoint = pkt->srcAddr.endPoint; startBlast(); } break; case LOCATION_BLINDNODE_CONFIG: //0x0016定位節(jié)點(diǎn)配置 if(state == eBnIdle){ parseConfig(pkt->cmd.Data);} break; case LOCATION_BLINDNODE_REQUEST_CONFIG: //0x0018定位節(jié)點(diǎn)請求配置 sendConfig(&(pkt->srcAddr)); break; case LOCATION_XY_RSSI_RESPONSE: //0x0012 RSSI應(yīng)答 if(state == eBnBlastIn{ uint8 idx; for(idx=0;idx<BLINDNODE_MAX_REF_NODES;idx++) { if((refNodes[idx].add == INVALID_NODE_ADDR)|| (refNodes[idx].add == pkt->srcAddr.addr.shortAddr)) { refNodes[idx].addr = pkt->srcAddr.addr.shortAddr; refNodes[idx].ep = pkt->srcAddr.endPoint; refNodes[idx].x = BUILD_UINT16( pkt->cmd.Data[LOCATION_XY_RSSI_X_LO_IDX], pkt->cmd.Data[LOCATION_XY_RSSI_X_HI_IDX]); refNodes[idx].y = BUILD_UINT16( pkt->cmd.Data[LOCATION_XY_RSSI_Y_LO_IDX], pkt->cmd.Data[LOCATION_XY_RSSI_Y_HI_IDX]); refNodes[idx].rssi = pkt->cmd.Data[LOCATION_XY_RSSI_RSSI_IDX]; if(rspCnt <= idx) { rspCnt:idx+l;} break; } } }break; default: break; } } /************************************************************************** //函數(shù)名:static void parseConfig(uint8 *msg)// 功能:定位節(jié)點(diǎn)請求配置響應(yīng)函數(shù),發(fā)送自己的配置參 // 輸入:接收到的數(shù)據(jù) // 輸出:無**************************************************************************/ static afStatus_t sendConfig(afAddrType_t *dstAddr) { uint8 msg[BLINDNODE_CONFIG_LEN]; msg[BLINDNODE_CONFIG_A_IDX] = config.10c.param_a; msg[BLINDNODE_CONFIG_N_IDX] = config.10c.param_n; msg[BLINDNODE_CONFIG_MODE_IDX] = config.mode; msg[BLINDNODE_CONFIG_COLLECT_TIME_LO_IDX] = L0_UINTl6(config.timeout/BN_TIME_INCR); msg[BLINDNODE_CONFIG_COLLECT_TIME_HI_IDX] = HI_UINTl6( config.timeout/BN_TIME_INCR); Config.dstAddr = \BUILD_UINTl6(msg[BLINDNODE_CONFIG_REPORT_SADDR_LO_IDX], msg[BLINDNODE_CONFIG_REPORT_SADDR_HI_IDX]);config.dstEp = msg[BLINDNODE_CONFIQREPORT_EP_IDX] config.minRefNodes = msq[BLINDNODE_CONFIG_MIN_REFNODES_IDX];//配置最小計(jì)算參考節(jié)點(diǎn) osal_nv_write(LOC_NV_BLINDNODE_CONFIG,0,sizeof(BN_Cfg_t), &config); if(config.mode = NODE_MODE_AUTO) {osal_set_event(BlindNode_TaskID, BLINDNODE_FIND_EVT); } } /************************************************************************** //函數(shù)名:static void parseConfig(uint8 *msg)// 功能:定位節(jié)點(diǎn)請求配置響應(yīng)函數(shù),發(fā)送自己的配置參 // 輸入:接收到的數(shù)據(jù)// 輸出:無 **************************************************************************/ static afStatus_t sendConfig(afAddrType_t *dstAddr) { uint8 msg[BLINDNODE_CONFIG_LEN]; msgEBLINDNODE_CONFIG_A_IDX] = config.1oc.param_a;msgEBLINDNODE_CONFIG_N_IDX] = config.1oc.param_n; msgEBLINDNODE_CONFIG_MODE_IDX] = config.mode; msgEBLINDNODE_CONFIG_COLLCT_TIME_LO_IDX] = L0_UINTl6( config.timeout/BN_TIME_INCR); msg[BLINDNODE_CONFIG_COLLECT_TIME HI_IDX] = HI_UINTl6( config.timeout/BN_TIME_INCR); msg[BLINDNODE_CONFIG_CYCLE_LO_IDX] = LO_UINTl6(config.cycle/BN_TIME_INCR); msg[BLINDNODE_CONFIG_CYCLE_HI_IDX] =\HI_UINTl6(config.cycle/BN TIME_INCR); msg[BLINDNODE_CONFIG_REPORT_SADDR_LO_IDX] = LO_UINT16(config.dstAddr); msg[BLINDNODE CONFIG_REPORT_SADDR_HI_IDX] = HI_UINT16(config.dstAddr); msg[BLINDNODE_CONFIG_REPORT_EP_IDX] = config.dstEp; msg[BLINDNODE_CONFIG_MIN_REFNODES_IDX] = config.minRefNodes; return(AF_DataRequest(dstAddr,(endPointDesc_t*)&epDesc, \ LOCATION_BLINDNODE_CONFIG, \ BLINDNODE_CONFIG_LEN,msg, \ &transId,0,AF_DEFAULT_RADIUS)); } /************************************************************************* // 函數(shù)名:static void startBlast(void) // 功能:發(fā)送RSSI_BLAST請求 // 輸人:無 // 輸出:無 *************************************************************************/ static void startBlast(void) { uint8 idx; afAddrType_t dstAddr; dstAddr.addr.Mode = afAddrBroadcast; dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVALL; dstAddr.endPoint = LOCATION_REFNODE_ENDPOINT; if((ZDO_Config_Node_Descriptor.CapabilityFlaqs & CAPINFO_RCVR_ON_IDLE) == 0) { idx = true; ZMacSetReq(ZMacRxOnIdle, &idx); } SampleApp_S1eep(FALSE); for(idx=0; idx<BLINDNODE_MAX_REF_NODES; idx++) { refNodes[idx].addr=INVALID_NODE_ADDR; } (void)AF_DataRequest(&dstAddr, (endPointDesc_t *)&epDesc, \ LOCATION_RSSI_BLAST, 0, NULL, &transId, \ AF_SKIP_ROUTING, 1); rspCnt = 0; blastCnt = BLINDNODE_BLAST_COUNT; state = eBnBlastOut; osal_start_timerEx(BlindNodeTaskID,BLINDNODE_BLAST_EVT, \ BLINDNODE_BLAST_DELAY); } /************************************************************************* //函數(shù)名:void locationCalculatePosition(LocRefNode_t*ref,LocDevCfg_t *node) // 功能:計(jì)算設(shè)備位置 // 輸入:參考節(jié)點(diǎn)信息 // 輸出:節(jié)點(diǎn)位置 ***********************************************************************/ #if defined(CC2431) #include “ZComDef.h” #include“LocationEngine.h” #include“hal_mcu.h” #define XREG(addr) ((unsigned char volatile_xdata*)0)[addr] #define REFCOORD XREG(0xDF55) /* 定位引擎 */ #define MEASPARM XREG(0xDF56) /* 定位引擎 */ #define LOCENG XREG(0xDF57) /* 定位引擎 */ #define LOCX XREG(0xDF58) /* 定位引擎 */ #define LOCY XREG(0xDF59) /* 定位引擎 */ #define LOCMIN XREG(0xDF5A) /* 定位引擎 */ //定位引擎使能 #define LOC_ENABLE() do{LOCENG| = OxlO; }while(0) #define LOC DISABLE() do{LOCENG&=~OxlO; }while(0) //定位引擎讀參數(shù) #define LOC_PARAMETER_LOAD(on)\ do{ \ if(on)LOCENG| = Ox04; \ else LOCENG& = ~Ox04; \ }while(0) //定位引擎讀坐標(biāo) #define LOC_REFERENCE_LOAD(on)\ do{ \ if(on)LOCENG | = 0x02; \ else I/)CENG& = ~0x02; \ }while(0)//定位引擎運(yùn)行 #define LOC_RUN() do{LOENG| = 0x01;}while(0) #define LOC_DONE() (LOCENC&0x08) void locationCalculatePosition(LocRefNode_t*ref,LocDevCfg_t *node) { LocRefNode_t *pRef = ref: const byte stop = ((CHVER == 0x01)?LOC_ENGINE_NODE_CAPACITY_REVB: LOC_ENGINE_NODE_CAPACITY_REVC); byte idx; LOC_DISABLE(); //#define LOC_DISABLE()do{LOCENG& = ~Oxl0;}while(0) LOC_ENABLE(); //#define LOC_ENABLE() do{LOCENG |= 0x10;}while(0) //讀參考節(jié)點(diǎn)坐標(biāo) LOC_REFERENCE_LOAD(TRUE); for(idx = 0;idx<stop;idx++) { NEFCOORD = pRef->x; REFCOORD = pRef->y; pRef++; } LOC_REFERENCE_LOAD(FALSE); //讀標(biāo)準(zhǔn)參數(shù) LOC_PARAMETER_LOAD(TRUE); MEASPARM = Node->param_a; MEASPARM = Node->param_n; if(CHVER! = Ox01) { MEASPARM=LOC ENGINE_X_MIN; //0 MEASPARM=LOC_ENGINE_X_MAX; //25s MEASPARM=LOC_ENGINE_Y_MIN; //0 MEASPARM=LOC_ENGINE_Y_MAX; //256 } //讀RSSI值 for(idx = 0;idx<stop;idx++) { MEASPARM = ref->rssi*2; ref++; } LOC_PARAMETER_LOAD(FALSE); //關(guān)閉讀標(biāo)準(zhǔn)參數(shù) noc RUN(); //開始計(jì)算 while(!(LOCENG&0x08)); if(CHVER == 0x01) { node->x = (LOCX<<1); node->y = (noc7<(1); node->min= LOCMIN; } else { node->x = LOCX+2; node->y = LOCY node->rain= 0; } LOC_DISABLE(); //定位引擎關(guān)閉 } #endif //CC2431 /************************************************************************* // 函數(shù)名:static afStatus_t sendRsp(void) // 功能:計(jì)算設(shè)備位置 // 輸入:參考節(jié)點(diǎn)信息// 輸出:節(jié)點(diǎn)位置 *************************************************************************/ satic afStatus_t sendRsp(void) { uint8 msq[BLINDNODE_RESPONSE_LEN+2];intl6 temp; LocRefNode_t locNodes[BLINDNODE_MAX_REF_NODES]; uintl6 x0ff, yOff; uint8 idx, cnt = 0; temp = HalAdcRead(0x0e,Ox04); msg[13] = temp_hil3(temp); msg[14] = temp_lol3(temp); for(idx = 0;idx<rspCnt;idx++) { BLINDNODE_CONV_RSSI(refNodes[idx].rssi); if(refNodes[idx].rssi!=0) { cnt++; } } if(cnt >= config.minRefNodes) { msg[BLINDNODE_RESPONSE_STATUS_IDx] = \ BLINDNODE_RSP_STATUS_SUCCESS; rspCnt = sortNodes(refNodes); calcOffsets(refNodes,&x0ff,&y0ff); setLogicals(1ocNodes,refNodes,x0ff,y0ff); //運(yùn)行定位引擎 locationCalculatePosition(1ocNodes,&(config.loc)); xOff += config.1oc.x; yoff += config.1oc.y; if(((xOff>xOld)&&((xOff - (01d)>BLINDNODE FLUSH)) || ((xOff<xOld) && ((xOld-xOff)>BLINDNODE_FLUSH)) || ((y0ff>yOld) && ((y0ff-y0ld)>BLINDNODE_FLUSH)) || ((yOff<yOld) && ((yOld-yOff)>BLINDNODE_FLUSH)))) { xOld = xoff; yOld = yoff; } else { xOld = ((xOld * (BLINDNODE_FILTER - 1)) + xOff)BLINDNODE_FILTER; yOl = ((yOld * (BLINDNODE_FILTER - 1)) + yOff)/BLINDNODE_FILTER; } xOff = (uintl6)xOld; yOff = (uintl6)yOid; } else { msg[BLINDNODE_RESPONSE_STATUS_IDX] = \ BLINDNODE_RSP_STATUS_NOT_ENOUGH_REFNODES; xOff = (uintl6)xOld; yoff = (uintl6)yOld; } rspMsg[REFNODE_CONFIG_X_LO_IDX] = \ msg[BLINDNODE_RESPONSE_X_LO_IDX] = L0_UINT16(xOff); rspMsg[REFNODE_CONFIG_X_HI_IDX] = msg[BLINDNODE_RESPONSE_X_HI_IDX] = HI_UINTl6(xOff); rspMsg[REFNODE_CONFIG_y_LO_IDX] = msg[BLINDNODE_RESPONSE_Y_LO_IDX] = L0_UINT16(yoff); rspMsg[REFNODE_CONFIG_Y_HI_IDX] = msg[BLINDNODE_RESPONSE_Y_HI_IDX] = HI_UINT16(yOff); msg[BLINDNODE_RESPONSE_NUMREFNODES_IDX] = cnt; if(rspCnt != 0) { msg[BLINDNODE_RESPONSE_REF_SHORTADDR_LO_IDX] =LO_UINT16(refNodes->addr); msg[BLINDNODE_RESPONSE_REF_SHORTADDR_HI_IDX] = \ HI_UINT16(refNodes->addr); msg[BLfNDNODE_RESPONSE_REF_X_LO_IDX] = LO_UINTl6(refNodes->x); msg[BLINDNODE_RESPONSE_REF_X_HI_IDX] = HI_UZNT16(refNodes->x) msq[BLNDNODE_RESPONSE_REF_Y_LO_IDX] =LO_UZNT16(refNodes->y); msg[BLINDNODE_RESPONSE_REF_y_HI_IDX] = HI_UINT16(refNodes->y); msg[BLINDNODE_RESPONSE_REF_RSSI] = refNodes->rssi; } else { msg[BLINDNODE_RESPONSE_REF_SHORTADDR_LO_IDX] = \ LO_UINT16(INVALID_NODE_ADDR); msg[BLINDNODE_RESPONSE_REF_SHORTADDR_HI_IDX] = \ HI_UINT16(INVALID_NODE_ADDR); msg[BLINDNODE_RESPONSE_REF_X_LO_IDX] = \ LO_UINT16(LOC_DEFAULT_X_Y); msg[BLINDNODE_RESPONSE_REF_X_HI_IDX] = \ HI_UINT16(LOC_DEFAULT_X_Y); msg[BLINDNODE_RESPONSE_REF_Y_LO_IDX] = \ LO_UINT16(LOC_DEFAULT_X_Y); msg[BLINDNODE_RESPONSE_REF_Y_HI_IDX] = \ HI_UINT16(LOC_DEFAULT_X_Y); msg[BLINDNODE_RESPONSE_REF_RSSI] = 0xFF; } #endif osal_start_timerEx(BlindNode_TaskID, BLINDNODE_WAIT_EVT, 1000); // 時(shí)間片 return(AF_DataRequest(&defAddr, (endPointDesc_t *)&epDesc, LOCATION_BLINDNODE_FIND_RESPONSE, \ BLINDNODE_RESPONSE_LEN + 2, msg, &transId, 0, AF_DEFAULT_RADIUS); } 附錄5.6 ZigBee協(xié)議協(xié)調(diào)器操作代碼 /*************************************************************************// 函數(shù)名:static void LocDongle_ProcessMSGCmd(afIncomingMSGPacket_t *plt) // 功能:處理各個(gè)節(jié)點(diǎn)的數(shù)據(jù) // 輸入:各個(gè)節(jié)點(diǎn)的數(shù)據(jù) // 輸出:給PC機(jī)輸入數(shù)據(jù) *************************************************************************/ static void LocDongle_ProcessMSGCmd(afIncomingMSGPacket_t *plt) { #if defined(ZBIT) switch(pkt->clusterld) { case LOCATION BLINDNODE_RESPONSE: //定位節(jié)點(diǎn)回答 case LOCATION_BLINDNODE_CONFIG: //定位節(jié)點(diǎn)配置 blindNodes[0].addr = pkt->srcAddr.Addr.shortAddr; blindNodes[0].ep = pkt->srcAddr.endpoint; break; default: break; } #else #include“SPIMgr.h” //所有引入信息從串口發(fā)送 uintl6 cmd = SPI_RESPONSE_BIT|SPI_CMD_SYS APP_MSG; //DstEP + SrcAddr + SrcEP + cld + len = l+2+1+2+1 uint8 buf[SPI_0DATA_MSG_LEN+7]; uint8 *pBuf = buf; uint8 *nATA_XY; uint8 succ = FALSE; *pBuf++ = SOP_VALUE; //操作系統(tǒng)值0x02 *pBuf++ = (uint8)(HI_UINTl6(cmd)); //OxlO *pBuf++ = (uint8)(LO_UINTl6(cmd)); //0x18 *pBuf++ = pkt- >cmd.DataLength + 7; //數(shù)據(jù)長度 *pBuf++ = LOCATION_DONGLE_ENDPOINT; //0xCB *pBuf++ = L0_UINTl6(pkt->srcAddr.addr.shortAddr); *pBuf++ = HI_UINTl6(pkt->srcAddr.addr.shortAddr); //網(wǎng)絡(luò)地址 *pBuf++ = pkt->srcAddr.endPoint; //終端地址 *pBuf++ = LO_UINTl6(pkt->clusterId); //串ID *pBuf++ = HI_UINTl6(pkt->clusterId); *pBuf++ = pkt->cmd_DataLength; //坐標(biāo)數(shù)據(jù)長度 DATA_XY = Pkt->cmd Data; if(HalUARTWrite(SPI_MGR_DEFAULT_PORT,buf,11)) { if(RalUARTWrite(SPI_MGR_DEFAULT_PORT,pkt->cmd.Data, \ pkt->cmd.DataLength)) { Cmd = SPIMgr_CalcFCS(buf+1,10)^SPIMgr_CalcFCS(pkt->cmd.Data, \ pkd->cmd.DataLength); //去除buf第一位操作系統(tǒng)值,然后進(jìn)行異或校驗(yàn)。 if(HalUARTWrite(SPI_MGR_DEFAULT_PORT,(uint8 * )(&cmd),1)) { SUCC=TRUE; //發(fā)送校驗(yàn)位 } } }#endif } /*************************************************************************// //函數(shù)名:byte SPIMgr_CalcFCS(uint8 *msg_ptr,uint8 len //功 能:對各位異或計(jì)算,校驗(yàn)計(jì)算 // 輸入:節(jié)點(diǎn)各位的數(shù)據(jù) // 輸出:校驗(yàn)值 ************************************************************************/ byte SPIMgr_CalcFCS(uint8 *msg_ptr,uint8 len) { byte x; byte xorResult; xorResult = 0; for(x = 0;x<len; x++,msg_ptr++) xorResult = xorResult^ *msg_ptr; //異或計(jì)算 return (xorResult); //返回校驗(yàn)值 } /************************************************************************* //函數(shù)名:byte SPIMgr_CalcFCS(uint8 *msg_ptr,uint8 len) // 功能:接收處理串口數(shù)據(jù) // 輸人:節(jié)點(diǎn)各位的數(shù)據(jù) // 輸出:無 *************************************************************************/ void SPIMgr_ProcessZToolData(uint8 port,uint8 event) { uint8 ch; /*校驗(yàn)時(shí)間*/ if(event == HAL_UART_TX_FULL) { return; } if(event&(HAL_UART_RX_FULL | \ HAL_UART_Rx_AB0uT_FuLL | \ HAL_UART_RX_TIMEOUT)) { while(HAL_UART_RxBufLen(SPI_MGR_DEFAULT_PORT)) { HalUARTRead(SPI_MGR_DEFAULT_PORT,&ch,1); switch(state) { case SOP_STATE: if(ch == SOP_VALUE) //比較第一位是否為操作系統(tǒng)值 state = CMD_STATEl; break; case CMD_STATEl: CMD_Token[0] = ch; state = CMD_STATE2; break; case CMD_STATE2: CMD_Token[1] = ch; state = LEN_STATE; break; case LEN_STATE: LEN_Token = ch; // 有效數(shù)據(jù)長度 if(ch == O) state = FCS_STATE; else state = DATA_STATE; // 數(shù)據(jù)開始 tempDataLen = 0; /* 分配閃存 */ SPI_Msg = (mtOSALSerialData_t *)osal_msg_allocate( \ sizeof(mt0SALSerialData_t) + 2 + 1 + LEN_Token); if(SPI_Msg) { SPI_Msg->hdr.event = CMD_SERIAL_MSG; SPI_Msg->msg = (uint8 *)(SPI_Msg + 1); SPI_Msg->msg[0] = CMD_Token[0]; SPI_Msg->msg[1] = CMD_Token[1]; SPI_Msg->msg[2] = LEN_Token; } else { state = SOP_STATE; return; } break; case DATA_STATE: SPI_Msg->msg[3 + tempDataLen++] = ch; // 放置串口有效數(shù)據(jù) if(tempDataLen == LEN_Token) state = FCS_STATE; break; case FCS_STATE: FSC_Token = ch; /* 確定它是正確的 */ if((SPIMgr_CalcFCS((uint8 *)&SPI_Msg->msg[0], \ 2 + 1 + LEN_Token) == FSC_Token)) { osal_msg_send(MT_TaskID, (byte *)SPI_Msg); } else { /* 分派信息 */ osal_msg_deallocate((uint8 *)SPI_Msg); } /* 復(fù)位狀態(tài),發(fā)送或丟棄buffer里面的數(shù)據(jù) */ state = SOP_STATE; break; default: break; } } } } #endif // ZTOOL /************************************************************************* // 函數(shù)名:static void LocDongle_MTMsg(uint8 len,uint8”“。g) // 功能:根據(jù)命令發(fā)送PC機(jī)數(shù)據(jù)包括,RSSI請求、參考節(jié)點(diǎn)配置、定位節(jié)點(diǎn)配置 // 輸入:Pc信息。 0 - 目的地址低位 1 - 目的地址高位 2 - endpoint 3 - 串ID低位 4 - 串ID高位 5 - 數(shù)據(jù)長度 6 - 數(shù)據(jù)第一位 // 輸出:無 *************************************************************************/ static void LocDongle_MTMsg(uint8 len, uint8 * msg) { afAddrType_t dstAddr; cId_t clusterID; uint8 dataLen; dstAddr.addr.Mode = afAddrl6Bit; // 短地址發(fā)送 dstAddr.addr.shortAddr = BUILD_UINTl6(msg[O], msg[1]); // 短地址 msg += 2; dstAddr.endPoint = *msg++; clusterID = BUILD_UINTl6(msg[O], msg[1]); msg += 2; dataLen = *msg++; if((clusterID == LOCATION_XY_RSSI_REQUEST) || (clusterID == LOCATION_REFNODE_CONFIG) || (clusterID == LOCATION_REFNODE_REQUEST_CONFIG)) { dstAddr.endPoint = LOCATION_REFNODE_ENDPOINT; } else { dstAddr.endPoint = LOCATION_BLINDNODE_ENDPOINT; }/* 發(fā)送數(shù)據(jù) */ (void)AF_DataRequest(&dstAddr, (endPointDesc_t *)&epDesc, clusterlD, dataLen, msg, &LocDongle_TransID, 0, AF_DEFAULT_RADIUS); 附錄5.7 CC1110 AP節(jié)點(diǎn)代碼(略) 附錄5.8 CC1110 ED節(jié)點(diǎn)代碼(略) 附錄6 實(shí)物圖(略)

作品圖片

  • 無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)
  • 無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)
  • 無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)
  • 無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)
  • 無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)

作品專業(yè)信息

設(shè)計(jì)、發(fā)明的目的和基本思路、創(chuàng)新點(diǎn)、技術(shù)關(guān)鍵和主要技術(shù)指標(biāo)

為解決機(jī)器人有線監(jiān)控網(wǎng)絡(luò)布線繁瑣,維護(hù)困難,監(jiān)控范圍受到限制等不足,本作品借助ZigBee無線網(wǎng)絡(luò)將機(jī)器人群進(jìn)行組網(wǎng),并以SimpliciTI網(wǎng)絡(luò)作為補(bǔ)充,實(shí)現(xiàn)PC端與無線機(jī)器人網(wǎng)絡(luò)無線鏈接,達(dá)到系統(tǒng)同步運(yùn)行、多機(jī)協(xié)同作業(yè)。每個(gè)機(jī)器人可以搭載多種傳感器與控制設(shè)備,既可獨(dú)立完成各項(xiàng)功能,也可將采集各種數(shù)據(jù)傳回PC機(jī)控制端。PC機(jī)可以實(shí)現(xiàn)對任意機(jī)器人精確定位、目標(biāo)跟蹤、實(shí)時(shí)監(jiān)控操縱等功能。 本作品的技術(shù)關(guān)鍵,一是要將大量的傳感器模塊組成無線網(wǎng)絡(luò),并通過PC機(jī)控制端進(jìn)行控制和數(shù)據(jù)傳輸;二是要將在監(jiān)控范圍內(nèi)工作的機(jī)器人整合入網(wǎng),實(shí)現(xiàn)無線定位并對其進(jìn)行遠(yuǎn)程無線監(jiān)視和操縱。 經(jīng)測試:在電池電壓為12V,室內(nèi)環(huán)境,被控小車的前后左右等動(dòng)作靈敏度發(fā)出命令到動(dòng)作時(shí)間平均為0.8S;定位精度在室內(nèi)的環(huán)境與主通信節(jié)點(diǎn)距離小于20米,大約為4cm;在室內(nèi)復(fù)雜環(huán)境,視頻圖像掉幀現(xiàn)象不明顯,圖像實(shí)時(shí)完整性;視頻的最大傳輸值平均為7Mb/s;通信誤碼率<1/10000;RSSI的瞬時(shí)值為sum(I2+Q2);RSSI的平均值為sum(RSSI(瞬時(shí)))/8192;信噪比(SNR)為60dB-75dB。 本系統(tǒng)可以既是一個(gè)自主的人工智能系統(tǒng),也是一個(gè)可遠(yuǎn)程無線人工操縱系統(tǒng),利用遠(yuǎn)程監(jiān)控克服了全人工智能無法應(yīng)對突發(fā)情況的缺點(diǎn),將人工智能和人工干預(yù)相結(jié)合,大大加強(qiáng)了系統(tǒng)的靈活性與復(fù)雜環(huán)境的適用性??梢云毡閼?yīng)用于工廠、車站物流運(yùn)輸,小區(qū)安防巡邏、醫(yī)療護(hù)理、高危場所作業(yè)等領(lǐng)域。

科學(xué)性、先進(jìn)性

本作品的先進(jìn)性體現(xiàn)在:利用無線傳感器網(wǎng)絡(luò)通信及其定位技術(shù),完成區(qū)域環(huán)境遠(yuǎn)程無線監(jiān)控,并在此基礎(chǔ)上建立對在其范圍內(nèi)工作的多個(gè)機(jī)器人組網(wǎng),以期可以達(dá)到對各機(jī)器人無線定位,遠(yuǎn)程無線監(jiān)視操縱目標(biāo),協(xié)助操控人員方便快捷地對機(jī)器人群進(jìn)行監(jiān)視和操縱,從而完成各項(xiàng)任務(wù)。 本作品的科學(xué)性體現(xiàn)在:基于Zigbee無線傳感器網(wǎng)絡(luò)及其定位技術(shù)和SimpliciTI通信網(wǎng)絡(luò)可以將傳統(tǒng)的機(jī)器人組網(wǎng)并與控制人員遠(yuǎn)程干預(yù)有效地?zé)o線結(jié)合,相對以往GPS、LPS定位方式和有線通信相比,不僅設(shè)備價(jià)格低,環(huán)境架設(shè)容易,網(wǎng)絡(luò)適應(yīng)性強(qiáng),操控靈活實(shí)用性強(qiáng)的特點(diǎn)。 Zigbee無線傳感器網(wǎng)絡(luò)工作在ISM頻段,2.4GHz頻段數(shù)據(jù)傳輸速率為250Kb/s,并且具有長距離、低功耗,其發(fā)射輸出功率為0~3.6dBm,通信距離為30~70m,節(jié)點(diǎn)長地址碼為64bit,有著在極大的網(wǎng)絡(luò)容量。SimpliciTI小型通信網(wǎng)絡(luò)作為其的補(bǔ)充,具有與其相類似的特征。

獲獎(jiǎng)情況及鑒定結(jié)果

1、本作品在2008年取得第一批湖南省大學(xué)生研究學(xué)習(xí)和創(chuàng)新性實(shí)驗(yàn)計(jì)劃項(xiàng)目(一萬元經(jīng)費(fèi)支持)。 2、作品正在科技廳等相關(guān)部門進(jìn)行技術(shù)成果鑒定。

作品所處階段

實(shí)驗(yàn)室階段。 實(shí)物作品已經(jīng)完成,進(jìn)行調(diào)試修改。

技術(shù)轉(zhuǎn)讓方式

正在和相關(guān)廠家聯(lián)系技術(shù)轉(zhuǎn)讓。

作品可展示的形式

實(shí)物、產(chǎn)品;模型;圖紙;磁盤;現(xiàn)場演示;圖片;錄像;樣品。

使用說明,技術(shù)特點(diǎn)和優(yōu)勢,適應(yīng)范圍,推廣前景的技術(shù)性說明,市場分析,經(jīng)濟(jì)效益預(yù)測

作品“無線網(wǎng)絡(luò)機(jī)器人監(jiān)控系統(tǒng)”使用操作可以分為兩個(gè)部分,第一部分為網(wǎng)絡(luò)節(jié)點(diǎn)部署,在布網(wǎng)時(shí)要考慮傳感器節(jié)點(diǎn)的位置并且將定位節(jié)點(diǎn)和通信節(jié)點(diǎn)安裝于機(jī)器人外側(cè),PC監(jiān)控端要與無線網(wǎng)關(guān)相連接調(diào)試實(shí)現(xiàn)網(wǎng)絡(luò)暢通。第二部分為代碼下載與軟件安裝,將機(jī)器人運(yùn)動(dòng)操控代碼下載入控制器,將上位機(jī)軟件安裝于PC監(jiān)控端。調(diào)試成功之后便可運(yùn)行監(jiān)控程序,實(shí)現(xiàn)對環(huán)境與機(jī)器人的無線監(jiān)控。 本作品將目前熱門的無線網(wǎng)絡(luò)傳感器技術(shù)和無線信號定位技術(shù)與機(jī)器人技術(shù)相結(jié)合,不僅實(shí)現(xiàn)了多個(gè)機(jī)器人同步協(xié)調(diào)工作,并且利用無線傳感器網(wǎng)絡(luò)實(shí)現(xiàn)對各機(jī)器人的定位,以及實(shí)現(xiàn)遠(yuǎn)程無線監(jiān)控與操縱。可以實(shí)現(xiàn)多個(gè)機(jī)器人實(shí)時(shí)有效監(jiān)控,使得用于車站、機(jī)場行李安放托運(yùn),工廠原料、成品調(diào)運(yùn)裝配,貨場物流,以及安防巡邏領(lǐng)域的機(jī)器人可以同步。不僅可以替代原有工作人員節(jié)省了人力資源,使得操控人員既可從實(shí)時(shí)監(jiān)控中解脫亦可及時(shí)處理對機(jī)器人進(jìn)行遠(yuǎn)程控制,有極好的應(yīng)用前景。

同類課題研究水平概述

在科技飛速發(fā)展的今天,機(jī)器人技術(shù)取得了長足的進(jìn)步。通過多種傳感器信息的綜合,配合高速的微控制器使得機(jī)器人智能化、獨(dú)立化。隨著對機(jī)器人應(yīng)用的廣泛,針對機(jī)器人的監(jiān)控與定位要求也逐漸提高。 目前針對機(jī)器人的監(jiān)控大體可以分為兩類,一類是遠(yuǎn)程有線監(jiān)控,一類是近距離的無線視頻監(jiān)視。這兩類監(jiān)控技術(shù)均有自身的優(yōu)勢但也有不足。總體上來說目前的監(jiān)控技術(shù)或是沒有擺脫電纜的束縛,或是只能依靠短距離的無線視頻來達(dá)到監(jiān)視的目的,并未真正做到無線網(wǎng)絡(luò)的構(gòu)建完成無線操縱與定位的目標(biāo)。正是基于以上考慮,將無線傳感器網(wǎng)絡(luò)技術(shù)與機(jī)器人技術(shù)相結(jié)合,充分利用了無線傳感器網(wǎng)絡(luò)數(shù)據(jù)傳輸與定位技術(shù),將機(jī)器人整合入網(wǎng),并且可以對多個(gè)機(jī)器人進(jìn)行監(jiān)控。國外研究無線傳感器監(jiān)控網(wǎng)絡(luò)與定位技術(shù)較國內(nèi)發(fā)展要早,國內(nèi)的研究大都處于起步階段,針對機(jī)器人的應(yīng)用研究也在起步階段。 目前的機(jī)器人的位置測定方面大都依賴于LPS等定位方式。利用Zigbee無線傳感器網(wǎng)絡(luò)組成的定位系統(tǒng)就體現(xiàn)出明顯的技術(shù)優(yōu)勢和價(jià)格優(yōu)勢。和傳統(tǒng)的定位方式相比,該方案不僅所使用的設(shè)備價(jià)格低,通信定位范圍大,而且免去了繁瑣的布線工作,使得定位系統(tǒng)架設(shè)快捷便利,維護(hù)簡單。此外,Zigbee無線傳感器網(wǎng)絡(luò)通過組網(wǎng)完成無線數(shù)據(jù)傳輸功能可以進(jìn)一步加強(qiáng)對機(jī)器人的控制,甚至可以同時(shí)與多個(gè)機(jī)器人進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)對機(jī)器人群遠(yuǎn)程無線操縱。使得操控人員方便快捷地對機(jī)器人群進(jìn)行監(jiān)視和操縱,從而完成各項(xiàng)任務(wù)。 本系統(tǒng)可以分成機(jī)器人工作終端、無線傳感器監(jiān)測網(wǎng)絡(luò)和PC監(jiān)控終端,通過ZigBee無線通信網(wǎng)絡(luò)和將三者連接起來,將機(jī)器人工作終端和PC監(jiān)控終端都納為無線通信網(wǎng)絡(luò)中的一部分。機(jī)器人工作終端以可移動(dòng)平臺為載體,搭載多種傳感器和自動(dòng)化設(shè)備,實(shí)現(xiàn)對數(shù)據(jù)的采集以及動(dòng)作的完成;PC監(jiān)控終端由一個(gè)無線網(wǎng)關(guān)和計(jì)算機(jī)組成,負(fù)責(zé)啟動(dòng)建立一個(gè)新的網(wǎng)絡(luò)以及維護(hù)現(xiàn)有的網(wǎng)絡(luò),從而保證數(shù)據(jù)可以在三者之間順利傳輸,完成計(jì)算機(jī)對整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)采集與指令廣播;傳感器監(jiān)控網(wǎng)絡(luò)是由大量的監(jiān)測節(jié)點(diǎn)構(gòu)成,監(jiān)測節(jié)點(diǎn)攜帶了所需要的傳感器,用于收集機(jī)器人發(fā)送的位置信息、機(jī)器人工作環(huán)境信息等。 本設(shè)計(jì)將大量的傳感器模塊組成無線網(wǎng)絡(luò),并在PC機(jī)控制端得到其廣播的數(shù)據(jù),可以將在監(jiān)控范圍內(nèi)工作的機(jī)器人整合入網(wǎng),實(shí)現(xiàn)無線定位并對其進(jìn)行遠(yuǎn)程無線監(jiān)視和操縱。 本作品具有國內(nèi)先進(jìn)水平。
建議反饋 返回頂部