水下傳感器網(wǎng)絡(luò)節(jié)點定位仿真軟件的設(shè)計與實現(xiàn)_第1頁
水下傳感器網(wǎng)絡(luò)節(jié)點定位仿真軟件的設(shè)計與實現(xiàn)_第2頁
水下傳感器網(wǎng)絡(luò)節(jié)點定位仿真軟件的設(shè)計與實現(xiàn)_第3頁
水下傳感器網(wǎng)絡(luò)節(jié)點定位仿真軟件的設(shè)計與實現(xiàn)_第4頁
水下傳感器網(wǎng)絡(luò)節(jié)點定位仿真軟件的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 2016 屆本科畢業(yè)論文(設(shè)計) 論文(設(shè)計)題目:水下傳感器網(wǎng)絡(luò)節(jié)點定位 仿真軟件的設(shè)計與實現(xiàn) 學(xué)生姓名: 張高 所在學(xué)院: 信息工程學(xué)院 所學(xué)專業(yè): 計算機(jī)科學(xué)與技術(shù) 導(dǎo)師姓名: 楊杰 完成時間: 2016-05-08 專心-專注-專業(yè)水下傳感器網(wǎng)絡(luò)節(jié)點定位仿真軟件的設(shè)計與實現(xiàn)摘 要水下傳感器網(wǎng)絡(luò)是將眾多傳感器節(jié)點隨機(jī)布放當(dāng)監(jiān)測水域內(nèi),節(jié)點之間通過水聲無線通信方式形成的一個多跳的自組織網(wǎng)絡(luò)系統(tǒng)。將采集監(jiān)測到的信息發(fā)送給接收者。本文首先簡單介紹了水下無線傳感器網(wǎng)絡(luò)的研究背景以及國內(nèi)外關(guān)于水下傳感器網(wǎng)絡(luò)的研究進(jìn)展。再者介紹了本文的主要研究內(nèi)容以及本系統(tǒng)用到的相關(guān)編程

2、技術(shù),節(jié)點定位常用的定位算法原理,采取類似TOA的測距方式在降低能耗的同時能夠精確的保障定位的準(zhǔn)確度。最后介紹2D與3D的仿真設(shè)計方案,利用MATLAB對算法程序進(jìn)行仿真來對本文的定位方案進(jìn)行評估。對系統(tǒng)功能進(jìn)行測試。關(guān)鍵詞:水下無線傳感器網(wǎng)絡(luò),定位,MATLAB,定位精度,仿真 DESIGN AND IMPLEMENTATION OF THE SIMULATION SOFTWARE FOR THE NODE LOCALIZATION IN UNDERWATER SENSOR NETWORKSAbstractUnderwater sensor networks is the number of

3、 sensor nodes are randomly monitored when laying the waters, a multi-hop ad hoc network system between the nodes via wireless underwater acoustic communication system formed. Monitoring information will be collected to be sent to the recipient.This paper introduces the research progress of underwate

4、r wireless sensor network research background at home and abroad about the underwater sensor networks. Also it introduced the main contents of this paper as well as the system used in the relevant programming, positioning common node localization algorithm principle, take a similar manner TOA rangin

5、g accuracy while reducing power consumption can be precisely targeted protection. Finally, 2D and 3D design simulation using MATLAB algorithm simulation program to evaluate the positioning scheme of this article. System functions to be tested.Keyword: Underwater wireless sensor network,Localzation,M

6、ATLAB,Positioning accuracy, Simulation目 錄1. 緒論1.1 研究的背景及意義水下傳感器網(wǎng)絡(luò) (Underwater Sensor Networks)是以聲音為通信介質(zhì),以海洋監(jiān)測為目的、由各種水下傳感器節(jié)點組成的無線傳感器網(wǎng)絡(luò),是海洋監(jiān)測的一種必要手段而水下節(jié)點定位更是必不可少的研究課題。定位可以提高海上航行船只方向的辨識度,可以對海里監(jiān)測的目標(biāo)進(jìn)行跟蹤,對魚群進(jìn)行監(jiān)測,同時能為海軍作戰(zhàn)提供強(qiáng)有力的保障等等。水下無線傳感器網(wǎng)絡(luò)具有很大的研究價值和應(yīng)用價值,它能夠治理海洋環(huán)境、監(jiān)測海洋災(zāi)害的發(fā)生、大力建設(shè)海洋工程、海上作業(yè)生產(chǎn)開發(fā)和海洋軍事作戰(zhàn)提供一個更有

7、力的支撐點。UWSN技術(shù)的發(fā)展將在制定水兵軍事策略的過程中起到舉足輕重的作用。因此,UWSN受到世界各界的高度重視。具有收集、計算、儲存和交互等綜合能力的無線集成傳感器得到了各領(lǐng)域大范圍的使用。水下無線傳感器網(wǎng)絡(luò)的好處使得其能夠在殘酷的水下環(huán)境中進(jìn)行部署和應(yīng)用。1.2 研究現(xiàn)狀關(guān)于水下傳感器網(wǎng)絡(luò)節(jié)點定位的研究目前國內(nèi)外還沒有一款既節(jié)約能源又能提高定位精確度的定位系統(tǒng)。要么就是定位的精確度的提高帶來的代價就是能源電量的迅速消耗。因為須要往返重復(fù)發(fā)送信號,所以電量消耗比較快?;蛘呤枪?jié)能有所提高但是定位精度會大大受到折扣。本系統(tǒng)是基于TOA的測距算法,在盡量節(jié)約能耗的同時又提高了定位的準(zhǔn)確度。1.3

8、 論文主要內(nèi)容本篇論文主要介紹水下傳感器網(wǎng)絡(luò)(Underwater Wireless Sensor Network簡稱UWSN)節(jié)點的定位軟件的仿真實現(xiàn),在海洋傳感器節(jié)點部署和分布中,節(jié)點被隨機(jī)的安放在水下三維立體空間中,以達(dá)到對監(jiān)測地區(qū)的立體感知效果?,F(xiàn)今的海洋傳感器節(jié)點部署方式主要分為兩大類:第一類是勻稱覆蓋需求(Uniform coverage requirement)的節(jié)點部署方法,即將傳感器節(jié)點均勻地布置在監(jiān)測區(qū)域。本文研究的是水下傳感器節(jié)點非均勻分布,所以均勻分布不做深入討論。第二類是非均勻覆蓋需求(Non-uniform coverage requirement)的節(jié)點部署方法,

9、也就是依據(jù)監(jiān)測目標(biāo)分布的稀疏密度的不同非均勻地布置節(jié)點。針對檢測水域內(nèi)不同感知要求,針對監(jiān)測區(qū)域的差異覆蓋采用網(wǎng)狀線切割表示法,非均勻地布置傳感器節(jié)點。主要研究問題:無規(guī)則無規(guī)律的幾何區(qū)域,不同感知需求的水下節(jié)點布置問題。優(yōu)化目標(biāo):目標(biāo)節(jié)點的覆蓋概率至少要優(yōu)于其需求。受數(shù)字圖像處理、隨機(jī)算法和3D圖形建模啟發(fā),設(shè)計了一種幾何方法網(wǎng)狀線切割表示方式,通過不斷地劃分網(wǎng)格,并在網(wǎng)格交叉點嘗試布置節(jié)點,尋找最優(yōu)的節(jié)點部署位置,實現(xiàn)對不同覆蓋要求的區(qū)域不同層次的覆蓋。文章中針對不規(guī)則水域,按照不同的覆蓋需求,更合實際環(huán)境要求地部署水下傳感器節(jié)點,且算法能夠?qū)崿F(xiàn)覆蓋需求與布置節(jié)點覆蓋更好地相配合,但該方法

10、為集中式的方式,在實際生活中很難實現(xiàn),且該方法只適應(yīng)于靜態(tài)監(jiān)測目標(biāo),對于動態(tài)不斷變化的監(jiān)測目標(biāo),還沒有深入研究,只是適用于密閉環(huán)境的水質(zhì)量監(jiān)測。1.4 論文用到的相關(guān)技術(shù)簡介本系統(tǒng)主要采用了Java語言,C#語言,access 數(shù)據(jù)庫,MATLAB仿真軟件進(jìn)行設(shè)計。Java語言主要是用來對前臺界面的編寫設(shè)計以及用JDBC與數(shù)據(jù)庫進(jìn)行交互查詢。Java語言最大的好處是其可移植性,一次編譯,到處運行。C#語言是編寫.net的最好語言,尤其是設(shè)計前端界面十分美觀漂亮,所以這里采用C#語言來進(jìn)行編寫。使用MATLAB仿真軟件進(jìn)行3D圖形繪制。因為關(guān)于3D仿真圖形的設(shè)計MATLAB是最好也是能與眾多高級

11、編程語言相結(jié)合的一款界面圖形繪制軟件。2. 水下傳感器網(wǎng)絡(luò)節(jié)點定位研究2.1 傳感器節(jié)點內(nèi)部結(jié)構(gòu)水下傳感器網(wǎng)絡(luò)是由無數(shù)個水下微傳感器節(jié)點所構(gòu)成,而每一個節(jié)點主要由存儲器、聲學(xué)MODEM、中央處理器隨機(jī)處理器、傳感器界面電路、傳感器、電源等幾部分組成。這些不均勻分布的節(jié)點之間可以相互通信傳輸數(shù)據(jù),但是,如果其中的一個節(jié)點電源一旦斷電,那么這個節(jié)點就會處于死亡無效狀態(tài)不能工作。每一個節(jié)點自身都帶有一個浮標(biāo)參數(shù)標(biāo)志自己沉在海水中的深度。傳感器節(jié)點入水后所有節(jié)點處于激活狀態(tài)并且會根據(jù)相應(yīng)的算法計算出自身所處位置根據(jù)需要調(diào)節(jié)所在深度。然后對海洋里周圍感知的事物信息進(jìn)行信息采集和數(shù)據(jù)處理;在傳感器節(jié)點之間

12、進(jìn)行水聲無線通訊;利用節(jié)點的自組織能力形成多級跳的自建組織網(wǎng)絡(luò);最終通過網(wǎng)關(guān)節(jié)點或船艦接收站將處理后的信息以無線電通信方式送入岸上陸基基站,形成一個水下傳感器監(jiān)測網(wǎng)絡(luò)。節(jié)點內(nèi)部結(jié)構(gòu)與關(guān)系如下圖所示:圖2-1 傳感器內(nèi)部結(jié)構(gòu)圖2.2 常用測距方法測距的典型算法主要有以下四種TOA(基于信號到達(dá)時間)、TDOA(信號到達(dá)時間差)、AOA(基于信號角度)和RSSI(信號接收角度)。下面分別做一個介紹:TDOA是一種無線定位技術(shù)是對TOA算法的一種改進(jìn)方案是通過判斷監(jiān)測信號到達(dá)兩個節(jié)點的時間差來進(jìn)行定位的。TDOA算法解決了發(fā)送節(jié)點和接收節(jié)點時間同步的問題以及發(fā)送端必須持有時間戳的問題。TDOA測距方

13、法原理圖2-2所示。未知節(jié)點發(fā)射聲波信號,經(jīng)過t1時間后,錨節(jié)點1收到信號,經(jīng)過t2 時間后錨節(jié)點2收到信號錨節(jié)點1和錨節(jié)點2的TDOA值為t2-t1.設(shè)聲信號傳播速度為v,那么未知節(jié)點與兩個已知節(jié)點之間的距離差為s=v×(t2-t1).圖2-2 TDOA測距原理圖AOA是基于信號到達(dá)角度的一種算法也是一種典型的測距算法。這種算法需要節(jié)點或者錨點帶有方向性天線進(jìn)行方向測定。因此增加了成本并且?guī)в芯窒扌?。AOA不僅能確定節(jié)點的坐標(biāo),還能確定節(jié)點所在的方向,但AOA容易收到外界因素的影響,因此不宜在大規(guī)模水下傳感器節(jié)點定位中使用。RSSI是一種根據(jù)信號接收角度的大小來進(jìn)行定位的一種算法。

14、采用RSSI定位的算法精度很容易受到路徑損耗的影響。參考點距離越小,定位越精確,參考點越多,定位時間就花費的越久。RSSI測距算法的基本原理是:已知發(fā)射節(jié)點的信號強(qiáng)度,接收節(jié)點根據(jù)接收到的信號強(qiáng)度計算出信號衰減程度,將傳輸過程中的能量損耗轉(zhuǎn)化為距離,下面是其測距公式:RSSI測距方法容易受水下環(huán)境影響,因此RSSI測量值并不高。但是RSSI無需額外的硬件設(shè)備支持,因此RSSI適用于大型的水下傳感器網(wǎng)絡(luò)節(jié)點定位。TOA是基于信號到達(dá)時間來進(jìn)行定位的。而以上三種測距算法要么算法太復(fù)雜要么是實現(xiàn)起來不容易。TOA測距算法效果在水下比陸地上更好。所在在這里主要討論TOA測距算法。 TOA測距算法是按照

15、信號的傳輸時間以及傳輸速度要求節(jié)點之間的距離,所以TOA測距算法須要網(wǎng)絡(luò)上的時鐘同步。TOA算法計算量小,簡單易行,適用于實際。2.3 定位計算基本方法在水下傳感器網(wǎng)絡(luò)定位中,節(jié)點一般處于三維立體空間中,將三維空間投射到二維平面上。如下圖2-3所示,圖2-3 三邊測距法示意圖位置節(jié)點O收到了3個不在一條直線上的鄰居已知節(jié)點a,b,c發(fā)送過來的位置信息其中包含節(jié)點位置、發(fā)送時間戳等它們的坐標(biāo)分別為(Xa,Ya,XYb,Xc,Yc).通過測距算法可以算出節(jié)點o與三個鄰居節(jié)點的距離dA,dB,dC。則點o必定在分別以點A、B、C為圓心,dA、dB、dC為半徑的圓上??筛鶕?jù)公式(2.1)求出節(jié)點0的位

16、置如公式(2.2)所示。 (2.1) (2.2)下圖是節(jié)點隨機(jī)分布在水下3D環(huán)境的示意圖,根據(jù)上面的計算方式獲悉三個已知節(jié)點可以來定位一個未知節(jié)點。節(jié)點會隨機(jī)播撒在海洋環(huán)境中,對想要探究的水域進(jìn)行多重定位分析匯總數(shù)據(jù)。圖2-4 水下傳感器網(wǎng)絡(luò)節(jié)點分布圖3. 水下傳感器節(jié)點2D與3D仿真設(shè)計與實現(xiàn)3.1 系統(tǒng)設(shè)計概述(1)2D仿真水下傳感器2D設(shè)計主要是考慮到傳感器節(jié)點漂浮于海面上或者錨定于海底,那么在這里只需要兩個坐標(biāo)參數(shù)就可以實現(xiàn)定位,當(dāng)節(jié)點漂浮于海面上可以通過衛(wèi)星定位系統(tǒng)GPS來實現(xiàn)定位;當(dāng)節(jié)點錨定于海底,將三維坐標(biāo)投射到二維平面上,研究其節(jié)點的稀疏性,節(jié)點的是否是均勻分布。(2)3D仿真

17、因為水下無線傳感器網(wǎng)絡(luò)的研究工作大多是基于二維平面是大多數(shù)水下無線傳感器網(wǎng)絡(luò)的研究基礎(chǔ)。而實際的水下傳感器網(wǎng)絡(luò)可能須要全方位立體的檢測獲取各個深度的環(huán)境數(shù)據(jù),因此必須將二維網(wǎng)絡(luò)的研究拓展到三維進(jìn)行重新研究或者深入研究,節(jié)點會根據(jù)自身攜帶的浮標(biāo)進(jìn)行上升或者下潛。以滿足節(jié)點之間的非均勻分布。3.2 系統(tǒng)功能設(shè)計完成一個節(jié)點定位仿真軟件,需要劃分一下幾個功能模塊:第一個模塊要有傳感器節(jié)點自動生成功能,一個節(jié)點就是一條記錄,一個節(jié)點會經(jīng)過多個輪次的變換最終到達(dá)死亡狀態(tài),然后將生成的節(jié)點記錄存入數(shù)據(jù)中,利用網(wǎng)格線切割表示法將3D坐標(biāo)投射到2D平面上顯示。最后利用MATLAB的仿真工具繪制3D曲面圖形。下

18、圖是系統(tǒng)功能模塊圖:圖3-2 功能模塊圖3.2.1 節(jié)點生成功能在eclipse中用Java語言編寫程序生成access數(shù)據(jù),對數(shù)據(jù)庫的打開、數(shù)據(jù)的錄入修改更新等、定義各個數(shù)據(jù)量的含義以及相關(guān)數(shù)據(jù)量的狀態(tài)等等。在界面中輸入節(jié)點個數(shù),自動計算出存活輪次,節(jié)點狀態(tài),消耗電量及剩余電量采集數(shù)據(jù)的時間以及節(jié)點的坐標(biāo)。3.2.2 數(shù)據(jù)庫存儲功能將生成的節(jié)點信息以記錄的方式存入數(shù)據(jù)庫,只要節(jié)點生成功能程序發(fā)生對數(shù)據(jù)庫的修改操作就會立刻反應(yīng)在數(shù)據(jù)庫的表中實現(xiàn)即時更新操作以供后面仿真程序能夠立刻查詢引用。3.2.3 2D圖形繪制根據(jù)節(jié)點x,y 的坐標(biāo)繪制出所有節(jié)點在2D圖形坐標(biāo)中的位置。它會根據(jù)節(jié)點個數(shù)的增加

19、自動計算和均勻的分布在海洋監(jiān)測區(qū)域內(nèi)。3.2.4 3D圖形繪制根據(jù)節(jié)點x,y,z 的坐標(biāo)調(diào)用MATLAB繪圖方法繪制節(jié)點在3D圖形坐標(biāo)中的位置。此坐標(biāo)會非均勻的分布在曲面圖形上,模擬傳感器節(jié)點在海水中的部署位置。3.3 程序流程程序流程圖是指程序?qū)嶋H運行中先備用和后配用的順序和關(guān)系的邏輯圖?;陔娔X客戶端的軟件設(shè)計方案大致都有一套自己的流程圖,程序流程圖反應(yīng)了系統(tǒng)的一個設(shè)計思路以及操作的先后次序。圖3-3 程序流程設(shè)計圖3.4 2D仿真設(shè)計2D仿真設(shè)計將三維坐標(biāo)投影到二維平面然后只取節(jié)點的x,y坐標(biāo),使用網(wǎng)格線表示法,在兩線交叉處繪制節(jié)點坐標(biāo)。下圖是2D仿真設(shè)計圖:圖3-4 2D仿真設(shè)計圖在U

20、WSNs節(jié)點部署系統(tǒng)中中輸入節(jié)點個數(shù)生成節(jié)點記錄,將節(jié)點記錄寫入數(shù)據(jù)庫表中,此系統(tǒng)是采用Java語言編寫設(shè)計的下面是Java與數(shù)據(jù)庫進(jìn)行交互的具體代碼:private void AddAccess(int poin_x,int poin_y,int poin_z,int p_id) throws SQLException, UnsupportedEncodingException/將節(jié)點坐標(biāo)信息插入數(shù)據(jù)庫的sql語句String sql = "insert into tb_position (x,y,z,pid) "+ " values( "+poin_

21、x+" ,"+poin_y+" ,"+poin_z+" ,"+p_id +" )" /Access 數(shù)據(jù)庫路徑 String dbpath = getAccessPath()+"節(jié)點2d3d顯示數(shù)據(jù)庫ceshi.accdb" /加載數(shù)據(jù)庫驅(qū)動 String url = "jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=" + dbpath; Properties properties = new Pr

22、operties() ; /這里設(shè)置是為了防止查詢的時候出現(xiàn)亂碼 properties.setProperty("charSet", "gbk") ; Connection conn = null; try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch (ClassNotFoundException e) e.printStackTrace(); conn = DriverManager.getConnection(url,properties); Statement sta

23、tement = conn.createStatement(); statement.executeUpdate(sql); conn.close(); /創(chuàng)建數(shù)據(jù)庫路徑private static String getAccessPath()String APath="" File file =new File("batterydemo");APath=file.getAbsolutePath().substring(0,file.getAbsolutePath().indexOf("節(jié)點2d3d顯示");return APath;

24、private void AddAccess(int turn,int node_id,int state,String stateStr,double battery_run,double battery_left,String time, int poin_x,int poin_y,int poin_z) throws SQLException, UnsupportedEncodingException/將節(jié)點信息插入數(shù)據(jù)庫中的SQL語句String sql = "insert into tb_ceshi (turn,s,d,f,g,h,j) "+ " val

25、ues( "+turn+" ,"+node_id+" ,"+state+" , '"+stateStr+"' ,"+battery_run+" ,"+battery_left+" ,'"+time+" ' )" /Access 數(shù)據(jù)庫路徑 String dbpath = getAccessPath()+"節(jié)點2d3d顯示數(shù)據(jù)庫ceshi.accdb" /連接字符串 String url = &q

26、uot;jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=" + dbpath; Properties properties = new Properties() ; /這里設(shè)置是為了防止查詢的時候出現(xiàn)亂碼 properties.setProperty("charSet", "gbk") ; Connection conn = null; try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch

27、(ClassNotFoundException e) e.printStackTrace(); conn = DriverManager.getConnection(url,properties); Statement statement = conn.createStatement(); statement.executeUpdate(sql); conn.close(); private static String getAccessPath()String APath="" File file =new File("新建文件夾");APath=fi

28、le.getAbsolutePath().substring(0,file.getAbsolutePath().indexOf("節(jié)點2d3d顯示");return APath;傳感器節(jié)點信息存入數(shù)據(jù)庫,通過C#語言來調(diào)用讀取數(shù)據(jù)庫中的記錄信息,根據(jù)節(jié)點坐標(biāo)在C#設(shè)計的二維平面中進(jìn)行節(jié)點的繪制下面是C#語言繪圖描點的具體代碼:namespace Run class MyPoint public int x,y; /x,y表示點所在的坐標(biāo),z / public int m, n; /m,n表示點所在的行和列 public static int r = 15; /畫點的直徑 p

29、ublic int id ; /點表中的id public int dir; Color mycolor; public int No_id; public static int RANG_WIDTH = 0; public static int LD= 20 ,CD = 20; /LD,CD 表示橫縱邊距 public static int WD = 20, HD = 25;/WD,LD表示兩點之間距離 public static int column = 0;/column表示一共有多少列 public MyPoint() public MyPoint(int id,int dir,int

30、 No_id,int x,int y,int z) this.id = id; this.dir = dir; this.No_id = No_id; this.x = x; this.y = y; if (this.dir = 1) mycolor = Color.Green; if (this.dir = 2) mycolor = Color.Yellow; if (this.dir = 0) mycolor = Color.Red; public void Draw(Graphics g) Brush brush = new SolidBrush(mycolor); g.FillElli

31、pse(brush, x, y, r/2, r/2); namespace Run class Line int Lx, Ly, Lx1, Ly1; public static int t = 10; /同列,行時劃線上升高度 public Line(int Lx, int Ly, int Lx1, int Ly1) this.Lx = Lx + (MyPoint.r) / 4; this.Ly = Ly + (MyPoint.r) / 4; this.Lx1 = Lx1 +( MyPoint.r)/4; this.Ly1 = Ly1 + (MyPoint.r)/4; public void

32、Line_draw(Graphics e) Pen pen = new Pen(Color.Black); if (Lx = Lx1 && Ly != Ly1) Point point = new Point(Lx,Ly), new Point (Lx-t,Ly), new Point(Lx1-t,Ly1), new Point(Lx1,Ly1) ; e.DrawLines(pen, point); if (Ly = Ly1 && Lx != Lx1) Point point = new Point(Lx,Ly), new Point (Lx,Ly-t), ne

33、w Point(Lx1,Ly1 -t), new Point(Lx1,Ly1) ; e.DrawLines(pen, point); if(Lx !=Lx1 && Ly !=Ly1 ) Point point = new Point(Lx,Ly), new Point(Lx1,Ly1) ; e.DrawLines(pen, point); 3.5 3D仿真設(shè)計MATLAB仿真軟件是主要用于數(shù)據(jù)計算,圖形繪制,是最佳的仿真軟件所在這里使用MATLAB編譯工具與C#相結(jié)合通過調(diào)用數(shù)據(jù)庫里的表數(shù)據(jù)根據(jù)節(jié)點記錄繪制節(jié)點所在曲面上的位置。而數(shù)據(jù)庫中的數(shù)據(jù)又是在eclipse中生成的記錄數(shù)

34、據(jù)。下圖是仿真設(shè)計流程圖:圖3-5 3D仿真設(shè)計圖首先,是在eclipse中的編程:用 Java語言實現(xiàn)對數(shù)據(jù)庫的基本操作。即對數(shù)據(jù)庫的打開、數(shù)據(jù)的錄入修改更新等、定義各個數(shù)據(jù)量的含義以及相關(guān)數(shù)據(jù)量的狀態(tài)等等。除此之外,基于本設(shè)計是對水下傳感器節(jié)點的仿真與實現(xiàn),還會涉及到節(jié)點總個數(shù)的多少、循環(huán)的輪次、節(jié)點的編號、剩余電量、數(shù)據(jù)的采集時間等問題,都在eclipse用Java語言實現(xiàn)。3D仿真的實現(xiàn)關(guān)鍵在于matlab與C#的互相調(diào)用。具體步驟如下:(1)編輯函數(shù)function實現(xiàn)了查詢access數(shù)據(jù)庫,獲得x、y、z坐標(biāo),代碼如下:function fg=lunci(m)fg=m;%a=in

35、put('');%a=1;%string a="90"% sql="select * from biao where o='"+a+"'" b1=int2str(fg);disp(b1);sql1 = 'select x from tb_ceshi,tb_position where tb_ceshi.s=tb_position.pid and turn = ', b1,''sql2 = 'select y from tb_ceshi,tb_position wh

36、ere tb_ceshi.s=tb_position.pid and turn = ', b1,''sql3 = 'select z from tb_ceshi,tb_position where tb_ceshi.s=tb_position.pid and turn = ', b1,''conna=database('SampleDB','','');x1=fetch(conna,sql1);y1=fetch(conna,sql2);z1=fetch(conna,sql3);xi = ce

37、ll2mat(x1);yi=cell2mat(y1);zi=cell2mat(z1);(2)利用函數(shù)surf或plot3,畫出三維面圖或者三維點圖(3)在matlab的Command窗口下輸入deploytool。如圖所示:在此窗口下更改Name然后選擇Type為.NET Assembly。圖3-6 matlab工具選項(4)matlab右側(cè)選擇Add classes然后選擇Add files把上步保存的文件添加進(jìn)來,然后點擊Build打包成.dll文件。圖3-7 打包.dll文件(5)在C#中添加引用matlab生成的dll文件,如圖所示:圖3-8 添加.dll文件3.6 數(shù)據(jù)庫設(shè)計既然要用

38、到數(shù)據(jù)存儲,那么數(shù)據(jù)庫是必不可少的工具,任何一款軟件數(shù)據(jù)庫是核心,所有的用戶配置信息都要存入數(shù)據(jù)庫,一款軟件要是沒有后臺數(shù)據(jù)庫做支撐。下面兩個表是本系統(tǒng)用到的數(shù)據(jù)庫表。表3.1是將UWSNs節(jié)點部署系統(tǒng)生成的節(jié)點基本信息存入表中,其中包括節(jié)點序號,循環(huán)輪次,節(jié)點編號,狀態(tài)號,節(jié)點狀態(tài),消耗電量,剩余電量,采集時間。表3.1 節(jié)點信息表(tb_ceshi)名稱字段類型節(jié)點序號ID自動編號循環(huán)輪次Turn數(shù)字節(jié)點編號S數(shù)字狀態(tài)號D數(shù)字節(jié)點狀態(tài)F短文本消耗電量G數(shù)字剩余電量H數(shù)字采集時間J短文本表3.2是將UWSNs節(jié)點部署系統(tǒng)生成的節(jié)點坐標(biāo)位置信息存入表中,包括了節(jié)點序號,節(jié)點編號節(jié)點x,y,z坐

39、標(biāo)。表3.2 節(jié)點坐標(biāo)信息表(tb_position)名稱字段類型節(jié)點序號ID自動編號xx數(shù)字yy數(shù)字zz數(shù)字節(jié)點編號Pid數(shù)字4. 系統(tǒng)測試運行4.1 模擬傳感器節(jié)點自動生成功能輸入節(jié)點個數(shù),點擊確定之后,系統(tǒng)會經(jīng)過相應(yīng)的算法得到節(jié)點編號,狀態(tài)號,節(jié)點狀態(tài),消耗的電量,剩余電量,采集時間以及節(jié)點的坐標(biāo)。如圖4-1是生成五個節(jié)點信息的結(jié)果。圖4-1 生成個節(jié)點結(jié)果圖圖4-2顯示的是15個節(jié)點輸出的信息。圖4-2 生成15個節(jié)點結(jié)果圖圖4-3顯示的是40個節(jié)點顯示的信息。圖4-3 生成40個節(jié)點結(jié)果圖圖4-4顯示的是80個節(jié)點輸出的信息如下圖:圖4-4 生成80個節(jié)點結(jié)果圖圖4-5顯示的是150

40、個節(jié)點輸出的信息。圖4-5 生成150個節(jié)點結(jié)果圖圖4-6顯示的是300個節(jié)點輸出的信息。圖4-6 生成300個節(jié)點結(jié)果圖圖4-7顯示的是500個節(jié)點經(jīng)過算法打印輸出的信息如下圖:圖4-7 生成500個節(jié)點結(jié)果圖圖4-8顯示的是800個節(jié)點經(jīng)過算法打印輸出的信息如下圖:圖4-8 生成800個節(jié)點結(jié)果圖圖4-9顯示的是1300個節(jié)點經(jīng)過算法打印輸出的信息如下圖:圖4-9 生成1300個節(jié)點結(jié)果圖4.2 節(jié)點信息存入數(shù)據(jù)庫當(dāng)點擊確定按鈕之后會將程序輸出打印的信息用JDBC訪問數(shù)據(jù)庫然后執(zhí)行SQL語句以記錄的形式將節(jié)點信息插入到數(shù)據(jù)庫的表中如下圖所示:圖4-10 節(jié)點信息存入數(shù)據(jù)庫表圖4-11 節(jié)點

41、坐標(biāo)存入數(shù)據(jù)庫表4.3 繪制2D圖形根據(jù)數(shù)據(jù)庫中的坐標(biāo)使用C#語言繪制坐標(biāo)這里使用網(wǎng)狀線切割表示法嘗試在網(wǎng)狀線的交叉點繪制節(jié)點,對以下節(jié)點信息的稀疏性進(jìn)行考究。圖形如下圖所示:圖4-12 個節(jié)點繪制圖圖4-13描繪的是15個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察到節(jié)點與節(jié)點之間的距離還是相當(dāng)遠(yuǎn)的。圖4-13 15個節(jié)點繪制圖圖4-14描繪的是40個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察到節(jié)點與節(jié)點之間的距離還是比較遠(yuǎn)的沒有很大的變化。圖4-14 40個節(jié)點繪制圖圖4-15描繪的是80個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察到節(jié)點與節(jié)點之間的距離隨著節(jié)點個數(shù)的增加節(jié)點與節(jié)點之間的稀疏性慢慢

42、的就減小。圖4-15 80個節(jié)點繪制圖圖4-16描繪的是150個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察到節(jié)點與節(jié)點之間的距離隨著節(jié)點個數(shù)的增加節(jié)點與節(jié)點之間的稀疏性慢慢的就減小。當(dāng)節(jié)點之間的距離到達(dá)一定程度時會擴(kuò)展監(jiān)測區(qū)域進(jìn)行部署節(jié)點。圖4-16 150個節(jié)點繪制圖圖4-17描繪的是300個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察到節(jié)點與節(jié)點之間的距離隨著節(jié)點個數(shù)的增加節(jié)點與節(jié)點之間的稀疏性慢慢的就減小。當(dāng)節(jié)點之間的距離到達(dá)一定程度時會擴(kuò)展監(jiān)測區(qū)域進(jìn)行部署節(jié)點,同時節(jié)點之間的通信開銷也會隨之減小。圖4-17 300個節(jié)點繪制圖圖4-18描繪的是500個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察

43、到節(jié)點與節(jié)點之間的距離隨著節(jié)點個數(shù)的增加節(jié)點與節(jié)點之間的稀疏性慢慢的就減小。當(dāng)節(jié)點之間的距離到達(dá)一定程度時會擴(kuò)展監(jiān)測區(qū)域進(jìn)行部署節(jié)點。當(dāng)節(jié)點之間越緊密,節(jié)點的定位就越精確。圖4-18 500個節(jié)點繪制圖圖4-19描繪的是800個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察到節(jié)點與節(jié)點之間的距離隨著節(jié)點個數(shù)的增加節(jié)點與節(jié)點之間的稀疏性慢慢的就減小。節(jié)點的非均勻分布性也體現(xiàn)出來。圖4-19 800個節(jié)點繪制圖圖4-20描繪的是1300個節(jié)點所在的二維平面下的坐標(biāo)位置,可以觀察到節(jié)點與節(jié)點之間的距離隨著節(jié)點個數(shù)的增加節(jié)點與節(jié)點之間的稀疏性慢慢的就減小。當(dāng)節(jié)點之間的距離到達(dá)一定程度時會擴(kuò)展監(jiān)測區(qū)域進(jìn)行部署

44、節(jié)點。節(jié)點的密度越來越小,總體呈無規(guī)律式分布。圖4-20 1300個節(jié)點繪制圖經(jīng)過上圖幾個輪次的對比,隨著傳感器節(jié)點的增加,節(jié)點之間的稀疏性會隨之減少,節(jié)點之間的不均勻分布性也隨之體現(xiàn)出來。節(jié)點之間越小越緊密,節(jié)點之間的通信開銷就越小。反之亦然。4.4 繪制3D圖形使用C#與MATLAB語言相結(jié)合,通過將坐標(biāo)傳入函數(shù)方法調(diào)用MATLAB繪制方法繪制出坐標(biāo)在3D圖形下的位置。下圖顯示的是5個傳感器節(jié)點所處水下環(huán)境的位置。如下圖所示:圖4-21 個節(jié)點的3D仿真繪制圖圖4-22是15個傳感器節(jié)點的3D仿真圖。D圖4-22 15個節(jié)點3D仿真繪制圖圖4-23是40個節(jié)點的3D仿真圖,隨著節(jié)點個數(shù)的增

45、加,節(jié)點分布的不均勻性也隨機(jī)體現(xiàn)出來。4-23 40個節(jié)點3D仿真繪制圖圖4-24是80個傳感器節(jié)點的3D仿真圖。圖4-24 80個節(jié)點3D仿真繪制圖圖4-25是150個節(jié)點3D仿真圖當(dāng)隨著傳感器節(jié)點數(shù)量的增多,節(jié)點的與節(jié)點之間的密度也隨之減少。圖4-25 150個節(jié)點3D仿真繪制圖圖4-26是300個節(jié)點3D仿真圖。圖4-26 300個節(jié)點3D仿真繪制圖圖2-27是500個節(jié)點3D仿真圖當(dāng)隨著傳感器節(jié)點數(shù)量達(dá)到一定規(guī)模數(shù)量,其節(jié)點的非均勻分布性通過下圖的仿真圖形自然而然的體現(xiàn)出來。圖4-27 500個節(jié)點3D仿真繪制圖圖4-28是800個節(jié)點3D仿真圖反應(yīng)了其節(jié)點的非均勻分布特性。圖4-28

46、 800個節(jié)點3D仿真繪制圖圖4-29是1300個節(jié)點3D仿真圖,經(jīng)過上圖幾個輪次的對比,傳感器節(jié)點越少,節(jié)點密度越小,節(jié)點之間的通信能量消耗就越大,節(jié)點密度越小,節(jié)點之間的通信開銷就越小。圖4-29 1300個節(jié)點3D仿真繪制圖4.5 系統(tǒng)測試系統(tǒng)測試時軟件開發(fā)過程中常用的調(diào)試方法。任何一款軟件在投入應(yīng)用前都必須經(jīng)過單元測試,軟件測試;而單元測試是針對系統(tǒng)中的一個小功能小模塊進(jìn)行回環(huán)重現(xiàn)測試。以防止出現(xiàn)更大的系統(tǒng)漏洞。而軟件測試是整個項目完工進(jìn)行的測試,所以在軟件開發(fā)過程中測試是一個必不可少的環(huán)節(jié),能夠避免錯誤的發(fā)生。表4.1 系統(tǒng)測試表節(jié)點個數(shù)運行時間崩潰次數(shù)55000ms01513000

47、ms04027000ms18022000ms015060000ms0300ms2500ms0800ms01300ms24.6 結(jié)論經(jīng)測試隨著傳感器節(jié)點的增加,系統(tǒng)程序運行的時間,以及程序的崩潰次數(shù)是否與節(jié)點的個數(shù)的數(shù)量有關(guān).從表4.6可以得到隨著傳感器節(jié)點的增多,系統(tǒng)運行時間也會隨之增加,節(jié)點與節(jié)點之間的密度也會隨之減小,節(jié)點在2D平面上的稀疏性與節(jié)點在3D仿真圖形下呈現(xiàn)的非均勻分布性成正比。經(jīng)測試本系統(tǒng)性能比較穩(wěn)定,崩潰次數(shù)也是很少。5. 總結(jié)與展望5.1 總結(jié)本論文我用到了JAVA語言,C#語言,MATLAB工具,將三者有機(jī)地結(jié)合到了一起。Java用來將數(shù)據(jù)生成,C#用來將水下傳感器2D隨

48、機(jī)分布圖繪制出來而且實現(xiàn)界面的設(shè)計,使用MATLAB主要是繪制水下傳感器3D仿真分布圖。其中數(shù)據(jù)庫方面使用到了access數(shù)據(jù)庫來實現(xiàn)數(shù)據(jù)的存儲與取出。JAVA代碼產(chǎn)生節(jié)點的信息包括節(jié)點的位置,存活狀態(tài),剩余電量等信息。得到這些數(shù)據(jù)之后我們通過C#將這些隨機(jī)生成的節(jié)點繪制出來,用來描述水下傳感器在水下的一個模擬的位置及存活情況,以便后續(xù)對傳感器放置以及設(shè)計提供一個參考。如果只繪制2D圖來描述水下傳感器的狀態(tài)還是遠(yuǎn)遠(yuǎn)不夠的。傳感器在水下分布狀態(tài)并不是在一個平面上的,由于水是不斷地在運動因此傳感器在水下也是隨機(jī)分布在不同的位置,因此3D圖的繪制也是十分重要的。因此使用起來還是很容易上手的。通過3D

49、的繪制我們更加清楚的觀察到傳感器節(jié)點在水下分布的位置。通過本次畢業(yè)設(shè)計使我更加明白理論知識與實踐操作相結(jié)合的重要性。優(yōu)點:本系統(tǒng)采用的是簡單易懂的程序設(shè)計語言編寫的,界面簡潔美觀,一目了然,運行速度快,沒有很大的數(shù)據(jù)冗余,降低了內(nèi)存的消耗。采用經(jīng)典的算法進(jìn)行探究。缺點:本系統(tǒng)旨在仿真一個水下傳感器定位軟件,因此沒有與實際的水下探測器,水下滑翔機(jī)等硬件設(shè)備相結(jié)合,沒有對定位算法進(jìn)行絕對的優(yōu)化。5.2 展望本系統(tǒng)將節(jié)點的生成單獨設(shè)計成一個系統(tǒng),二維平面的仿真與三維仿真設(shè)計成一系統(tǒng),數(shù)據(jù)庫單獨存放,系統(tǒng)有時候會因為不穩(wěn)定性導(dǎo)致程序崩潰??偟膩碚f本系統(tǒng)是一個比較簡單的水下傳感器節(jié)點定位系統(tǒng)。沒有將各個

50、模塊進(jìn)行融合。下一步我打算對本系統(tǒng)進(jìn)行改進(jìn),將各個模塊進(jìn)行融合設(shè)計一個功能強(qiáng)大的節(jié)點定位系統(tǒng)。并且能與硬件設(shè)備相結(jié)合早日投入使用。參考文獻(xiàn)1王士凱. 基于水下無線傳感器網(wǎng)絡(luò)AUV自組網(wǎng)關(guān)鍵技術(shù)研究,20142謝松. 基于蟻群算法的無線傳感器網(wǎng)絡(luò)節(jié)點定位算法研究,20143KIM C,LEE S,KIM K.3D underwater localization with hybrid ranging method for near-sea marine monitoringC.Embedded and Ubiquitous Computing(EUC),2011 IFIP 9th Interna

51、tional Conference on,IEEE,2011:438-4414姚西.水下無線傳感器網(wǎng)絡(luò)定位技術(shù)綜述J.現(xiàn)代電子技術(shù).2013(07):11-15.5EROL M,VIEIRA L F M,GERIL M.Localization with DNR beacons for underwater acoustic sensor networksC.Proceedings of the Second Workshop on Underwater Netwroks.ACM,2014:97-100.6張敏,穆天圓,喬學(xué)工. 基于低能耗自適應(yīng)的水下傳感器網(wǎng)絡(luò)定位算法J.微電子學(xué)與計算機(jī),2

52、016,03:107-110.7A Localization Scheme for Underwater Sensor Networks Without Time Synchronization Beniwal, Mukesh (Department of Computer Science and Engineering, Guru Jambheshwar University of Science and Technology, Hisar, India); Singh, Rishi Pal; Sangwan, Anju Source: Wireless Personal Communica

53、tions, p 1-16, January 11, 2016 Article in Press Database: Compendex8張敏,穆天圓,喬學(xué)工. 基于低能耗自適應(yīng)的水下傳感器網(wǎng)絡(luò)定位算法J. 微電子學(xué)與計算機(jī),2016,03:107-110.9魏先民. 基于多面體質(zhì)心算法的水下傳感器網(wǎng)絡(luò)定位J. 計算機(jī)科學(xué),2013,05:102-105.10MANCL: A multi-anchor nodes collaborative localization algorithm for underwater acoustic sensor networks Han, Guangjie (Department of Information and Communication Engineering, Hohai University, Changzh

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論