董團陽++魏國亮++袁彬++王建華
摘 要:ROV(Remotely Operated Vehicle)運動時,其精確的數(shù)學模型很難建立,往往達不到運動與操控的一致性。設計基于多算法的ROV遠程協(xié)同控制器,主要包括兩部分:ROV遠程通信模塊與多算法協(xié)同控制器。ROV遠程通信設計采用串口轉換以太網(wǎng)模塊通信方式,將采集到的傳感器信息以JSON數(shù)據(jù)格式實時發(fā)送給上位機;多算法協(xié)同控制器分別包括ROV偏航和深度的前饋PID控制器以及ROV俯仰的滑??刂破?,可實現(xiàn)機器人自身的狀態(tài)控制。最后,通過多組實驗得出相應的控制效果和實驗參數(shù),驗證了該遠程協(xié)同控制器的有效性和實用性。
關鍵詞關鍵詞:ROV;JSON數(shù)據(jù)格式;滑??刂?;遠程協(xié)同控制器
DOIDOI:10.11907/rjdk.161937
中圖分類號:TP319
文獻標識碼:A 文章編號文章編號:16727800(2016)011009404
0 引言
隨著時代的發(fā)展,水下機器人在世界范圍內(nèi)的應用領域不斷擴大,包括海洋研究(科學考察)、海洋開發(fā)和水下工程等,并在許多國家獲得了迅速發(fā)展。以美國為代表的軍事大國尤其重視水下機器人在未來戰(zhàn)爭中的應用。在海洋開發(fā)過程中,水下機器人將在復雜海洋環(huán)境探測與建模,以及海洋目標的水下探測與識別、定位與傳輸?shù)确矫姘l(fā)揮重要作用。如何有效地控制水下機器人的運動和姿態(tài)是很多研究者非常重視的問題。由于自治水下機器人運動控制具有時變、非線性、大時延、多自由度等特點,并且因為其所處水下環(huán)境的復雜性和多變性,人們很難得到精確的系統(tǒng)模型,給水下機器人的精確定位與控制帶來了極大挑戰(zhàn)。隨著自治水下機器人的應用范圍不斷擴大,提高其自主性的關鍵技術之一是提高其控制器系統(tǒng)的性能[1]。
近年來,水下機器人得到了迅速發(fā)展,但是由于其作業(yè)形式多樣,水下機器人的外形也各不相同,它們通常不具有流線型結構。然而現(xiàn)有的幾種典型數(shù)學模型都是針對某一具體對象建立的,因此水下機器人至今也沒有通用模型。另外,由于水下干擾(海流)較大,進一步加大了水下機器人定點控制(動力定位)的難度。在機器人的各種控制算法中,滑??刂朴捎诰哂袑?shù)變化和系統(tǒng)未建模部分的魯棒性和極強的抗干擾性,而成為水下機器人控制的有效方案之一。但是現(xiàn)有模型都是針對不同對象設計的,也沒有研究過如何減輕因施加的控制作用而帶來耦合作用的影響[2]。
因此,水下機器人的懸停控制算法和定向研究是一個極有價值的研究課題。鑒于此,本文設計出相應的控制器,通過PID算法控制ROV的深度和航向,滑模算法控制ROV的俯仰姿態(tài)。其中算法設計、參數(shù)整定,在MATLAB中已經(jīng)實現(xiàn)仿真,并在實際測試中作了進一步驗證。圖1為本文設計的水下機器人。
1 ROV運動控制中存在的問題
針對ROV的俯仰姿態(tài)小角度控制,通常采用PID線性控制方法加以解決。但是當ROV的俯仰姿態(tài)角度大于15度時,PID算法將失效,ROV俯仰姿態(tài)出現(xiàn)振蕩現(xiàn)象。通過多組實驗研究,ROV的俯仰姿態(tài)與單擺模型類似,且都屬于非線性控制問題。因此,本文設計了滑模控制算法來克服這種非線性控制問題。
ROV遠程通信是水下機器人在水下執(zhí)行任務時與地面進行通訊的樞紐。本文利用USR-WIFI232模塊以及電力線載波模塊,將水下機器人采集的數(shù)據(jù)實時反饋到水面。通信的數(shù)據(jù)格式是實現(xiàn)整個算法的基礎。因此,選擇一種有效的數(shù)據(jù)交換格式是設計的關鍵。本文采用JSON數(shù)據(jù)格式,解決了不同平臺對傳感器數(shù)據(jù)的解析和生成等問題。
2 ROV遠程通信設計
2.1 ROV通信
JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式。它基于ECMAScript的一個子集,采用完全獨立于語言的文本格式,但也使用了類似于C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等),易于閱讀與編寫,也易于機器解析和生成(一般用于提升網(wǎng)絡傳輸速率)。這些特性使JSON成為理想的數(shù)據(jù)交換語言[3]。
因此,ROV系統(tǒng)采用C語言編寫的JSON通信格式(見圖2),實時發(fā)送傳感器數(shù)據(jù)到上位機。在各種軟件平臺(MATLAB、LABVIEW等)上,都有相應的SDK解析該格式的數(shù)據(jù)包,方便了用戶開發(fā)。
2.2 ROV編程解析
USR-WIFI232-D2模組是一款一體化的802.11b/g/n WiFi和以太網(wǎng)的模組,提供了一種將用戶的物理設備連接到WiFi無線網(wǎng)絡或以太網(wǎng)上,并提供USART數(shù)據(jù)傳輸接口的解決方案。通過該模組,傳統(tǒng)的低端串口設備或MCU控制的設備可以很方便地接入WiFi無線網(wǎng)絡或以太網(wǎng),從而實現(xiàn)物聯(lián)網(wǎng)絡控制與管理[4]。
網(wǎng)絡編程發(fā)送的通信指令如下:
{
"motors": {
"set_motor1_speed":0,
"set_motor2_speed":0,
"set_motor3_speed":0,
"set_motor4_speed":0
}
}
其中,motors對象在JSON中表示為“{}”中的內(nèi)容,數(shù)據(jù)結構為第二層”{}”中的內(nèi)容。在面向?qū)ο蟮恼Z言中,set_motor1_speed為電機1的屬性,0為對應的屬性值,所以很容易理解,解析方法為motors. set_motor1_speed獲取屬性值。該屬性值的類型可以是數(shù)字、字符串、數(shù)組、對象等。所以JSON不僅能夠提高可讀性,而且可以減少復雜性,容易編程,只需滿足JSON格式即可。
3 ROV多算法協(xié)同控制器設計
3.1 ROV航向與深度控制器設計
在模擬系統(tǒng)中,算法表達式為:P(t)=KP[e(t)+1T1∫e(t)dt+TDde(t)dt ](1)
式(1)中,P(t)為調(diào)節(jié)器輸出信號;e(t)為調(diào)節(jié)器偏差信號,它等于測量值與給定值之差;KP為調(diào)節(jié)器比例系數(shù);KI為調(diào)節(jié)器積分時間;KD為調(diào)節(jié)器微分時間。
由于計算機控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差值計算控制量。因此,在計算機控制系統(tǒng)中,必須首先對式(1)進行離散化處理,用數(shù)字形式的差分方程代替連續(xù)系統(tǒng)的微分方程[5]。
由式(4)可以看出,要計算P(k),不僅需要本次與上次的偏差信號E(k)和E(k-1),而且還要在積分項中把歷次偏差信號E(j)進行相加,即從∑nj=0E(j)中得到離散系統(tǒng)的PID算法。然而,在應用于水下機器人的PID控制算法中,機器人自身的航向和深度控制始終會出現(xiàn)一些穩(wěn)態(tài)誤差和時滯性。因此本文對其作了一些改進,在PID輸出后,加入一個前饋控制量(深度量和航向角度量)可以加快控制響應速度,及時消除穩(wěn)態(tài)誤差[6]。另外,深度控制和航向控制有一些區(qū)別,由于在姿態(tài)傳感器的工藝中,航向的偏航角(yaw)為-180°~180°,在該過程中可采用一種最短路徑算法,使水下機器人以最短路徑和時間到達設定的航向角。
在水池實驗中,討論PID對水下機器人航向角控制的實現(xiàn)。當水下機器人的實際角度與設定值差的絕對值大于90°時,通過前饋控制給機器人一個前饋航向角度量,使機器人立即響應設定值;當差的絕對值小于等于90°時,機器人會自動采用PID控制器調(diào)整輸出,以達到相應的設定值(允許誤差范圍內(nèi))。
以下介紹程序如何通過PID控制算法實現(xiàn)“前饋+反饋”控制水下機器人的過程:首先,通過串口中斷接收JY-901采集回來機器人自身實際角度yaw的數(shù)據(jù),并把數(shù)據(jù)發(fā)送到MATLAB上位機中;其次,判斷此刻設定值與yaw差的絕對值是否大于90°,以決定在PID輸出后,加入前饋航向角度量;最后,通過I2C發(fā)送輸出轉速到無刷直流電機,改變機器人自身角度去接近設定的目標角度[7]。程序框圖如圖3所示。
3.2 ROV俯仰控制器設計
水下機器人的俯仰角控制系統(tǒng)具有時變、非線性、大時延、多自由度的特性,由于水動力系數(shù)的復雜性和涌流環(huán)境的多變性,人們很難得到精確的系統(tǒng)模型,所以本文針對水下機器人俯仰角控制問題提出了一種近似數(shù)學模型——單擺模型,其動力學方程為:
其中,I表示轉動慣量,θ、θ.、θ..分別表示水下機器人的俯仰角(pitch)、角速度、角加速度。m表示水下機器人的質(zhì)量,l2表示水下機器人重心到浮心的垂直距離,F(xiàn)1、F2表示電機力矩,l表示電機力矩到浮心的垂直距離。
根據(jù)水下機器人系統(tǒng)所期望的動態(tài)特性設計系統(tǒng)的切換超平面,通過滑動模態(tài)控制器使系統(tǒng)狀態(tài)從超平面之外向切換超平面收束。系統(tǒng)一旦到達切換超平面,控制作用將保證系統(tǒng)沿切換超平面到達系統(tǒng)原點。因此,本文設計的切換超平面方程為:
其中θ、θγ分別表示測量值pitch和設定值pitch,P表示需要調(diào)節(jié)的參數(shù)。滑??刂破鞣匠虨椋?/p>
其中F、Ki、A、B表示需要調(diào)節(jié)的參數(shù)。這些參數(shù)的調(diào)節(jié)可滿足到達條件,從而使趨近運動(非滑動模態(tài))于有限時間內(nèi)到達開關面。在趨近過程中具有快速、抖振小的特點,能夠克服系統(tǒng)的不確定性,并且對于水動力系數(shù)的復雜性和涌流環(huán)境的變化具有很強的魯棒性,使水下機器人的俯仰角控制取得良好效果。與PID控制相比,俯仰角的控制過程屬于非線性系統(tǒng)控制,而PID控制是針對線性系統(tǒng)設計的算法控制器,其對干擾比較敏感[811]。因此,當被控對象采用滑模控制時,其對被控對象的模型誤差、對象參數(shù)變化以及外部干擾具有極強的魯棒性,可廣泛用于復雜實際場合。其算法程序框圖如圖4所示。
4 ROV多算法協(xié)同控制器實現(xiàn)
通過多組實驗數(shù)據(jù)以及仿真數(shù)據(jù)分析,針對水下機器人航向(yaw)和深度(roll)模型,可以得出前饋PID參數(shù),如表1所示。
水下機器人俯仰角、航向控制仿真以及實驗測試如圖5、圖6所示,細線代表機器人航向和深度控制,得到姿態(tài)傳感器(IMU)和壓力傳感器數(shù)據(jù),粗線表示MATLAB仿真得到的圖形。由于傳感器本身有大約2°或2mv的誤差,所以在允許的誤差范圍內(nèi),實際波形會有一些波動。
ROV的穩(wěn)定性及抗干擾能力是實際中機器人的關鍵指標,而水下最大的干擾是海流,進一步加大了ROV定點控制的難度。本文模擬海流實驗將機器人放入具有一定水流速度的河流中,設定機器人-15°的俯仰角,讓機器人自身通過滑??刂破骺刂茩C器人俯仰角為-15°。通過觀察俯仰角數(shù)據(jù)曲線圖,發(fā)現(xiàn)ROV穩(wěn)定性以及抗干擾能力很好,驗證了算法的實用性和有效性。
在模擬海流實驗中,觀察圖6偏航角度數(shù)據(jù)曲線,ROV偏航角動態(tài)響應快,系統(tǒng)穩(wěn)定性高,抗干擾能力強,達到了機器人運動與操控的一致性。其中機器人偏航控制采用前饋PID控制,參數(shù)調(diào)節(jié)簡單,所以未使用滑模控制算法。而圖中偏航角度波動屬于傳感器精度問題,在正常誤差范圍內(nèi)可以忽略不計。
ROV以水面為基準電壓表示0mv,橫坐標代表時間,縱坐標代表壓力傳感器校準后的電壓值。隨著ROV潛水深度的增加,傳感器電壓值隨之升高。而圖7曲線描述了ROV在前饋PID控制下,深度穩(wěn)定在設定值3mv的曲線,曲線波動表示在正常誤差范圍內(nèi),可以忽略不計。
5 結語
本文針對水下機器人的運動控制進行分析,通過串口轉換以太網(wǎng)模塊,將水下機器人自身的狀態(tài)信息反饋到上位機,并利用MATLAB平臺,對前饋PID和滑模算法控制進行仿真,以實現(xiàn)水下機器人的可操控性。在ROV偏航角、深度和俯仰角控制中,將其算法寫入MCU中。由于ROV偏航和深度控制系統(tǒng)自帶的時滯性,本文采用前饋PID控制算法對其進行控制,且通過多組實驗得到了較好的控制效果。通過ROV多組測試的結果看,ROV俯仰角度變化過程與單擺運動類似,且都屬于非線性時滯系統(tǒng)。故本文采用滑??刂扑惴?,實現(xiàn)了水下機器人俯仰角控制的實際效果。最后,通過水下測試實驗驗證了控制算法的有效性和實用性。
參考文獻:
[1] 黃佳.SAP程序設計[M].北京:機械工業(yè)出版社,2007.
[2] 邢志偉,封錫盛.水下機器人神經(jīng)網(wǎng)絡自適應逆控制[J].控制工程,2003(3):235238,258.