吳佳楠, 溫智皓, 賀曼利, 吳 劍, 李念峰
(長春大學 計算機科學技術學院, 長春 130022)
以水下仿生機器魚為代表的水下航行器(autonomous underwater vehicle, AUV)因具有良好的自主性和靈活性, 已成為探索海洋復雜水下環境的有效工具, 具有良好的應用前景[1-2]. 但海洋環境的特殊性對無人航行器的續航能力、 可靠性提出了更高要求. 由于水質、 水流、 電導率、 壓強等水下環境因素的影響, 傳統的通信方式很難有效工作, 目前主要有水下光學通信、 水下聲學通信和水下電場通信等幾種通信方式[3]. 水下光學通信以光波作為信息載體, 具有近距離高速通信的特點, 但其對使用環境要求較高[4]; 水聲通信是當前應用較廣泛的水下通信方法, 其技術成熟, 可實現水下遠距離通信, 但會受環境和通信介質的影響, 易出現盲區, 發射器效率較低[5]; 水下電場通信是將電流形成的電場作為介質進行通信, 傳輸信號穩定, 對環境限制少, 靈活性較高[6-7]. 相比于光學和水聲通信, 水下電場通信技術因其能耗低, 不受水域渾濁等因素影響的特點, 對仿生魚在水下進行組網通信有重要意義. 北京大學的仿生魚研究團隊選取箱鲀魚為仿生對象, 設計出一種小型水下機器人的電場通信系統, 該系統屬于多跳臨時性自治系統, 由一組兼具主機和路由功能的移動終端組成, 實現了仿生魚在3~5 m的雙向通信[8-9]. 若能形成由多個仿生魚體組成的智能集群, 協同工作, 則可有效彌補單機器人系統的不足. 文獻[10]根據實際情況, 使用CSMA/CA協議減少了共享信道上通信碰撞問題的發生, 同時提出了基于無線自組網按需平面距離向量路由協議AODV (Ad hoc on-demand distance vector routing)的電場通信路由協議, 實現了多節點的電場通信組網和消息的多跳轉發[10-11]. AODV是一種典型的反應式路由協議, 具有高響應時間的特點, 但不適用于大型、 高動態網絡, 且對鏈路變化也不敏感, 很難應對節點的失聯、 故障等意外情況[12-13]. 此外, 文獻[14]證明電場會隨著海水電導率增大而減小, 低電導率海水的電場幅度明顯高于高電導率海水, 所以在水下環境中, 電導率的變化對水下電場通信的距離和效果有一定影響.
本文以北京大學團隊研發的基于水下電場通信的仿生箱鲀魚為物理載體, 設計一種考慮實際水域電導率影響的仿生魚群自組網算法. 算法主要根據節點間的通信時間計算節點優先級, 確定節點角色, 形成集群協作網絡, 實現小規模仿生魚群的快速組網. 以目的坐標為導向的子節點和失散節點自主巡航功能的設定, 不但能實現群體失散節點的尋回, 還間接優化了網絡協作模型, 減少了節點間的路由維護信息, 有效節約了網絡能耗.
仿生魚群網絡中定義了6種節點角色: 臨時核心節點、 主核節點、 備份節點、 直連節點、 子節點和失散節點. 各節點功能如下.
1) 臨時核心節點: 用于主核節點和備份節點的選舉過渡.
2) 主核節點: 群體的主控制節點, 用于協調控制魚群.
3) 備份節點: 主核節點失效時, 作為新的群體控制節點.
4) 直連節點: 能與臨時核心節點建立直接通信, 輔助整合子節點.
5) 子節點: 僅能與直連節點通信.
6) 失散節點: 與群體網絡失聯的節點, 不在群體有效通信距離內.
仿生魚的內部系統通信功能分為初始化、 事件生成器、 報文分類處理、 PID(priority ID)更新器、 計時器、 輸入/輸出6個模塊和一個PID信息數據庫, 如圖1所示. 其中, TD(TCP data)報文定義為TCP報文解析出的數據字段, PID表示節點優先級. 為提高處理效率, 減輕系統負擔, 算法設計為單進程結構[15], 模塊間的交互方式為函數調用和數據傳輸. 系統各部分功能如下.

圖1 系統工作模型Fig.1 System working model
1) 初始化模塊: 初始化算法使用的全部數據結構; 通過事件生成器產生開始事件, 啟動報文分類處理模塊, 開始運行整個算法.
2) 事件生成器: 生成事件, 驅動算法正常執行; 通過接收輸入模塊發送的TD報文, 生成報文處理事件, 轉發給報文分類處理模塊處理; 產生報文發送事件, 將報文分類處理模塊需發送的TD報文通過輸出模塊發送出, 同時負責維護報文隊列的正常使用, 提供數據結構的函數接口.
3) 報文分類處理模塊: 從事件生成器模塊接收TD報文, 通過報文標識判斷類型, 針對不同類型的報文進行相應的處理, 處理過程中需要查看PID數據庫信息, 從而更新自身PID和PID數據庫, 將此過程產生的事件添加到事件生成器模塊.
4) PID更新器: 計算和更新自身PID和PID數據庫.
5) 計時器: 根據TD報文的發送時間字段, 計算兩節點往返通信一次所需時間, 輔助PID更新器計算PID.
6) 輸入/輸出模塊: 直接調用操作系統提供的TCP服務接口, 完成TCP建立的連接和釋放; 將相鄰節點送來的TCP報文解析成TD報文, 提交給事件生成器; 接收事件生成器發來的TD報文, 封裝成TCP報文, 發給相應的節點.
7) PID信息數據庫: 存放算法執行過程中產生的各種數據, 包括與自身通信的上級節點, 以及兩個相互獨立的直連節點信息表和子節點信息表, 表中含有ID和PID等信息.
算法運行分為兩個階段: 選舉階段通過計算節點優先級確定節點角色, 生成全網拓撲; 網絡維護階段基于自主巡航功能優化子節點, 并通過發送探索報文尋回失散節點. 算法主要流程如圖2所示.

圖2 算法流程Fig.2 Flow chart of algorithm
該階段包含選舉臨時核心節點、 整合子節點、 主備節點選舉3個子過程.
2.1.1 選舉臨時核心節點
步驟1) 所有節點廣播詢問報文M1, 發送時間字段為當前時間t1, 數據字段h1為0;

步驟4) 所有節點PID更新完畢;
步驟5) 每個節點廣播報文M2, 發送自身PID;
步驟6) 節點收到M2, 建立自身直連節點信息表并排序;
步驟7) 排在直連節點信息表第一位的節點, 發送臨時核心確認報文M3;
步驟8) 節點收到M3, 判斷是否同意; 若是, 則單播M3y, 同意建立臨時核心節點, 更新自身上級節點信息; 若否, 則單播M3n, 拒絕建立臨時核心節點.
臨時核心節點選舉時序如圖3所示.

圖3 臨時核心節點選舉時序Fig.3 Sequence of temporary core node election
PID包括兩部分: 通信總個數(Number_Sum)和平均通信時間(Time_Average), 更新計算過程為

(1)
Number_Sum=Number_Sum+1,
(2)
其中Time_Twopoints表示兩節點進行通信的時間. 通信總個數越多, PID越高; 通信總個數相同, 平均通信時間越短, PID越高.
2.1.2 整合子節點
步驟1) 臨時核心節點將自身直連節點信息表放進M4報文, 廣播發送;

步驟4) 直連節點收到M5a報文, 向子節點單播報文M5b;
步驟5) 子節點收到M5b, 更新自身上級節點信息, 協作拓撲建立完畢.
子節點整合時序如圖4所示.

圖4 子節點整合時序Fig.4 Sequence of sub node integration
2.1.3 主備節點選舉
步驟1) 將臨時核心節點作為主核節點;
步驟2) 主核廣播發送M6報文, 通知所有節點開始選舉備份節點, 主核進入備份選舉狀態: 可正常接收報文, 但不進行處理和回復, 只有收到M7報文才進行回復;
步驟3) 節點收到M6報文, 刪除直連節點信息表中關于主核的信息, 執行臨時核心選舉部分, 選出的臨時核心節點作為備份節點;
步驟4) 備份節點單播發送M7報文, 通知主核, 備份節點已經選舉完畢;
步驟5) 主核收到M7報文, 發送M8報文, 通知所有節點回歸主核控制狀態;
步驟6) 節點收到M8報文, 開啟主核節點控制狀態, 結束.
維護階段用于維護選舉階段建立的網絡拓撲: 主核節點負責協調魚群內部通信, 定時發送維護報文, 通過節點的反饋, 判斷節點運行情況, 更新網絡拓撲; 備份節點在主核正常情況下, 定時備份主核節點所有的數據, 一旦主核出現失聯、 故障問題, 立刻替代主核, 成為新的主核節點, 同時控制魚群再次選舉.
2.2.1 自主巡航功能
步驟1) 網絡協作拓撲形成后, 主核節點廣播封裝了目的坐標的報文M9;
步驟2) 直連節點收到報文M9后, 隨同主核節點按到目標坐標的最短路徑移動;
步驟3) 子節點收到報文M9后, 獨立于主核節點, 選擇到目標坐標的最短路徑自主移動;
步驟4) 主核節點在移動過程中, 定時廣播探索報文M10;
步驟5) 子節點未定時收到探索報文M10, 角色變為失散節點, 同樣自行向目的坐標移動.
2.2.2 群體拓撲優化與失散節點尋回
根據自主巡航功能, 在移動過程中, 如果子節點或失散節點直接從主核節點收到報文M10, 此時若符合直連節點特征, 則進行角色轉換, 加入網絡.
用計算機軟件對復雜的網絡行為進行仿真是一種行之有效的網絡分析方法[16], 本文利用MATLAB軟件對算法執行結果進行仿真模擬, 用NS-2軟件對仿生魚群間的通信情況進行仿真運算.
3.1.1 理想水域環境仿真
隨機模擬10條仿生魚下水的初始位置, 如圖5(A)所示, 由于目前水下電場的實際有效通信范圍是3~5 m, 因此本文將仿生魚的通信范圍設為3 m, 若超出該范圍將不能進行直接通信. 算法執行后, 每個節點將會確定自己的角色, 形成網絡拓撲, 其中紅色五角星表示主核節點, 紫色三角形表示備份節點, 綠色圓形表示直連節點, 藍色正方形表示子節點. 按本文算法運行程序后, 由主核節點控制的網絡拓撲如圖5(B)所示, 由備份節點控制的網絡拓撲如圖5(C)所示.
本文算法具有丟失節點尋回功能, 如圖5(D)所示, 將群體行進終點坐標設為(5,5), 主核節點控制所有節點向終點移動, 紅色虛線表示節點移動的軌跡(為圖像更簡潔清晰, 只標出主核節點和子節點的移動軌跡). 由圖5(D)可見, 經仿真計算后, 左上角的藍色子節點經過t時刻后與紅色主核節點之間的通信距離縮小為3 m, 達到了有效通信距離, 拓撲更新后, 變為綠色直連節點. 該機制有效減少了群體網絡節點間的路由維護報文, 進而節約網絡能耗. 該過程同樣適用于群體行進過程中由于水下環境的意外風險因素導致出現失散節點的有效尋回, 從而間接提高了網絡可靠性.
3.1.2 電導率因素影響下的實際水域環境仿真
海水的電導率隨海水溫度、 壓力和鹽度等因素的改變而變化, 電導率變化會對水下電場通信產生影響. 為客觀地展現本文算法在該因素影響下的有效性, 在圖5(A)中設定電導率的影響區域, 以此模擬實際環境中的干擾因素, 如圖5(E)所示, 其中將陰影部分的電導率設為其余空白部分的1.2倍, 電導率的影響將會反映在節點間通信時間的相對改變上. 將電導率影響前后的網絡拓撲圖5(B)和圖5(F)進行對比可見, 魚群的網絡拓撲發生了變化, 節點角色也發生了相應的改變. 表明在實際水域環境發生變化的情況下, 本文算法能保持相對穩定, 有一定的實用性.

圖5 MATLAB仿真拓撲Fig.5 MATLAB simulation topology
下面用NS-2軟件對本文算法的網絡性能指標進行分析. AODV是應用于無線隨意網絡中進行路由選擇的路由協議, 能實現單播和多播路由, 是Ad Hoc網絡中按需生成路由方式的典型協議. 實驗中通過測量AODV和本文算法在應用中的吞吐量、 分組投遞率和平均端到端時延3個指標衡量本文算法的網絡性能. 實驗中的所有指標均經過10次計算取平均值, 仿真參數列于表1.

表1 網絡仿真參數Table 1 Network simulation parameters
3.2.1 吞吐量
吞吐量定義為整個數據傳輸期間節點接收并轉發的數據包總數, 是協議有效性的度量[17]. 如圖6所示, 隨著節點數量的增加, 吞吐量逐步上升; 當節點增長到一定數量后, 吞吐量增長速度減緩. 由于本文算法初期需要選舉主備節點, 會增加額外的數據包, 但隨著網絡收斂, 吞吐量明顯降低. 與AODV相比, 當網絡節點數量約大于40時, 整體吞吐量更低.

圖6 吞吐量隨節點數量的變化曲線Fig.6 Change curves of throughput with number of nodes
3.2.2 分組投遞率
分組投遞率反應網絡支持的最大吞吐量, 表明路由協議的完整性、 正確性和適應網絡變化的能力, 是衡量協議效率的重要指標[17-18], 其計算公式為

(3)
其中Rni為節點i成功接收的報文數, Sni為節點i成功發送的報文數.
本文算法和AODV的分組投遞率比較如圖7所示. 由圖7可見: 初期網絡中節點數量較少, 通信數據不多, 分組投遞率接近1; 后期隨著節點的增加, 通信隊列逐漸達到上限, 分組投遞率下降; 隨著節點數量的增加, 本文算法的分組投遞率高于AODV.

圖7 兩種算法的分組投遞率比較Fig.7 Comparison of packet delivery ratios of two algorithms
3.2.3 平均端到端時延
平均端到端時延包含所有延時, 如發送緩沖器等待時間、 接口隊列排隊時間、 MAC層重傳時間[18], 其計算公式為

(4)
其中N為成功傳輸的數據報文總數, Rti為第i個報文的接收時間, Sti為第i個報文的發送時間.
本文算法和AODV的平均端到端時延如圖8所示. 網絡節點越多, 時延越大. 由于在選擇鏈路時本文算法和AODV都考慮了節點負載, 將節點負載作為影響因素納入節點穩定度的計算中, 因而在節點個數較少時, 能選擇到穩定且負載低的鏈路進行數據傳輸, 減少排隊時間, 降低端到端時延; 而當節點個數持續增加時, 可選路徑較多, 節點負載普遍降低, 節點負載對鏈路穩定的影響力下降, 平均端到端時延上升. 本文算法在通信前需要進行主備節點的選舉, 占用了信道, 增加了數據傳輸的時間. 節點數量較少時, 端到端時延要比AODV更大. 隨著節點增加, 本文算法通過主備節點調節, 能降低時延的增長速率.

圖8 兩種算法的平均端到端時延比較Fig.8 Comparison of average end-to-end delay of two algorithms
綜上所述, 本文設計了一種考慮實際水域電導率影響的水下電場通信的仿生魚群自組網算法. 該算法基于通信時間計算節點優先級, 能快速生成水下集群協作通信模型, 實現小規模仿生魚群組網. 自主巡航功能及核心備份機制的設定, 不但能實現群體失散節點的尋回功能, 而且間接優化了網絡協作模型, 減少了網絡節點間的路由維護信息, 有效節約網絡能耗的同時增強了系統的安全性.