(江蘇科技大學電子信息學院,江蘇鎮江 212000)
水下機器人種類很多,在不同研究領域應用廣泛,本文研究一種超小型水下機器人,屬于ROV(Remotely Oper?ated Vehicle,ROV)系統[1]。ROV 系統一般分為水上控制終端、臍帶纜和水下機器人本體[1]。臍帶纜負責給水下潛體供電并作為水上水下通信信道,包括視頻信號、數據及控制命令。目前設計的水下機器人具備水下探測和簡單作業能力,但是整體平臺設備繁瑣,通過岸上多根線纜連接,需要攜帶較重的控制箱,只能通過固定操作實現控制[2];文獻[3]實現一種基于串口通信的水下機器人平臺,分別通過RS232 接口和RS485 實現控制端、轉換器和水下本體之間的數據傳輸。雖然通信效果良好,但視頻與數據、控制信號采用不同線纜,增加了成本,視頻信號易受干擾;文獻[4]設計的小型水下機器人集成多種功能,通過遠程控制可完成基本的偵察和清障任務,通過簡化設計降低成本與功耗,但是控制平臺軟件不夠完善。本文設計的系統實現水下視頻信號、數據和控制命令一體化傳輸,利用陸上無線網絡傳輸技術的便捷性,設計一種更加靈活方便的水面控制系統,可由手機或電腦控制,適用于個人在水下拍攝與觀察。
本系統整體框架采用水下線纜、水上無線方式實現機器人本體與控制終端之間的通信與控制,主要由水下機器人本體、水面通信浮標、水上控制終端以及交互軟件組成,系統整體架構如圖1 所示。水下機器人本體通過接收經過水面通信浮標轉化后的控制命令完成水下運動,并將視頻信號和數據信號傳輸至通信浮標并顯示在終端設備上。通信浮標放置于水面,通過線纜與機器人本體連接,以無線方式與終端設備連接,負責本體與控制終端的協議轉換、信號處理與轉發。水上控制終端負責接收視頻與傳感器數據,并控制機器人運動和攝像頭拍攝。

Fig.1 System overall architecture圖1 系統總體架構
水下機器人本體通過100m 的輕型系繩與水面通信浮標連接建立通信,將系繩轉換為以太網電纜連接無線模塊,以便輕松連接到控制端,其中系繩線通過使用接口板和USB 電纜轉換為以太網電纜。纜繩在本體和控制端之間來回傳輸數據,包括測量數據和視頻以及操作命令。為實現視頻信號、數據和命令一體化傳輸系統,在水面平臺和機器人本體之間搭建一個局域網,將視頻信號、傳感器采集的數據、控制信號共用同一鏈路同時傳輸,減少系統線纜和視頻電路硬件。視頻信號經過水面通信浮標處理后傳輸至終端設備,處理數據信號時采用串口服務器將主控制器輸出轉化為以太網信號,然后通過通信浮標傳輸到終端設備,最后將控制命令處理后發送到串口服務器,轉換為串口信號傳輸到主控制器。終端設備與水下機器人本體IP 地址建立連接,即可與該設備建立通信,對水下潛體進行控制。通信系統結構如圖2 所示。

Fig.2 Communication system structure圖2 通信系統結構
機器人本體由主控模塊、傳感器模塊、電源模塊和機械動力模塊組成,其中控制模塊主要負責接收水下傳感器傳送的數據,直接控制水下機器人硬件(推進器、LED 燈、高清攝像頭、攝像頭微伺服、紅外遙感),是機器人控制中心,核心控制板包括Beagle Bone Black(以下簡稱BBB)開發板及Arduino Mega2560[5-6]。
Arduino 微控制器連接到BBB。BBB 是機器人系統大腦,使用Node.js 運行系統軟件,接收命令并轉發給水下機器人硬件。用戶從控制端發送BBB 命令,由Arduino 微控制器處理后執行。Arduino 微控制器負責將電機命令轉發到每個電機(速度/方向),并接收遙測數據供用戶在控制設備上查看。Arduino 微控制器具有較高的時間精度,能有效處理脈沖寬度調制(PWM)信號。除Arduino 微控制器外,還使用3 個電動速度控制器(ESC)控制水下機器人本體中的電機。電子穩定控制系統可改變電子馬達的速度和方向。通過使用ESC,用戶在操作機器人時不需要考慮每個電機的方向或精確轉速,只需發送一個命令信號即可。根據指令信號,Arduino 為每個電子穩定控制系統分配相應的電機操作和轉速。
其它硬件包括推進器、LED 燈、高清攝像頭、攝像頭微伺服、紅外遙感、IMU 姿態傳感器和電池。HitecHS-81 伺服系統控制攝像頭傾斜角度,使用無刷電機作為系統推進器,型號為Turnigy Aerodrive DST-700kv。
系統采用3 個推進器實現水下機器人上升、下降、前進、左移和右移運動[6]。水平方向布局兩個推進器,分別為左舷馬達和右舷馬達,垂直方向布局一個推進器。姿態傳感器型號為IMU:BNO055,壓力傳感器為MS5837,傳感器最大工作壓力為30 bar(435 psi,水深200m),擁有自動校準羅盤功能,適用于磁北優化的IMU 輸出[8],可以平滑顯示滾動和俯仰。通過I2C 提供水下機器人深度、導航航向、水溫和加速度計/陀螺儀遙測,在終端設備界面顯示。
用于操控和監測水下機器人的水面通信浮標硬件結構較為簡單,主要由頂部通信盒、無線路由器、顯示和操作的終端設備組成。頂部通信盒組件包含電源管理模塊和以太網通信模塊,主要負責將鋰電池輸出電壓分別轉換為12V、5V 和3.3V,為水下潛體各種設備器件進行供電,并提供以太網RJ-45 接口與無線路由器進行通信。無線路由器通過AP 模式將終端設備接入局域網,把有線網絡轉換為無線網絡,使用DHCP 與水下機器人以太網連接。水下本體DHCP 服務器分發IP 地址并充當DNS 服務器,從而正確解析終端設備上輸入的IP 地址,以便操作人員方便地控制水下機器人和觀察水下情況。水上控制終端包括用于控制機器人運動的手柄,以及用于顯示控制界面的手機或PC,對手柄按鍵進行編碼控制。水下本體發送到通信浮標的傳感器數據和視頻信號通過手機或PC 的無線串口接收并顯示。
系統硬件核心主要是BBB 及以Arduino Mega2560 為核心的主控板,這兩個硬件核心編程語言并不相同,其中Beagle Bone Black 整體使用Node.js 開發[7],而Arduino Mega2560 主要開發語言為C 或C++。
為了讓BBB 請求Arduino 執行命令,必須在客戶端、BBB 和Arduino 微控制器之間建立事件驅動編程。通俗地說,事件驅動程序是為響應用戶或系統生成的操作而編寫的程序[8],這些動作包括點擊鼠標、按鍵或移動操縱桿。本系統客戶端、BBB 和Arduino 微控制器都以不同語言運行,圖3 為系統客戶端、BBB 和Arduino 微控制器之間的簡單信號流。每個事件循環包含多個代碼文件,用于定義用戶觸發的函數和任務,執行某些代碼文件,如按鍵含義、電機狀態、馬達輸出功率等。

Fig.3 Workflow system software圖3 系統軟件工作流程
在控制信號與數據信號通信協議設計中,主控板與整個局域網之間采用串行服務器通信,采用串行通信協議方式實現。在水下機器人通信系統中數據是逐幀發送的,其中每一幀數據包含一個字節。為解決發送數據有多個字節情況,在發送前用指針存放實際值,把數據信號分為若干字節再打包發送,接收時再還原。在單片機程序中,主控板與終端設備通信協議相同,以減少信號處理的復雜度。后臺主程序是一個重復過程,從數據和控制信號的處理然后驅動機器人運動,再將數據打包發送給水上控制端,前臺串口利用自動中斷接收命令,程序結構如圖4 所示。

Fig.4 Control signal program structure圖4 控制信號程序結構
通信系統程序主要由水控平臺上運行的客戶端程序和服務器端運行的服務器程序兩部分組成。客戶端與服務端程序之間的傳輸協議為TCP/IP,建立連接之后,通過UDP 維持長時間通信[9]。程序流程如下:客戶端認證成功后,持續獲取水下機器人通信模塊的IP 地址,確保每一次IP 變化都能檢測到,然后定時打包發送。等到服務器收到后確認并返回消息,接著更新域名映射關系,如果失敗則重復這個流程。服務器會持續檢測發送過來的數據包并負責不斷更新,保證收發雙端的IP 地址與域名相對應,如圖5 所示。

Fig.5 The client and server workflow圖5 客戶端與服務器工作流程
水下機器人傳感器數據采集模塊非常重要,該模塊可獲取水下環境的各種參數(包括溫度、深度、機器人俯仰角和偏航角等),這些數據是水下勘探必須獲取的基本數據。數據采集模塊分為慣性測量單元模塊和深度數據采集模塊,以I2C 串行總線開發,使用函數及流程如下:Wire.begin(adderss)初始化地址,請求數據發送,使用wire.read()讀取發送的數據。調用Transmission()建立雙方連接,執行程序后調用write()發送數據至MCU,寫入數據后進一步計算處理,最終得到傳感器測得的具體數值。
水面控制平臺軟件設計包括操作水下機器人的人機交互界面和控制系統,是控制水下機器人的核心,并且基于最新的Web 標準與微控制器配合使用,為系統提供遠程機器人控制。工作時可以很快連接到移動設備、平板電腦和PC 上,無需安裝,在瀏覽器中可錄制和觀看視頻以及遙測數據,可更改電機配置,增加游戲手柄、鍵盤和操縱桿控制選項,可添加插件,配置陀螺儀/加速度計以保證水下運動的穩定性。
基于上述網絡協議,使用Socket 編程完成水面控制平臺程序設計。Socket 是應用層與TCP/IP 協議族通信的中間軟件抽象層,是一組接口[10],應用流程如圖6 所示。水面平臺首先建立并初始化Socket()函數,設置為非阻塞,在后臺持續監聽整個網絡。收到水下機器人本體connect()請求后,水面平臺調用accept()函數接收請求,雙方建立連接。機器水下本體控制器執行客戶端指令,隨后發送數據,水面控制端采集客戶端數據進行后續處理。

Fig.6 Water platform control program flow圖6 水面平臺控制程序流程
首先測試各個模塊硬件的性能和工作情況,包括推進器、電子速度控制器(ESCS)、LED、紅外激光以及網絡攝像頭云臺。此外,測試和調試外殼框架、電子艙、無線模塊等硬件結構,確保外殼耐水性和整體機械結構合理性[11-14]。確保水面的無線模塊穩定性,數據和電源傳輸線纜連通且互不干擾。完成硬件平臺搭建后,對上述模塊工作情況進行調試。水下機器人各項指標如表1 所示。

Table 1 Robot the attributes and indicators表1 機器人各項屬性與指標
接著測試通信系統,連接電腦,分別進行串口通信測試以及網絡調試,完成后訪問水下機器人地址。圖7、圖8為調試界面,圖9、圖10 為測試結果和實物圖。水下機器人控制界面包含指示燈、電池剩余電量、系統延時、LED 燈亮度、鐳射燈開關、定深狀態、艏向以及攝像頭畫面等功能。通過手機和PC 在陸上環境中測試,對水下機器人進行控制。通過持續觀察視頻畫面,發現視頻能流暢持續顯示,并且延遲穩定在140ms,切換拍攝角度未出現卡頓現象。

Fig.7 A serial port debug interface圖7 串口調試界面

Fig.8 Network debug interface圖8 網絡調試界面

Fig.9 Control interface圖9 控制界面
最后在水池中進行實驗,將水下本體放入水中進行運動姿態測試及系統數據傳輸測試,水下本體由上位機通過水面通信模塊控制。根據操作者離通信模塊的遙控距離測試系統丟包率等性能,數據如表2 所示。與文獻[15]水下機器人無線遙控數據收發性能相比,在遙控距離同為20m 的情況下,丟包率從5% 提升到3.7%。

Fig.10 Robot ontology圖10 機器人本體

Table 2 The wireless remote control test results表2 無線遙控測試結果
本文設計了一套便攜式超小型水下機器人平臺,通過實驗測試驗證了該系統性能。通過在機器人本體中嵌入一個B/S 架構的Web 服務器,基于TCP 協議進行Socket編程完成數據傳輸,使用數據和控制命令一體化傳輸和無線網絡傳輸方法實現水下機器人通信與控制。研究表明,在硬件結構簡單的情況下,建立局域網能有效實現水下機器人通信。與其它平臺相比,本設計具有體積小、成本低、便于攜帶、易于操作等特點,適于不同操作系統的終端設備,無需使用體積較大的控制箱。但本系統在軟件優化方面還存在不足,后續需要豐富系統功能,增加更多傳感器,在軟件上實現自主控制,提升系統智能化,使水下機器人遠距離工作時狀態更加穩定。