史曉虎,文小玲*,涂英杰
1. 武漢工程大學電氣信息學院,湖北 武漢 430205;
2. 潛江市吉冠生態農業有限公司,湖北 潛江 433116
魚類在水中游動時具備靈活性、高效率、低噪音等特點,因此,仿生機器魚在水質監測和水下探測等領域得到了越來越廣泛的應用[1-5]。
中樞模式發生器[6-7](central pattern generator,CPG)是一種基于動物節律運動控制機理、仿神經元網絡的控制方法。它以CPG 神經元作為底層的運動控制器,通過神經元之間的相互抑制實現自激振蕩,產生連續、穩定的節律控制信號,從而實現對多個關節的運動控制[8-9]。機器魚常用的CPG 模型有3 種[10-12]:遞歸振蕩器,相位振蕩器和Hopf 振蕩器。Ikeda 采用基于遞歸振蕩器的CPG網絡控制多關節仿蝠鲼機器魚的游動[13]。Cao等[14]利用相位振蕩器構建CPG 網絡,實現了胸鰭波動推進模式的多關節機器魚的游動控制。王揚威等[15]基于20 個Hopf 振蕩器構建了中心式CPG拓撲網絡模型,通過調節振蕩器的幅值和頻率來實現仿生機器魚的多種游動模式及模式間的切換控制。王海龍等[16]采用Hopf 振蕩器構建最近相鄰耦合的鏈式CPG 網絡控制模型,并引入3 個頂層控制信號控制機器人模態的生成,再通過CPG網絡輸出控制信號,實現了仿海蟹機器人的三維游動控制。李宗剛等[17]提出了一種將Hopf 振蕩器與模糊控制相結合的閉環運動控制方法,通過模糊控制器調節CPG 模型的控制參數,改善了機器魚定深控制的動態與穩態性能。
目前,CPG 網絡在實際工程應用中多用于解決模態控制問題,對于更復雜的避障及路徑規劃和軌跡跟蹤控制問題,僅依靠CPG 網絡生成節律控制信號是不夠的,還需要根據環境反饋信息和上層的協調控制信息、利用CPG 網絡生成節律控制信號,才能實現機器魚的自主柔性游動控制,但對于這方面的研究鮮有報道。
為實現仿生機器魚自主巡航及柔性游動的同步控制,本文采用CPG 控制機器魚的各個關節,通過引入反饋控制,構建包括模態調節層、模態生成層、運動控制層和反饋協調層的分層閉環控制器,實現了機器魚協調自然的游動模態、模態之間的平滑切換以及自主巡航和避障。
尾鰭推進模式下的魚類具有較大推進力、游動速度較快,胸鰭推進模式下的魚類穩定性更高。為此,采用三關節尾鰭和左右胸鰭協同推進方式,實現機器魚的三維游動。
仿生機器魚控制系統總體架構如圖1 所示,以STM32F407 單片機作為主控制器,利用紅外測距傳感器獲取環境信息、GPS 和慣性傳感器獲取自身姿態及位置信息;主控制器對環境和自身姿態信息分析計算后,輸出5 路PWM 脈沖信號、控制舵機轉動,實現機器魚的前進、轉彎以及上浮下潛;利用水質傳感器采集水質參數,如溶解氧、pH值、溫度等;利用Lora 無線通信模塊,實現遠距離無線傳輸,接收控制命令和將采集到的水質參數數據、機器魚的狀態信息發送到上位機。

圖1 機器魚控制系統總體架構Fig.1 Overall architecture of robot fish control system
Hopf 振蕩器控制參數少,輸出信號的幅值、頻率相互獨立,可單獨控制;穩定時生成的輸出信號收斂于正弦波,滿足仿魚形機器人運動所需控制信號的特點,并且易于耦合反饋;因此本文選擇Hopf振蕩器為CPG 模型。
Hopf振蕩器的微分方程為:
式中:x?,y?表示對x、y求導,x為振蕩器的膜電勢、y為振蕩器的調節電勢;ω、m分別表示振蕩器的頻率和振幅,h為收斂系數。
自然界中的魚類依靠胸鰭、身體、尾鰭的相互協調進行自主游動。因為單個CPG 只能控制1 個關節,而本機器魚有5 個關節,所以必須建立多個CPG 之間的耦合關系,對多個關節進行協調控制,進而實現機器魚的柔性控制。本文基于Hopf振蕩器,采用雙向鏈式最近相鄰弱耦合方式,建立的CPG 網絡模型如圖2 所示,其微分方程為:

圖2 CPG 網絡模型Fig.2 CPG network model
式中:i表示機器魚的第i個CPG,i=1、2、3 代表尾部關節的CPG,i=4、5 分別代表左右胸鰭關節的CPG;φi為神經元間的相位差,bi為第i個CPG 的偏移;l為耦合系數,表示CPG 間的抑制關系。
為驗證所構建CPG 網絡模型的有效性,利用MATLAB 軟件對機器魚直游、轉彎、上浮下潛等模態以及彼此之間的切換進行仿真分析。
收斂系數h和耦合系數l都取1,相鄰尾鰭之間的相位差為30°,胸鰭之間的相位差為0°。
直游模態下,5 個舵機的擺動頻率均保持一致,3 個尾鰭舵機的擺動幅值依次增加、相位依次滯后,2 個胸鰭舵機的擺動幅值和相位都保持一致。通過改變舵機擺動頻率和幅值實現機器魚游動速度的切換。機器魚直游時的CPG 控制參數及其輸出波形分別如表1 和圖3 所示。

表1 直游控制參數Tab.1 Control parameters of straight-line swimming

圖3 直游輸出波形Fig.3 Output waveforms of straight-line swimming
給尾部舵機擺動增加1 個偏移即可實現轉彎。3 個尾鰭舵機的偏移依次增加,并且偏移的正負決定了機器魚轉彎的方向,偏移為正表示向右轉彎。機器魚轉彎時的CPG 控制參數及其輸出波形分別如表2 和圖4 所示。

表2 轉彎控制參數Tab.2 Control parameters of turning

圖4 轉彎輸出波形Fig.4 Output waveforms of turning
給胸鰭舵機擺動增加1 個偏移即可實現上浮下潛。2 個胸鰭舵機的偏移保持一致,并且偏移的正負決定了機器魚上浮下潛的方向,偏移為正表示上浮。機器魚上浮下潛時的CPG 控制參數及其輸出波形分別如表3 和圖5 所示。

表3 上浮下潛控制參數Tab.3 Control parameters of upstroke and downstroke in swimming

圖5 上浮下潛輸出波形Fig.5 Output waveforms of upstroke and downstroke in swimming
由上述仿真結果可以看出,通過改變控制參數ωi、mi、bi可以生成多種波形。當參數突變時、CPG 的波形仍然比較平滑,并能很快達到新的穩定狀態,因此可實現機器魚直游、轉彎及上浮下潛等多個模態以及彼此之間的平滑切換,進而實現對機器魚的柔性控制,驗證了所提CPG 網絡模型的有效性。
利用CPG 控制能夠實現各個模態間的平滑切換,但是缺乏靈活適應環境的能力,為了在復雜水下環境中實現機器魚的自主避障,提出基于CPG的分層閉環控制方法。其總體架構如圖6 所示,包括模態調節層、模態生成層、運動控制層、反饋協調層,進行機器魚路徑規劃的同時、完成多個舵機的協調控制。

圖6 運動控制總體架構Fig.6 Overall architecture of motion control
圖6 中的m、ω、b分別表示用于生成CPG 節律信號的模態控制參數:幅值、頻率、偏移,z表示用于生成PWM 波形的節律信號,d、θ0、e分別表示機器魚與障礙物間的距離、機器魚的實際航向以及實際航向與規劃航向間的偏差角。
模態調節層控制流程如圖7 所示,完成路徑規劃及生成模態控制信號。其中,采用將粒子群算法和人工勢場法相結合的路徑規劃方法,首先利用粒子群算法根據已知環境信息規劃出一條初始路徑,再利用人工勢場法根據反饋層獲取的環境信息進行實時避障和路徑更新,然后根據規劃出的路徑以及反饋的信息采用模糊控制方法生成模態控制信號。

圖7 模態調節層控制流程Fig.7 Control flow of modal adjustment layer
3 個模糊控制器分別用于控制速度、偏航角和俯仰角。其中,速度控制器的輸入為機器魚與障礙物間的距離d,輸出為速度系數δv;偏航角和俯仰角控制器的輸入為規劃航向θ及機器魚的實際航向θ0和規劃航向θ間的偏差角e在水平和豎直方向的分量,分別為偏航角θY、偏航角偏差eY、俯仰角θP、俯仰角偏差eP,輸出分別為偏航角系數δY、俯仰角系數δP。偏航角控制器和俯仰角控制器的模糊控制規則完全一樣,只有輸入、輸出不同,速度控制器和偏航角控制器模糊控制規則如圖8 所示。

圖8 模糊控制規則:(a)速度控制器,(b)偏航角控制器Fig.8 Fuzzy control rules:(a)velocity controller,(b)yaw angle controller
經過模糊推理后,利用重心法將輸出清晰化,便可求得速度系數δv、偏航角系數δY和俯仰角系數δP,進而得到模態控制參數。模態控制參數與三個系數的關系如下:
式中,bY、bP分別為尾鰭、胸鰭偏置,km、kω、kY、kP分別為幅值因子、頻率因子、航向角因子、俯仰角因子,cm、cω分別為幅值和頻率的最小值。
模態生成層(即CPG 網絡模型)根據模態控制信號生成相應的CPG 輸出信號,并將其放大后輸出節律信號z,此外還可接受反饋協調層的調節,建立機器魚實際航向與規劃航向間的偏差角e與CPG 模型間的耦合,具有反饋機制的CPG 網絡模型微分方程為:
式中,ri為第i個CPG 的反饋值、與e有關,μ為反饋信號的影響系數,λ為輸出信號的放大系數,yi為CPG 輸出,z為模態生成層輸出。
運動控制層根據節律信號生成5 路PWM 控制信號去控制各個關節的舵機,實現多關節機器魚的游動控制。
反饋協調層將多個傳感器組成的傳感器網絡獲取的環境信息及自身狀態信息,如與障礙物的距離d、實際航向與規劃航向間的偏差角e反饋給其它層。
首先,利用MATLAB 搭建一個單位為70×70×70 的三維空間,設置山峰障礙物表示已知環境、正方體障礙物表示未知環境,設置起點坐標為(5,5,5)、設置終點坐標為(49,41,30)。路徑規劃結果如圖9 所示,可以看出利用粒子群算法可以在已知環境下生成一條較短路徑、利用人工勢場法可以避開這條路徑上新出現的未知障礙物,到達目標點。

圖9 路徑規劃Fig.9 Route planning
然后,用7 組隨機離散值表示傳感器檢測信號,模擬機器魚周圍環境和自身姿態信息,根據傳感器信息進行路徑規劃后、得到模糊控制器的輸入和輸出信號如圖10 所示。

圖10 模糊控制器:(a)輸入,(b)輸出Fig.10 Fuzzy controller:(a)inputs,(b)outputs
從輸入信號可以看出,4 s 和6 s 時的d一樣大、θY一樣大、并都小于0,eY都小于0,并且4 s 時要更小,表明4 s 和6 s 時距離障礙物一樣近、速度應相同、并都需要左轉,但4 s 時航向更偏左,所以4 s 所需左轉的角度要比6 s 小。輸出結果中,δv在4 s 和6 s 時相等,δY在4 s 和6 s 都小于0、并且6 s時更小,符合預期。因此,對波形分析得出該分層閉環控制方法可以完成自動調整控制參數、實現機器魚的避障及自動巡航。
首先,在現場進行機器魚的直游、轉彎模態的實現及切換測試。當設置CPG 參數為表2 中第一組控制參數時,實驗結果如圖11(a)所示,機器魚處于直游模態,機器魚的游動速度約為0.35 m/s;當設置CPG 參數為表2 中第四組控制參數時,實驗結果如圖11(b)所示,機器魚處于轉彎模態,機器魚的轉彎半徑約為0.32 m;當1~4 s 設置CPG 參數為表2 中第一組控制參數,5~8 s 設置CPG 參數為表2 中第四組控制參數時,機器魚模態切換實驗結果如圖11(c)所示,由圖可以看出機器魚在前4 s為直游模態、后4 s 因偏移為負而進入向左轉彎模態,機器魚可以做到模態的快速切換,并且過渡過程平滑自然。上述三組實驗表明,機器魚可以根據控制參數實現相應的模態以及模態間的切換,并且機器魚在游動游動過程中姿態協調自然,模態切換過程快速、過渡平滑。

圖11 機器魚游動模態:(a)直線游動,(b)轉彎游動,(c)模態切換Fig.11 Swimming modal of robotic fish:(a)straight-line swimming,(b)turning,(c)modal switching
然后,進行機器魚的避障及自動巡航測試。
利用現場水域的左側臺階作為單側障礙物,目標點在水域右上方,機器魚歷時4 s、可成功避開障礙物,并向目標方向游動,如圖12(a)所示。利用現場水域的兩側臺階構成L 型障礙物,目標點在水域上方,機器魚歷時6 s、可成功避開障礙物,并向目標方向游動,如圖12(b)所示。

圖12 避障實驗結果:(a)單側障礙物,(b)L 型障礙物Fig.12 Obstacle avoidance experimental results:(a)unilateral obstacle,(b)L-shaped obstacle
在現場水域設置起點和終點,如圖13(a)所示,機器魚從起點出發,向終點游動的圖像如圖13(b)所示,機器魚可以規劃出從起點到終點的路徑,并沿規劃路徑游動,到達終點,驗證了所提路徑規劃方法及軌跡跟蹤方法的有效性。

圖13 路徑規劃及軌跡跟蹤實驗結果:(a)起點和終點,(b)游動路線Fig.13 Path planning and trajectory tracking experimental results:(a)start and end points,(b)swimming route
針對機器魚的控制問題,構建了基于Hopf 振蕩器的CPG 網絡控制模型,并進一步提出了基于CPG 的分層閉環控制方法。最后,對該方法進行了仿真和現場測試,測試結果表明機器魚在基于CPG 的分層閉環控制方法下不僅可以實現多個協調自然的游動模態及模態間的平滑切換、而且可在復雜環境下進行自主巡游及避障,驗證了所提控制方法的可行性和有效性。