王 昊 林遠(yuǎn)山 李 然 于 紅 王 芳
(1.大連海洋大學(xué)信息工程學(xué)院 大連 116023)(2.遼寧省海洋信息技術(shù)重點(diǎn)實驗室 大連 116023)(3.設(shè)施漁業(yè)教育部重點(diǎn)實驗室(大連海洋大學(xué)) 大連 116023)
我國是海洋大國,海洋漁業(yè)是我國糧食安全保障體系的重要組成部分。多年來,我國以海水養(yǎng)殖為重點(diǎn)的海洋漁業(yè)迅猛發(fā)展,網(wǎng)箱養(yǎng)殖是我國海洋漁業(yè)生產(chǎn)重要組成部分[1]。隨著水產(chǎn)養(yǎng)殖行業(yè)向集約化、自動化、信息化、智能化的方向發(fā)展,水下機(jī)器人作為重要的漁業(yè)設(shè)施裝備,因其靈活性在其中也發(fā)揮越來越重要的作用[2~7]。
網(wǎng)箱定期巡檢是網(wǎng)箱養(yǎng)殖過程中的必要環(huán)節(jié)。隨著網(wǎng)箱養(yǎng)殖規(guī)模的擴(kuò)大、網(wǎng)箱離岸距離的增加,傳統(tǒng)人工網(wǎng)箱巡檢的難度亦隨之增加,對網(wǎng)箱巡檢提出了新的要求,其中利用機(jī)器人實現(xiàn)網(wǎng)箱的自主巡檢是未來的重要發(fā)展趨勢之一,其研究具有重要的現(xiàn)實意義和價值。
水下機(jī)器人巡檢方法種類繁多[8~13],其中基于強(qiáng)化學(xué)習(xí)的巡檢方法近年來受到廣泛關(guān)注[14~19]。強(qiáng)化學(xué)習(xí)方法與環(huán)境交互,并利用交互得到的數(shù)據(jù)進(jìn)行模型學(xué)習(xí)。相較于其它巡檢方法,強(qiáng)化學(xué)習(xí)方法在水下機(jī)器人應(yīng)用中的優(yōu)勢在于:無需預(yù)先準(zhǔn)備標(biāo)注數(shù)據(jù),無需事先了解水下機(jī)器人動力學(xué)知識,可對全部或部分非線性動力模型進(jìn)行學(xué)習(xí)。因此,對諸如水下環(huán)境這樣未知、復(fù)雜環(huán)境中的自主巡檢問題,強(qiáng)化學(xué)習(xí)方法尤其適用[20~22]。
相較于地面和空中機(jī)器人,水下機(jī)器人的仿真平臺數(shù)量較少,更無針對養(yǎng)殖場景的專門仿真。目前,針對水產(chǎn)養(yǎng)殖機(jī)器人的研究多是采用真實機(jī)器人在真實水下環(huán)境進(jìn)行[23~25]。然而在真實水下環(huán)境中開展強(qiáng)化學(xué)習(xí)算法訓(xùn)練、測試和評估存在以下問題:
一是在強(qiáng)化學(xué)習(xí)訓(xùn)練中,需要通過大量隨機(jī)探索來采樣數(shù)據(jù),在真實水下環(huán)境下進(jìn)行實驗成本高、效率低、危險性大。真實機(jī)器人本體成本相對較高;真實環(huán)境搭建成本巨大;離岸真實場景實驗需要母船支持,成本高;實驗過程機(jī)器人易受碰撞損壞和丟失;同時實驗的開展還受到地點(diǎn)、氣溫、季節(jié)等因素的制約;數(shù)據(jù)采樣效率低、質(zhì)量低下。
二是缺乏一個通用的水下標(biāo)準(zhǔn)環(huán)境公平橫向地對比不同的強(qiáng)化學(xué)習(xí)算法。在真實水下環(huán)境中,機(jī)器人本體、環(huán)境、任務(wù)不同,狀態(tài)定義、回報函數(shù)定義、動作定義皆有區(qū)別,難以公平地橫向?qū)Ρ榷鄠€算法之間的性能。
三是缺乏一個統(tǒng)一的簡化環(huán)境規(guī)則。水下環(huán)境復(fù)雜,涉及因素眾多,受風(fēng)、浪、水壓等復(fù)雜因素的嚴(yán)重干擾??坍嬤^細(xì)則模型訓(xùn)練難度大大提升,不利于模型的大規(guī)模應(yīng)用。如何對實際水下環(huán)境、AUV 及其之間的交互關(guān)系進(jìn)行抽象和簡化,需對具體業(yè)務(wù)和強(qiáng)化學(xué)習(xí)算法有較為深刻的理解和研究。
為此,本文基于UUV Simulator[26]、ROS[27]、和OpenAI Gym[28],搭建了一個面向養(yǎng)殖網(wǎng)箱巡檢任務(wù)的強(qiáng)化學(xué)習(xí)訓(xùn)練系統(tǒng)。首先在UUV Simulator 中實現(xiàn)了養(yǎng)殖網(wǎng)箱巡檢場景的仿真。該場景中包含網(wǎng)箱、巡檢機(jī)器人、各類傳感器、水體環(huán)境,以及部分水體動力,如浮力、海流等。然后基于ROS 和OpenAI Gym 對仿真環(huán)境進(jìn)行封裝,標(biāo)準(zhǔn)化了強(qiáng)化學(xué)習(xí)算法與網(wǎng)箱巡檢仿真環(huán)境的交互。依據(jù)傳感器類別、網(wǎng)箱數(shù)量等的不同,預(yù)設(shè)了五種網(wǎng)箱養(yǎng)殖Gym環(huán)境,適用于不同強(qiáng)化學(xué)習(xí)算法的開發(fā)。用戶也可在該系統(tǒng)中自定義、擴(kuò)展環(huán)境。該系統(tǒng)可用于強(qiáng)化學(xué)習(xí)訓(xùn)練與性能評估,也可用于控制算法測試。最后,利用近端策略優(yōu)化強(qiáng)化學(xué)習(xí)算法算法(Proximal Policy Optimization,PPO)[29]對系統(tǒng)進(jìn)行測試。測試結(jié)果驗證了系統(tǒng)的有效性、可用性和方便性。
仿真系統(tǒng)由UUV Simulator、ROS、OpenAI Gym三部分構(gòu)成,系統(tǒng)結(jié)構(gòu)如圖1 所示。UUV Simulator是一個水下環(huán)境仿真平臺,該平臺通過一套插件來模擬水下力學(xué)效應(yīng)、致動器、傳感器和外部干擾,且能夠靈活地模塊化配置新的水下場景和機(jī)器人。同時該仿真器提供了和ROS 的集成接口。OpenAI Gym是一個用于強(qiáng)化學(xué)習(xí)算法訓(xùn)練、測試和比較的工具包,它不依賴強(qiáng)化學(xué)習(xí)算法結(jié)構(gòu)。其一方面內(nèi)置了一批已定義好的經(jīng)典環(huán)境集合,可供強(qiáng)化學(xué)習(xí)算法直接使用;另一方面它還提供了一套標(biāo)準(zhǔn)化環(huán)境定義接口,使用戶可自定義、封裝環(huán)境。OpenAI Gym使強(qiáng)化學(xué)習(xí)算法與環(huán)境的交互得以標(biāo)準(zhǔn)化,使用戶專注算法本身,提升了算法的開發(fā)效率。ROS是運(yùn)行在Linux 上的次級操作系統(tǒng),是用來開發(fā)機(jī)器人的中間件。它制定了機(jī)器人開發(fā)的統(tǒng)一接口標(biāo)準(zhǔn),提供了操作系統(tǒng)應(yīng)用的各種服務(wù),如:硬件抽象、底層設(shè)備控制、常用函數(shù)實現(xiàn)、進(jìn)程間消息傳遞、軟件包管理等。目前在機(jī)器人領(lǐng)域,ROS 是最廣泛接受的機(jī)器人開發(fā)平臺。
圖1 系統(tǒng)架構(gòu)
整個系統(tǒng)架構(gòu)包含四大部分:網(wǎng)箱養(yǎng)殖巡檢場景仿真、通信機(jī)制、智能體與環(huán)境交互和可視化界面。各部分描述如下:
1)網(wǎng)箱養(yǎng)殖巡檢場景仿真。該部分包含兩部分,一是對機(jī)器人工作環(huán)境,即網(wǎng)箱養(yǎng)殖場景的仿真,一是對執(zhí)行巡檢任務(wù)的機(jī)器人的仿真。該部分在UUV Simulator中實現(xiàn)。
(1)網(wǎng)箱養(yǎng)殖場景仿真:該部分實現(xiàn)對網(wǎng)箱養(yǎng)殖場景的仿真,即模擬巡檢機(jī)器人的工作環(huán)境。網(wǎng)箱養(yǎng)殖場景實現(xiàn)了對海洋環(huán)境的仿真、網(wǎng)箱本體的仿真和水體動力學(xué)的仿真。巡檢機(jī)器人通過搭載的傳感器感知該場景中的環(huán)境數(shù)據(jù),進(jìn)而根據(jù)數(shù)據(jù)執(zhí)行相應(yīng)的動作。
(2)巡檢機(jī)器人仿真:該部分實現(xiàn)對機(jī)器人本體,即機(jī)器人機(jī)械結(jié)構(gòu)、外觀的仿真;對傳感器,例如攝像頭、慣性測量單元、聲吶等的仿真;對推進(jìn)器的仿真,可實現(xiàn)前進(jìn)、后退、上浮、下沉、懸停、任意角度轉(zhuǎn)向等動作的模擬。
2)ROS Topics通信:系統(tǒng)中各個部分與仿真環(huán)境之間的通信,本文利用ROS的話題通信機(jī)制實現(xiàn)。
3)智能體與環(huán)境交互:該部分包含強(qiáng)化學(xué)習(xí)算法,及其訓(xùn)練環(huán)境。其中,訓(xùn)練環(huán)境即對網(wǎng)箱養(yǎng)殖場景仿真封裝得到。封裝基于OpenAI Gym 提供的標(biāo)準(zhǔn)接口和框架實現(xiàn),包括對感知狀態(tài)、機(jī)器人動作、獎勵函數(shù)等的定義。
4)可視化界面:該部分包含數(shù)據(jù)信息可視化和系統(tǒng)設(shè)置兩個部分。數(shù)據(jù)信息可視化部分實現(xiàn)了對機(jī)器人搭載的傳感器獲取的信息的可視化,以及機(jī)器人本身狀態(tài)信息的可視化,包括線速度、角速度、姿態(tài)和運(yùn)動軌跡等。系統(tǒng)設(shè)置部分實現(xiàn)ROS話題的訂閱、日志路徑設(shè)置等,方便開發(fā)人員對感知信息、對訓(xùn)練過程進(jìn)行觀察和評估。
網(wǎng)箱養(yǎng)殖場景在UUV Simulator 中構(gòu)建。該場景包含三部分:海洋環(huán)境的仿真、養(yǎng)殖網(wǎng)箱的仿真和水體物理特性仿真。
海洋環(huán)境的仿真,采用名為海洋盒(ocean_box)的世界模型實現(xiàn),它包含海床、水體和海面三個實體模型。每個實體模型以模型目錄形式存在。該目錄中SDF(Simulator Description File,SDF)文件定義實體的視覺屬性、慣性屬性等。
3.1.1 海床仿真
海床仿真的具體做法是:首先通過3D 建模軟件構(gòu)建具有高低起伏的海床網(wǎng)格模型,然后在海床SDF 文件中對visual 標(biāo)簽下的material 參數(shù)進(jìn)行配置,實現(xiàn)對海床網(wǎng)格模型的貼圖,例如對其貼沙石圖片,以獲得海床的逼真視覺效果。
3.1.2 海面仿真
與海床仿真相同,海面仿真首先通過3D 建模軟件構(gòu)建海面表面網(wǎng)格模型,然后在海面SDF文件中對visual標(biāo)簽下的material參數(shù)進(jìn)行配置,實現(xiàn)對海面網(wǎng)格模型的貼圖,例如海浪紋理圖形貼圖,以獲得逼真的海浪視覺效果。
3.1.3 水體仿真
水體具有一定的體積,浮力,水流流速和方向,此外由于海水中光衰現(xiàn)象,水體還具有霧化效果。水體體積范圍由海面、海底和四條垂直線所構(gòu)成的六面體所界定,通過在水體SDF 文件中對visual 標(biāo)簽下的pose 參數(shù)進(jìn)行配置實現(xiàn)。霧化效果通過對world 文件中對scene 標(biāo)簽下fog 參數(shù)進(jìn)行配置實現(xiàn)。水的密度、水流速度和方向通過對world 文件中相應(yīng)參數(shù)進(jìn)行配置實現(xiàn)仿真。
養(yǎng)殖所使用的網(wǎng)箱形狀各異,較為常用的是圓柱形重力式網(wǎng)箱[30]?;诖?,本文仿真實現(xiàn)了圓形重力式網(wǎng)箱。與海床、水體和海面實體模型相同,網(wǎng)箱實體作為一個獨(dú)立實體模塊存在。由3D建模軟件構(gòu)建圓柱形重力式網(wǎng)箱網(wǎng)格模型,通過對SDF文件進(jìn)行參數(shù)配置實現(xiàn)網(wǎng)箱大小、位置、數(shù)量的設(shè)置。
海流生成以及作用到海底實體的過程為:由3.1.3 節(jié)中水體仿真可知,首先在world 文件中設(shè)置密度、水流速度和方向等數(shù)據(jù);然后海流插件讀取設(shè)置的數(shù)據(jù),并通過相應(yīng)的ROS話題發(fā)布數(shù)據(jù)。受海流作用的水下實體,例如機(jī)器人等在它的SDF文件中添加一個名為水下物體的插件,并訂閱相應(yīng)的ROS話題接受海流相關(guān)數(shù)據(jù),接受海流的作用。如圖2所示。
圖2 海流插件實現(xiàn)
巡檢機(jī)器人仿真可分為本體、感知器和執(zhí)行器三個部分的仿真。
本體仿真實現(xiàn)對機(jī)器人外觀、結(jié)構(gòu)、靜力學(xué)和動力學(xué)的仿真。機(jī)器人感知模塊本質(zhì)是一個傳感器系統(tǒng),其仿真包括各類傳感器參數(shù)、布局等,以及實現(xiàn)傳感器感知能力,即獲取機(jī)器人自身狀態(tài)信息和環(huán)境信息的仿真。執(zhí)行模塊的仿真,包括執(zhí)行機(jī)構(gòu)的參數(shù)、布局等仿真,以及實現(xiàn)接收控制指令,并通過驅(qū)動器等動力元件使機(jī)器人執(zhí)行動作的仿真。
三個部分的仿真皆通過編寫機(jī)器人描述文件(Unified Robot Description Format,URDF)來實現(xiàn)。
UUV Simulator 中提供了以SF 30k 為原型的RexROV2,ECA A9 AUV 和LAUV 等幾種水下機(jī)器人模型。本文選擇實驗室已有的開源水下機(jī)器人BlueROV2 為原型進(jìn)行仿真。BlueROV2 性價比較高,是目前最受歡迎的開源水下機(jī)器人之一。
BlueROV2 長45.7cm,寬33.8cm,高25.4cm,最大額定深度為100m,擁有6 個推進(jìn)器,其中包括四個水平推進(jìn)器和兩個垂直推進(jìn)器,可實現(xiàn)5 自由度(DoF)的控制。
機(jī)器人本體的仿真主要包含視覺模型、碰撞模型、結(jié)構(gòu)、靜力學(xué)和動力學(xué)。模擬器渲染引擎使用的視覺幾何模型為COLLADA 格式,碰撞模型為STL 格式,通常碰撞模型相較于視覺模型更加精簡,以此提高碰撞計算的速度。在base.xacro 文件中配置了機(jī)器人的靜力學(xué)參數(shù),如質(zhì)量、重心、慣量,以及視覺幾何模型和碰撞幾何模型。gazebo.xacro 中配置了機(jī)器人水動力學(xué)模型,如機(jī)器人的尺寸、浮心和福森運(yùn)動方程。在虛擬環(huán)境中仿真的BlueROV2如圖3所示。
圖3 BlueROV2仿真
巡檢機(jī)器人實現(xiàn)自主控制需搭載傳感設(shè)備以獲取其工作環(huán)境信息和其自身狀態(tài)信息。工作環(huán)境信息,如環(huán)境的視覺信息、距離信息等;機(jī)器人自身狀態(tài)信息,如機(jī)器人位姿信息、加速度信息、位移信息等;UUV Simulator 提供了多種虛擬傳感器供選擇和配置,包括攝像頭(含廣角攝像頭)、慣性測量單元、側(cè)掃聲納、多普勒計程儀、壓力計、虛擬里程計等。這些虛擬傳感器皆可通過插件實現(xiàn)。具體實現(xiàn)是在機(jī)器人描述文件sensors.xacro中加載配置各種傳感器插件和位置參數(shù),實現(xiàn)對傳感器的仿真。
每個傳感器的功能被封裝為一個ROS節(jié)點(diǎn),被稱之為ROS 傳感器節(jié)點(diǎn)。ROS 傳感器節(jié)點(diǎn)將原始感知數(shù)據(jù)發(fā)布到指定ROS 話題上,強(qiáng)化學(xué)習(xí)算法、可視化界面等通過訂閱指定ROS 話題獲取傳感器數(shù)據(jù)。
某些情況下,需要對原始感知數(shù)據(jù)進(jìn)行一定預(yù)處理,這時可新建ROS 節(jié)點(diǎn)以擴(kuò)展功能,我們稱之為擴(kuò)展節(jié)點(diǎn)。該節(jié)點(diǎn)訂閱原始感知數(shù)據(jù)信息,完成預(yù)處理后再封裝、發(fā)布處理后的數(shù)據(jù)。例如,在基于視覺的巡檢任務(wù)中,可創(chuàng)建一個新的節(jié)點(diǎn),用于對攝像頭所獲取的圖像信息進(jìn)行二值化、邊緣檢測等操作,然后將處理后提取的信息采用自定義消息類型重新封裝并發(fā)布到自定義的話題上,供強(qiáng)化學(xué)習(xí)算法、可視化界面等訂閱獲取。擴(kuò)展節(jié)點(diǎn)、傳感器與強(qiáng)化學(xué)習(xí)算法、可視化界面的交互如圖4 所示。
圖4 感知模塊流程圖
運(yùn)動控制是機(jī)器人巡檢的關(guān)鍵。機(jī)器人接收控制指令,根據(jù)控制指令部署推進(jìn)器執(zhí)行相應(yīng)的動作。在此系統(tǒng)中執(zhí)行模塊包含控制器、推進(jìn)器管理器和六個推進(jìn)器單元。具體實現(xiàn)方式是,在snip?pets.xacro 和actuators.xacro 中配置幾何模型文件、推進(jìn)器參數(shù)和位置。為生成推進(jìn)器驅(qū)動機(jī)器人的控制力,需要計算推進(jìn)器分配矩陣以將控制器輸出的總控制力轉(zhuǎn)化為對每個推進(jìn)器的指令,這是由推進(jìn)器管理器完成的。在.yaml 文件中配置推進(jìn)器模型和話題,推進(jìn)器管理器生成機(jī)器人機(jī)身框架和推進(jìn)器框架之間的轉(zhuǎn)換矩陣,即TAM(thruster alloca?tion matrix)文件,另外推進(jìn)器管理器還根據(jù)TAM和配置參數(shù)生成指定數(shù)量的推進(jìn)器模型和對應(yīng)話題??刂破鲃t是由相應(yīng)的控制算法實現(xiàn)的控制器節(jié)點(diǎn)。
共存在三種可利用的運(yùn)動控制方式:基于速度的運(yùn)動控制、基于推力的運(yùn)動控制和基于轉(zhuǎn)速的運(yùn)動控制。在基于速度的運(yùn)動控制方式中,速度控制器被封裝成ROS節(jié)點(diǎn),稱之為速度控制器節(jié)點(diǎn)。強(qiáng)化學(xué)習(xí)算法通過指定話題發(fā)布目標(biāo)速度信息,速度控制器節(jié)點(diǎn)訂閱該話題獲取目標(biāo)速度信息。在速度控制器節(jié)點(diǎn)內(nèi),目標(biāo)速度首先被轉(zhuǎn)換為總目標(biāo)推力,然后根據(jù)分配矩陣將總目標(biāo)推力分配給每個推進(jìn)器,即每個推進(jìn)器獲取推力,最后每個推進(jìn)器推力轉(zhuǎn)換為轉(zhuǎn)速,從而實現(xiàn)對機(jī)器人的運(yùn)動控制,如圖5所示。
圖5 基于速度控制方式中信息傳遞示意圖
在基于推力的運(yùn)動控制方式中,推動器管理器被封裝成ROS節(jié)點(diǎn),稱之為推進(jìn)器管理器節(jié)點(diǎn)。強(qiáng)化學(xué)習(xí)算法通過指定話題發(fā)布總目標(biāo)推力信息,推進(jìn)器管理器節(jié)點(diǎn)訂閱該話題獲取總目標(biāo)推力信息。在推進(jìn)器管理器節(jié)點(diǎn)內(nèi),根據(jù)分配矩陣將總目標(biāo)推力分配給每個推進(jìn)器,即每個推進(jìn)器的推力,最后每個推進(jìn)器推力轉(zhuǎn)換為轉(zhuǎn)速,從而實現(xiàn)對機(jī)器人的運(yùn)動控制,如圖6所示。
圖6 基于推力控制方式中的信息傳遞示意圖
在基于轉(zhuǎn)速的運(yùn)動控制方式中,推進(jìn)器被封裝成ROS節(jié)點(diǎn),稱之為推進(jìn)器節(jié)點(diǎn)??刂浦噶顬閷γ總€推進(jìn)器單元的單獨(dú)推力,強(qiáng)化學(xué)習(xí)算法通過指定的話題發(fā)布所有推進(jìn)器的推力信息,推進(jìn)器模型訂閱該話題獲取對應(yīng)推進(jìn)器的推力信息,從而實現(xiàn)對機(jī)器人的運(yùn)動控制。如圖7所示。
圖7 基于轉(zhuǎn)速控制方式中的信息傳遞示意圖
系統(tǒng)基于OpenAI Gym 提供的標(biāo)準(zhǔn)化環(huán)境接口,將網(wǎng)箱養(yǎng)殖仿真場景封裝成一套自定義的環(huán)境集合,用于面向網(wǎng)箱巡檢任務(wù)的強(qiáng)化學(xué)習(xí)算法的開發(fā)。
環(huán)境接口的實現(xiàn)基于網(wǎng)箱養(yǎng)殖仿真系統(tǒng)中機(jī)器人的感知模塊和執(zhí)行模塊,利用ROS的話題通信機(jī)制實現(xiàn)機(jī)器人感知狀態(tài)信息的獲取,以及機(jī)器人動作的執(zhí)行。封裝的環(huán)境作為中間件充當(dāng)代理的角色在算法和仿真機(jī)器人之間傳遞動作和觀測,如圖8所示。
圖8 強(qiáng)化學(xué)習(xí)與巡檢機(jī)器人的交互
為降低Gym版本變化對本文仿真環(huán)境的影響,本文將Gym作為工具庫,充分利用其所提供的功能和接口,但不依賴Gym 所提供的特定文件結(jié)構(gòu)格式。具體地,通過以下三個核心方法來擴(kuò)展本文環(huán)境接口。強(qiáng)化學(xué)習(xí)算法在訓(xùn)練過程中調(diào)用這些核心方法以實現(xiàn)與環(huán)境的交互,核心方法如下:
init():構(gòu)造方法,用于初始化環(huán)境。包含對當(dāng)前環(huán)境的參數(shù)設(shè)置,如狀態(tài)空間表示、動作空間表示、訂閱節(jié)點(diǎn)、訂閱服務(wù)、啟動仿真環(huán)境以及相關(guān)的ROS節(jié)點(diǎn)。
step():執(zhí)行一個動作,動作執(zhí)行后返回狀態(tài)觀測、即時獎勵、是否重置環(huán)境的標(biāo)志和用于調(diào)試的診斷信息。該方法中的action 參數(shù)為強(qiáng)化學(xué)習(xí)算法通過采樣得到的動作。
reset():該方法用于將水下機(jī)器人重置到初始位置。
由于不同環(huán)境共享大量代碼,本文在環(huán)境包內(nèi)提供了一批工具API,以提高代碼復(fù)用率,實現(xiàn)低耦合、模塊化。這些工具API 可劃分為以下四大類:
1)環(huán)境創(chuàng)建API:該類API 主要用于創(chuàng)建env,包含一系列與env創(chuàng)建有關(guān)的方法。
2)仿真器連接API:該類API 用于env 與仿真器的連接,實現(xiàn)訓(xùn)練過程中所必需的開始、暫停和重置模擬的功能。
3)env 父類API:該API 作為所有env 的通用父類。父類中包含了所有env 公有方法,如init()、step()、reset()等方法。
4)獎勵函數(shù)API:該類API用于解析獎勵函數(shù),用戶根據(jù)具體情況設(shè)計獎勵函數(shù)并寫入指定配置文件,獎勵函數(shù)API讀取解析獎勵配置并生成獎勵函數(shù)。
根據(jù)傳感器、網(wǎng)箱數(shù)量等的不同,本文共自定義創(chuàng)建了以下五種網(wǎng)箱巡檢環(huán)境,供強(qiáng)化學(xué)習(xí)算法訓(xùn)練、測試和對比。
1)UUVCircleCAM-v0
該環(huán)境中網(wǎng)箱底部帶有一個環(huán)形軌道,機(jī)器人搭載兩個攝像頭,分別位于機(jī)器人側(cè)面和底部,可獲取軌道圖像和網(wǎng)箱圖像,如圖9所示。
圖9 UUVCircleCAM-v0環(huán)境
狀態(tài):攝像頭所獲取的實時軌道圖像。
動作:動作類型或為速度,或為推力,或為轉(zhuǎn)速,分別對應(yīng)速度、推力、轉(zhuǎn)速三種控制方式。動作類型通過參數(shù)設(shè)置。
2)UUVSonar-v0
該環(huán)境包含一個網(wǎng)箱,機(jī)器人搭載一個側(cè)掃聲吶,如圖10所示。
圖10 UUVSonar-v0環(huán)境
狀態(tài):狀態(tài)為測掃聲納數(shù)據(jù)。
動作:動作類型或為速度,或為推力,或為轉(zhuǎn)速,分別對應(yīng)速度、推力、轉(zhuǎn)速三種控制方式。動作類型通過參數(shù)設(shè)置。
3)UUVSonarIMU-v0
該環(huán)境中包含一個網(wǎng)箱,機(jī)器人搭載了一個測掃聲吶和一個IMU。
狀態(tài):狀態(tài)為測掃聲納數(shù)據(jù)和IMU測量數(shù)據(jù)。
動作:動作類型或為速度,或為推力,或為轉(zhuǎn)速,分別對應(yīng)速度、推力、轉(zhuǎn)速三種控制方式。動作類型通過參數(shù)設(shè)置。
4)UUVDVLIMU-v0
該環(huán)境中包含一個網(wǎng)箱,機(jī)器人搭載了一個多普勒測速儀(Doppler Velocity Log,DVL)和一個IMU的機(jī)器人,如圖11所示。
圖11 UUVDVLIMU-v0環(huán)境
狀態(tài):狀態(tài)為DVL和IMU測量數(shù)據(jù)。
動作:動作類型或為速度,或為推力,或為轉(zhuǎn)速,分別對應(yīng)速度、推力、轉(zhuǎn)速三種控制方式。動作類型通過參數(shù)設(shè)置。
5)UUVSonarDVLIMUMulti-v0
該環(huán)境中包含一個多網(wǎng)箱組成的陣列,機(jī)器人搭載一個測掃聲吶、一個IMU 和一個DVL,如圖12所示。
圖12 UUVSonarDVLIMUMulti-v0環(huán)境
狀態(tài):狀態(tài)為聲吶、DVL和IMU測量數(shù)據(jù)。
動作:動作類型或為速度,或為推力,或為轉(zhuǎn)速,分別對應(yīng)速度、推力、轉(zhuǎn)速三種控制方式。動作類型通過參數(shù)設(shè)置。
為驗證本文所搭建系統(tǒng)的有效性,以自定義環(huán)境UUVCircleCAM-v0 為例,采用OpenAI 的默認(rèn)強(qiáng)化學(xué)習(xí)算法PPO(Proximal Policy Optimization,PPO)進(jìn)行測試。這里使用Stable Baselines3強(qiáng)化學(xué)習(xí)庫實現(xiàn)。
訓(xùn)練可通過命令行部署,運(yùn)行以下命令:
roslaunch uuv_train start_train.launch tb_dir:=
可視化界面中標(biāo)簽欄三個選項依次分別是3D可視化模塊、訓(xùn)練狀態(tài)和觀測信息可視化模塊、評估數(shù)據(jù)可視化模塊和系統(tǒng)設(shè)置模塊。左欄中兩個儀表盤是對于機(jī)器人線速度和角速度的可視化,中間欄為機(jī)器人攝像頭的觀測圖像,右上欄是當(dāng)前存在的ROS 話題列表。菜單欄上部顯示了機(jī)器人的連接狀態(tài)即與ROS Mater 的連接狀態(tài),下部為對訓(xùn)練的部署和監(jiān)測?!皵?shù)據(jù)/指標(biāo)”如圖13 所示。訓(xùn)練過程中截圖如圖14所示。
圖13 訓(xùn)練數(shù)據(jù)可視化
圖14 訓(xùn)練過程可視化
對于已訓(xùn)練完成的強(qiáng)化學(xué)習(xí)控制策略或其他控制策略可利用本系統(tǒng)進(jìn)行測試、性能評估。圖15為對訓(xùn)練好后的PPO算法的評估可視化視圖。
圖15 控制策略評估可視化
本文基于UUV Simulator、ROS、OpenAI Gym 搭建了一個面向養(yǎng)殖網(wǎng)箱巡檢任務(wù)的強(qiáng)化學(xué)習(xí)訓(xùn)練系統(tǒng)。該系統(tǒng)具有一定的可擴(kuò)展性,用戶可在該系統(tǒng)中自定義、擴(kuò)展環(huán)境。該系統(tǒng)可用于強(qiáng)化學(xué)習(xí)訓(xùn)練與性能評估,也可用于控制算法測試。試驗案例表明了本文系統(tǒng)的有效性、可用性和操作簡便性。該系統(tǒng)對難以在真實水下環(huán)境進(jìn)行試驗的情況下,具有一定的現(xiàn)實意義,有助于提升網(wǎng)箱巡檢控制算法的研發(fā)效率和安全性,進(jìn)一步推動網(wǎng)箱養(yǎng)殖的智能化發(fā)展。未來工作將進(jìn)一步考慮更多的海洋環(huán)境因素,如各種干擾,迭代完善該系統(tǒng)。