器人技術(shù)解析:從系統(tǒng)架構(gòu)到應(yīng)用實(shí)踐)
1. 從遙控玩具到自主水面機(jī)器人一個(gè)行業(yè)的范式轉(zhuǎn)變幾年前如果你在湖邊看到一艘無人駕駛的小船大概率會(huì)認(rèn)為那是某個(gè)愛好者在玩遙控模型。但今天情況已經(jīng)完全不同。當(dāng)一艘沒有駕駛艙、卻能自主規(guī)劃航線、規(guī)避障礙、執(zhí)行復(fù)雜任務(wù)的船只在水面航行時(shí)它已經(jīng)不再是玩具而是一個(gè)集成了導(dǎo)航、控制、感知與決策的復(fù)雜系統(tǒng)——我們稱之為自主水面機(jī)器人或者更專業(yè)的術(shù)語無人水面艇。這個(gè)領(lǐng)域正經(jīng)歷著一場(chǎng)靜默但深刻的革命。它不再局限于軍事領(lǐng)域的“黑科技”應(yīng)用而是快速滲透到民用市場(chǎng)的方方面面。從測(cè)繪一片陌生水域的水深地形到監(jiān)測(cè)一片廣闊海域的水質(zhì)變化從為海上風(fēng)電場(chǎng)的風(fēng)機(jī)進(jìn)行巡檢到協(xié)助科學(xué)家進(jìn)行海洋生物調(diào)查自主水面機(jī)器人正在成為人類探索和利用水域的“新器官”。它延伸了我們的感知范圍替代了人力在危險(xiǎn)、枯燥或大范圍重復(fù)性工作中的角色。我接觸這個(gè)領(lǐng)域最初也是從一個(gè)開源的水面機(jī)器人項(xiàng)目開始從自己焊接電路板、調(diào)試PID控制器到后來參與商業(yè)級(jí)產(chǎn)品的研發(fā)深感其技術(shù)棧的深度與廣度遠(yuǎn)超一般人的想象。這不僅僅是一艘船它是一個(gè)移動(dòng)的智能平臺(tái)。2. 自主水面機(jī)器人的核心系統(tǒng)拆解不只是“會(huì)動(dòng)的船”很多人會(huì)把自主水面機(jī)器人簡(jiǎn)單理解為一艘裝了自動(dòng)駕駛儀的船。這個(gè)類比有其道理但遠(yuǎn)遠(yuǎn)不夠。一個(gè)真正可靠、實(shí)用的自主水面機(jī)器人是多個(gè)子系統(tǒng)精密協(xié)作的結(jié)果。我們可以把它拆解為“軀體”、“感官”、“大腦”和“神經(jīng)”四個(gè)部分來理解。2.1 軀體平臺(tái)設(shè)計(jì)與動(dòng)力系統(tǒng)這是機(jī)器人的物理基礎(chǔ)。不同于空中或地面機(jī)器人水面平臺(tái)面臨獨(dú)特的流體動(dòng)力學(xué)環(huán)境。船型的選擇至關(guān)重要。單體船、雙體船甚至三體船各有優(yōu)劣。單體船結(jié)構(gòu)簡(jiǎn)單但在橫搖穩(wěn)定性上較差雙體船Catamaran擁有極佳的穩(wěn)定性和寬敞的甲板空間非常適合搭載各種傳感器和設(shè)備是目前民用和科研領(lǐng)域的主流選擇但阻力相對(duì)較大。三體船則在高速性和穩(wěn)定性之間取得了更好的平衡。動(dòng)力系統(tǒng)通常采用電力推進(jìn)由電池供電驅(qū)動(dòng)無刷電機(jī)帶動(dòng)螺旋槳或泵噴推進(jìn)器。這里的關(guān)鍵是續(xù)航與推力的平衡。鋰電池的能量密度決定了任務(wù)時(shí)長而電機(jī)的KV值、螺旋槳的螺距與直徑則決定了推力和效率。一個(gè)常見的誤區(qū)是盲目追求大功率電機(jī)這會(huì)導(dǎo)致電流激增迅速耗盡電池反而縮短了有效作業(yè)時(shí)間。我的經(jīng)驗(yàn)是根據(jù)任務(wù)載荷和預(yù)期航速通過簡(jiǎn)單的流體力學(xué)估算如使用Michlet等開源工具進(jìn)行初步阻力計(jì)算來匹配動(dòng)力遠(yuǎn)比憑感覺靠譜。注意在淡水尤其是湖泊中使用時(shí)要特別注意水草、漁網(wǎng)等纏繞物。采用導(dǎo)管槳或泵噴推進(jìn)器能極大降低纏繞風(fēng)險(xiǎn)雖然會(huì)損失一些效率但對(duì)于長期無人值守作業(yè)的可靠性提升是值得的。2.2 感官環(huán)境感知與狀態(tài)感知系統(tǒng)這是機(jī)器人的“眼睛”和“耳朵”。它需要知道“我在哪”、“周圍有什么”以及“我自身狀態(tài)如何”。定位與定姿這是所有自主移動(dòng)機(jī)器人的基石。全球?qū)Ш叫l(wèi)星系統(tǒng)如GPS、北斗提供絕對(duì)位置但信號(hào)會(huì)丟失如橋下、峽谷且有誤差。慣性測(cè)量單元IMU通過陀螺儀和加速度計(jì)提供高頻的姿態(tài)、角速度和加速度信息用于短時(shí)間內(nèi)的航位推算但存在累積誤差。因此GNSS/IMU組合導(dǎo)航是標(biāo)準(zhǔn)配置。更高端的系統(tǒng)會(huì)引入多普勒計(jì)程儀DVL測(cè)量對(duì)地速度或使用視覺/激光SLAM在無GNSS環(huán)境下進(jìn)行定位。障礙物感知這是實(shí)現(xiàn)自主避障的關(guān)鍵。水上環(huán)境復(fù)雜障礙物可能是靜止的碼頭、浮標(biāo)、礁石也可能是運(yùn)動(dòng)的其他船只、游泳者。常用傳感器包括毫米波雷達(dá)作用距離遠(yuǎn)可達(dá)數(shù)公里不受天氣和光照影響能有效探測(cè)大型金屬目標(biāo)如其他船舶但對(duì)小型非金屬物體如浮木、塑料桶探測(cè)能力弱。激光雷達(dá)LiDAR精度高能生成精細(xì)的3D點(diǎn)云非常適合近場(chǎng)高精度避障和岸線測(cè)繪。但其性能在雨、霧、水面反光強(qiáng)烈的環(huán)境下會(huì)嚴(yán)重下降且成本較高。光學(xué)攝像頭成本低信息豐富結(jié)合計(jì)算機(jī)視覺算法可以識(shí)別特定目標(biāo)如浮標(biāo)顏色、船只類型。但完全依賴光照夜間或惡劣天氣下基本失效。聲吶主要用于水下障礙物暗礁、淺灘和水深測(cè)量是水面機(jī)器人的重要補(bǔ)充傳感器。在實(shí)際項(xiàng)目中沒有“銀彈”傳感器。通常采用多傳感器融合的方案。例如用雷達(dá)做遠(yuǎn)距離、全天候的宏觀態(tài)勢(shì)感知用激光雷達(dá)做近距離精細(xì)避障用視覺做目標(biāo)識(shí)別和輔助定位。融合算法如卡爾曼濾波、粒子濾波的優(yōu)劣直接決定了感知系統(tǒng)的魯棒性。2.3 大腦決策與控制系統(tǒng)這是機(jī)器人的“指揮官”。它接收感知系統(tǒng)的信息根據(jù)任務(wù)目標(biāo)做出決策并控制“軀體”執(zhí)行。決策層任務(wù)規(guī)劃負(fù)責(zé)高級(jí)別任務(wù)分解。例如操作員下達(dá)指令“測(cè)繪A區(qū)域至B區(qū)域的水深”。決策層需要將其分解為從當(dāng)前位置航行至A點(diǎn)-沿“之”字形路徑覆蓋測(cè)繪區(qū)域-航行至B點(diǎn)-返航。這涉及到路徑點(diǎn)序列的生成。規(guī)劃層路徑規(guī)劃與重規(guī)劃在已知或部分已知的環(huán)境地圖和障礙物信息下規(guī)劃出從A點(diǎn)到B點(diǎn)安全、高效的路徑。常用算法如A*、D*、RRT等。當(dāng)傳感器實(shí)時(shí)探測(cè)到未知障礙物時(shí)規(guī)劃層需要能動(dòng)態(tài)重規(guī)劃路徑??刂茖舆\(yùn)動(dòng)控制這是最底層的執(zhí)行機(jī)構(gòu)。它接收規(guī)劃層給出的期望航向和速度通過控制舵機(jī)和電機(jī)推力使船體實(shí)際運(yùn)動(dòng)狀態(tài)逼近期望值。最經(jīng)典的是PID控制器比例P項(xiàng)決定反應(yīng)速度積分I項(xiàng)消除穩(wěn)態(tài)誤差微分D項(xiàng)抑制超調(diào)震蕩。水面船舶的控制有其特殊性因?yàn)榱黧w動(dòng)力復(fù)雜且存在較大的慣性。單純的位置PID效果往往不好通常采用串級(jí)PID外環(huán)位置控制生成期望航向內(nèi)環(huán)航向控制生成舵角指令。參數(shù)整定是個(gè)經(jīng)驗(yàn)活需要在不同的風(fēng)速、流速條件下反復(fù)測(cè)試。2.4 神經(jīng)通信與數(shù)據(jù)鏈路自主不等于完全斷聯(lián)。機(jī)器人需要將狀態(tài)數(shù)據(jù)、傳感器數(shù)據(jù)如圖像、點(diǎn)云回傳也需要接收新的指令或任務(wù)。通信系統(tǒng)是連接機(jī)器人與控制站的“生命線”。無線電數(shù)傳使用ISM頻段如433MHz 915MHz 2.4GHz的電臺(tái)傳輸控制指令和遙測(cè)數(shù)據(jù)。優(yōu)點(diǎn)是延遲低可靠性較高。但傳輸距離受限于視距和功率通常為幾公里到幾十公里。蜂窩網(wǎng)絡(luò)4G/5G在有運(yùn)營商網(wǎng)絡(luò)覆蓋的水域如近海、湖泊、河流這是最方便的數(shù)據(jù)回傳方式可以實(shí)現(xiàn)超視距、大數(shù)據(jù)量如圖像流的傳輸。但存在信號(hào)盲區(qū)和流量費(fèi)用問題。衛(wèi)星通信用于遠(yuǎn)海作業(yè)如“銥星”、“海事衛(wèi)星”等確保全球范圍內(nèi)的基本指令和狀態(tài)回傳。缺點(diǎn)是帶寬低、延遲高、費(fèi)用昂貴。一個(gè)健壯的系統(tǒng)通常會(huì)配置冗余通信鏈路。例如主用4G網(wǎng)絡(luò)回傳視頻和數(shù)據(jù)備用無線電數(shù)傳確保在信號(hào)丟失時(shí)仍能發(fā)送關(guān)鍵指令如緊急停車、返航。3. 典型應(yīng)用場(chǎng)景與實(shí)戰(zhàn)案例剖析理解了系統(tǒng)構(gòu)成我們來看看它能做什么。這里我結(jié)合幾個(gè)親身參與或深度了解的項(xiàng)目拆解其中的技術(shù)要點(diǎn)和實(shí)戰(zhàn)考量。3.1 場(chǎng)景一水文測(cè)繪與水下地形測(cè)量這是目前最成熟、應(yīng)用最廣的領(lǐng)域之一。傳統(tǒng)上這項(xiàng)工作需要測(cè)量船搭載單波束或多波束測(cè)深儀由船員操作沿預(yù)設(shè)測(cè)線航行耗時(shí)耗力且存在人員安全風(fēng)險(xiǎn)。技術(shù)實(shí)現(xiàn)平臺(tái)通常選用雙體船平臺(tái)因其穩(wěn)定性好能減少船體搖蕩對(duì)聲吶數(shù)據(jù)的影響。核心傳感器單波束/多波束測(cè)深聲吶、GNSS/IMU組合導(dǎo)航系統(tǒng)必須提供高精度位置和姿態(tài)、表面聲速儀用于校正聲波在水中的傳播速度。任務(wù)流程在控制站軟件上框定測(cè)繪區(qū)域設(shè)置測(cè)線間距決定測(cè)繪密度。規(guī)劃軟件自動(dòng)生成覆蓋該區(qū)域的“之”字形路徑點(diǎn)。機(jī)器人自主沿測(cè)線航行聲吶持續(xù)采集水深數(shù)據(jù)GNSS/IMU提供每個(gè)水深點(diǎn)的精確三維坐標(biāo)和船體姿態(tài)橫搖、縱搖、升沉。所有數(shù)據(jù)時(shí)間同步后后期處理軟件可生成高精度的水下數(shù)字高程模型。實(shí)戰(zhàn)心得“姿態(tài)補(bǔ)償”是關(guān)鍵船是在晃動(dòng)的聲吶換能器也在晃動(dòng)。如果不利用高精度IMU的數(shù)據(jù)對(duì)每個(gè)水深點(diǎn)進(jìn)行姿態(tài)補(bǔ)償特別是橫搖補(bǔ)償?shù)玫降牡匦螌⑹桥で挠绕湓诓ɡ溯^大的情況下。我們?cè)谝粋€(gè)水庫項(xiàng)目初期忽略了這一點(diǎn)導(dǎo)致生成的地圖出現(xiàn)規(guī)律的條紋狀誤差后來復(fù)盤發(fā)現(xiàn)是IMU數(shù)據(jù)融合權(quán)重設(shè)置不當(dāng)。路徑跟蹤精度要求高測(cè)繪要求機(jī)器人嚴(yán)格沿預(yù)設(shè)測(cè)線航行橫向偏差最好控制在測(cè)線間距的10%以內(nèi)。這對(duì)控制器的路徑跟蹤能力提出了高要求。我們采用了視線法Line-of-Sight, LOS引導(dǎo)律結(jié)合串級(jí)PID控制LOS負(fù)責(zé)計(jì)算當(dāng)前位置到目標(biāo)路徑段的“瞄準(zhǔn)點(diǎn)”PID負(fù)責(zé)控制船頭指向該點(diǎn)實(shí)測(cè)跟蹤精度可達(dá)亞米級(jí)。能源與數(shù)據(jù)管理多波束聲吶數(shù)據(jù)量巨大每小時(shí)可達(dá)數(shù)十GB。需要大容量固態(tài)硬盤存儲(chǔ)并考慮在任務(wù)間歇通過4G回傳部分關(guān)鍵數(shù)據(jù)供現(xiàn)場(chǎng)質(zhì)控。同時(shí)聲吶和工控機(jī)都是耗電大戶必須精確計(jì)算任務(wù)時(shí)間與電池容量的關(guān)系留足安全余量通常30%。3.2 場(chǎng)景二水域生態(tài)環(huán)境監(jiān)測(cè)用于湖泊、水庫、河流、近海的水質(zhì)自動(dòng)巡測(cè)。機(jī)器人按規(guī)劃路徑航行在指定點(diǎn)位自動(dòng)停船或低速航行利用機(jī)械臂或泵采水并通過搭載的多參數(shù)水質(zhì)儀pH、溶解氧、濁度、葉綠素、氨氮等進(jìn)行實(shí)時(shí)分析。技術(shù)實(shí)現(xiàn)平臺(tái)與載荷平臺(tái)需有足夠的負(fù)載能力和穩(wěn)定性以搭載采水裝置和水質(zhì)儀。通常需要設(shè)計(jì)機(jī)械臂或升降機(jī)構(gòu)將傳感器降至水下特定深度。定點(diǎn)懸停挑戰(zhàn)這是區(qū)別于測(cè)繪場(chǎng)景的最大難點(diǎn)。船舶不像多旋翼無人機(jī)可以輕易在空中懸停。在水流和風(fēng)的影響下讓一艘船保持在一個(gè)固定位置動(dòng)態(tài)定位非常困難。解決方案采用動(dòng)力定位Dynamic Positioning, DP技術(shù)。簡(jiǎn)單來說系統(tǒng)需要高精度定位使用RTK-GPS或DGPS獲得厘米級(jí)位置信息。環(huán)境力估計(jì)通過模型或觀測(cè)器估算水流和風(fēng)對(duì)船體產(chǎn)生的持續(xù)力和力矩??刂破魇褂帽萈ID更高級(jí)的控制算法如模型預(yù)測(cè)控制MPC或滑??刂啤?刂破鞲鶕?jù)位置誤差和環(huán)境力估計(jì)實(shí)時(shí)解算各個(gè)推進(jìn)器如果有多推進(jìn)器所需的推力大小和方向以抵消環(huán)境擾動(dòng)將船“釘”在目標(biāo)點(diǎn)。實(shí)戰(zhàn)心得推進(jìn)器配置是關(guān)鍵實(shí)現(xiàn)DP至少需要三個(gè)自由度進(jìn)退、橫移、轉(zhuǎn)艏的控制能力。這意味著單推進(jìn)器舵的常規(guī)配置是不夠的。常見的方案是采用矢量推進(jìn)器可360度旋轉(zhuǎn)或布置多個(gè)橫向推進(jìn)器。我們一個(gè)項(xiàng)目的監(jiān)測(cè)船就在船首和船尾各加裝了一個(gè)橫向推進(jìn)器配合主推實(shí)現(xiàn)了在中等流速河流中的定點(diǎn)懸停。能耗劇增對(duì)抗水流保持位置需要持續(xù)輸出推力能耗遠(yuǎn)大于巡航。必須根據(jù)任務(wù)水域的最大流速來設(shè)計(jì)推進(jìn)器功率和電池容量。我們?cè)凸滥澈涌诘牧魉賹?dǎo)致機(jī)器人無法在預(yù)定采樣點(diǎn)穩(wěn)住電池也快速耗盡最后不得不修改任務(wù)方案改為低速通航連續(xù)測(cè)量模式。采樣代表性自動(dòng)采水的位置精度和深度精度必須滿足水文規(guī)范。需要仔細(xì)設(shè)計(jì)采樣機(jī)構(gòu)的避震和密封防止船體振動(dòng)和污水倒灌污染樣品。3.3 場(chǎng)景三視覺巡檢與目標(biāo)識(shí)別應(yīng)用于港口、航道、橋梁、海上設(shè)施的巡檢。機(jī)器人沿設(shè)施周邊航行通過高清攝像頭、熱像儀等采集圖像/視頻利用機(jī)載或后臺(tái)的AI算法自動(dòng)識(shí)別裂縫、銹蝕、非法靠泊等異常。技術(shù)實(shí)現(xiàn)感知核心高分辨率云臺(tái)相機(jī)、熱成像相機(jī)是標(biāo)準(zhǔn)配置。為了獲得穩(wěn)定清晰的畫面云臺(tái)需要具備高精度的自穩(wěn)功能補(bǔ)償船體的搖蕩。自主巡航與避障巡檢路徑可能靠近障礙物如橋墩、碼頭需要更精確的近距離避障能力。通常采用激光雷達(dá)視覺融合的方案。激光雷達(dá)提供精確的距離信息用于緊急避障視覺用于識(shí)別特定的巡檢目標(biāo)如橋墩編號(hào)、管道焊縫。邊緣計(jì)算與通信高清視頻流對(duì)帶寬要求極高。全部回傳不現(xiàn)實(shí)。通常的做法是在船載計(jì)算機(jī)上進(jìn)行邊緣智能分析。例如使用輕量化的YOLO系列目標(biāo)檢測(cè)模型實(shí)時(shí)分析視頻流只將含有“異?!备婢膱D片或短視頻片段連同時(shí)間、位置標(biāo)簽一起回傳。這大大降低了通信壓力。實(shí)戰(zhàn)心得光線與天氣是最大變量視覺算法在逆光、夜間、雨霧天氣下性能會(huì)大幅下降。不能完全依賴單一視覺傳感器。我們?yōu)橐粋€(gè)海上風(fēng)電巡檢項(xiàng)目設(shè)計(jì)的方案是白天主要依靠視覺巡檢風(fēng)機(jī)塔筒表面同時(shí)激光雷達(dá)持續(xù)掃描周圍障礙物夜間和霧天則切換為主要依賴激光雷達(dá)進(jìn)行安全巡線視覺作為輔助。模型泛化能力挑戰(zhàn)訓(xùn)練一個(gè)能識(shí)別“銹蝕”的模型需要大量在不同光照、角度、銹蝕程度下的圖片。實(shí)際水域環(huán)境復(fù)雜模型容易將陰影、水漬誤判為缺陷。解決方法是進(jìn)行充分的數(shù)據(jù)增強(qiáng)和領(lǐng)域自適應(yīng)并且最好能在巡檢初期進(jìn)行少量人工復(fù)核將誤報(bào)樣本反饋給模型進(jìn)行在線學(xué)習(xí)。安全距離保持自動(dòng)巡檢時(shí)必須設(shè)定嚴(yán)格的安全邊界如距離橋墩5米以外并在控制邏輯中將其設(shè)為不可逾越的“硬約束”即使識(shí)別到目標(biāo)也不能為了拍得更清楚而違反安全距離。這需要通過路徑規(guī)劃器的代價(jià)地圖來實(shí)現(xiàn)。4. 開發(fā)與部署中的核心挑戰(zhàn)與應(yīng)對(duì)策略紙上談兵終覺淺真正把一個(gè)自主水面機(jī)器人系統(tǒng)做穩(wěn)定、能用、好用會(huì)遇到一系列教科書上不會(huì)寫的挑戰(zhàn)。4.1 軟件架構(gòu)ROS不是萬能藥機(jī)器人操作系統(tǒng)如ROS/ROS2因其豐富的工具包和社區(qū)支持成為很多機(jī)器人項(xiàng)目的首選。對(duì)于水面機(jī)器人ROS可以很好地管理傳感器驅(qū)動(dòng)、數(shù)據(jù)融合、路徑規(guī)劃等節(jié)點(diǎn)。然而直接套用存在風(fēng)險(xiǎn)實(shí)時(shí)性瓶頸ROS默認(rèn)的通信機(jī)制如Topic并非硬實(shí)時(shí)在需要毫秒級(jí)響應(yīng)的底層運(yùn)動(dòng)控制環(huán)中可能引入不可接受的延遲。我們的做法是將高實(shí)時(shí)性要求的任務(wù)如電機(jī)控制、緊急避障放在一個(gè)獨(dú)立的實(shí)時(shí)操作系統(tǒng)如運(yùn)行在單片機(jī)或帶實(shí)時(shí)核的Linux上中通過高速總線如CAN與ROS主系統(tǒng)通信。ROS負(fù)責(zé)上層決策和監(jiān)控實(shí)時(shí)系統(tǒng)負(fù)責(zé)底層安全執(zhí)行。網(wǎng)絡(luò)拓?fù)渑c單點(diǎn)故障所有節(jié)點(diǎn)通過一個(gè)ROS Master連接如果Master崩潰整個(gè)系統(tǒng)通信癱瘓。對(duì)于無人系統(tǒng)這是致命的。必須設(shè)計(jì)冗余和心跳監(jiān)測(cè)機(jī)制。例如使用ROS2的DDS通信中間件本身具有去中心化的特性或者自己實(shí)現(xiàn)一套簡(jiǎn)單的基于UDP的節(jié)點(diǎn)狀態(tài)廣播和指令備份通道。資源消耗完整的ROS桌面版加上各種視覺、激光雷達(dá)處理節(jié)點(diǎn)對(duì)計(jì)算資源消耗很大。在嵌入式工控機(jī)上需要精心裁剪只保留必要的功能包并優(yōu)化算法如使用CUDA加速視覺處理。4.2 感知與決策的“最后一公里”不確定性處理傳感器有噪聲模型不完美環(huán)境在動(dòng)態(tài)變化。如何讓機(jī)器人在不確定的環(huán)境中做出可靠決策多傳感器融合的置信度管理不是所有傳感器數(shù)據(jù)在任何時(shí)候都可信。例如GPS在橋下信號(hào)失鎖視覺在強(qiáng)光下過曝。融合算法如擴(kuò)展卡爾曼濾波不僅要融合數(shù)據(jù)還要根據(jù)傳感器自身的健康狀態(tài)如GPS的衛(wèi)星數(shù)、信噪比動(dòng)態(tài)調(diào)整其觀測(cè)噪聲矩陣降低不可信傳感器的權(quán)重?;诖鷥r(jià)地圖的規(guī)劃路徑規(guī)劃不是在空白地圖上畫一條線。我們將障礙物信息、水深信息淺水區(qū)代價(jià)高、禁區(qū)信息等融合成一張“代價(jià)地圖”。規(guī)劃算法如A*尋找從起點(diǎn)到終點(diǎn)總代價(jià)最低的路徑。這比簡(jiǎn)單的“有障礙就繞”更智能例如它會(huì)傾向于從水深足夠的安全區(qū)域繞行而不是緊貼著一個(gè)陡峭的暗礁邊緣航行。行為樹與有限狀態(tài)機(jī)對(duì)于復(fù)雜的任務(wù)邏輯如“到達(dá)測(cè)繪點(diǎn)-展開設(shè)備-開始測(cè)量-遇到移動(dòng)船只-暫停測(cè)量-避讓-返回繼續(xù)測(cè)量”用if-else硬編碼會(huì)變得極其混亂。我們采用行為樹Behavior Tree來組織任務(wù)邏輯。它將任務(wù)分解為“選擇”、“序列”、“并行”、“條件”等節(jié)點(diǎn)結(jié)構(gòu)清晰易于調(diào)試和修改并能很好地處理任務(wù)中斷和恢復(fù)。4.3 安全與可靠性必須考慮“萬一”無人系統(tǒng)一旦下水就必須為所有可能的故障做好準(zhǔn)備。安全設(shè)計(jì)必須貫穿始終。硬件冗余關(guān)鍵系統(tǒng)如主控計(jì)算機(jī)、GNSS接收機(jī)、通信鏈路盡可能采用雙冗余。主備系統(tǒng)之間通過心跳線監(jiān)測(cè)主系統(tǒng)故障時(shí)自動(dòng)切換。推進(jìn)系統(tǒng)也可以設(shè)計(jì)冗余例如雙推進(jìn)器配置一個(gè)故障時(shí)仍能保持基本機(jī)動(dòng)能力。軟件看門狗與降級(jí)模式除了硬件看門狗在軟件層面也要設(shè)置多層看門狗。如果某個(gè)關(guān)鍵進(jìn)程如路徑規(guī)劃器卡死看門狗會(huì)將其重啟。如果重啟失敗系統(tǒng)應(yīng)能進(jìn)入一個(gè)預(yù)設(shè)的“降級(jí)安全模式”例如停止當(dāng)前任務(wù)原地保持航向或沿著一條最安全的路徑緩慢返航。人為介入Man-in-the-Loop完全的自主不等于完全排除人??刂普拒浖?yīng)始終提供清晰的態(tài)勢(shì)感知如融合后的電子海圖、機(jī)器人周圍障礙物、電池狀態(tài)并允許操作員隨時(shí)介入發(fā)送“暫?!?、“緊急停車”、“切換為遙控模式”或“執(zhí)行返航”等指令。遙控模式應(yīng)作為最高優(yōu)先級(jí)的指令任何時(shí)候都能覆蓋自主控制。防碰撞規(guī)則COLREGs的編碼在開放水域自主船只必須遵守國際海上避碰規(guī)則。這極其復(fù)雜例如“對(duì)遇局面”應(yīng)右轉(zhuǎn)避讓“交叉局面”應(yīng)讓路給右舷來船。目前的研究正在嘗試將這些規(guī)則編碼到機(jī)器人的決策系統(tǒng)中但這仍是前沿挑戰(zhàn)。在現(xiàn)階段實(shí)用的做法是設(shè)置保守的安全距離一旦有其他船只進(jìn)入該距離優(yōu)先采取最保守的避讓動(dòng)作如減速、停車、向右轉(zhuǎn)向并向控制站告警。4.4 測(cè)試與驗(yàn)證從模擬到實(shí)地的漫漫長路在昂貴的硬件下水之前充分的仿真測(cè)試能避免大量損失。硬件在環(huán)HIL仿真將機(jī)器人的控制軟件如ROS節(jié)點(diǎn)運(yùn)行在真實(shí)的工控機(jī)上但傳感器數(shù)據(jù)如GPS、IMU、激光雷達(dá)和電機(jī)指令的反饋都由一個(gè)仿真環(huán)境如Gazebo配合船舶動(dòng)力學(xué)模型來提供。這可以在實(shí)驗(yàn)室里測(cè)試整個(gè)軟件棧的邏輯是否正確控制參數(shù)是否合理。我們?cè)ㄟ^HIL仿真提前發(fā)現(xiàn)了一個(gè)在特定風(fēng)速下路徑跟蹤會(huì)發(fā)散的控制參數(shù)問題。漸進(jìn)式實(shí)地測(cè)試實(shí)地測(cè)試必須遵循“由簡(jiǎn)入繁由近及遠(yuǎn)”的原則。系泊測(cè)試在碼頭邊用繩子系住機(jī)器人測(cè)試所有傳感器、執(zhí)行器、通信是否正常軟件能否正常啟動(dòng)。遙控模式測(cè)試在開闊、無障礙水域測(cè)試手動(dòng)遙控功能驗(yàn)證基本的航行、轉(zhuǎn)向性能。初級(jí)自主測(cè)試測(cè)試定點(diǎn)導(dǎo)航從A點(diǎn)到B點(diǎn)驗(yàn)證定位、控制和路徑跟蹤的基本能力。避障測(cè)試在可控環(huán)境下如放置幾個(gè)浮標(biāo)作為障礙物測(cè)試靜態(tài)避障功能。完整任務(wù)測(cè)試最后才進(jìn)行完整的、長時(shí)間的自主任務(wù)測(cè)試。每一次測(cè)試都必須有完備的安全預(yù)案包括救援船跟隨、緊急停車遙控器在手。我們團(tuán)隊(duì)有一條鐵律任何新的代碼或參數(shù)更新都必須從“系泊測(cè)試”開始重新走一遍流程無論改動(dòng)看起來多小。從開源項(xiàng)目到工業(yè)級(jí)產(chǎn)品我深刻體會(huì)到打造一個(gè)可靠的自主水面機(jī)器人是機(jī)械、電子、通信、算法、軟件工程等多學(xué)科知識(shí)的深度融合。它迷人的地方在于你永遠(yuǎn)在解決真實(shí)世界提出的、充滿不確定性的新問題。每一次成功的水上任務(wù)背后都是無數(shù)次的調(diào)試、失敗和迭代。這個(gè)領(lǐng)域沒有捷徑唯有對(duì)技術(shù)的敬畏、對(duì)安全的偏執(zhí)以及從一次次“濕身”指水上測(cè)試中積累的經(jīng)驗(yàn)才能讓這些沉默的“水面行者”真正成為人類得力的助手。