劉煦+林信桐
【摘 要】本文采取的是基于視覺的強化學習算法,利用攝像頭平臺檢測機器魚在水中的狀態(tài),將采樣數(shù)據(jù)傳入計算機中,利用強化學習算法得出機器魚采取的下一組運動參數(shù),并將運動參數(shù)以無線通信的方式發(fā)送到機器魚中指導機器魚的運動。本文的目的就是利用強化學習算法解決機器魚運動控制模式的優(yōu)化問題。
【關鍵詞】機器魚;運動控制模式;強化學習算法
1 優(yōu)化過程的實現(xiàn)
在機器魚運動模式的優(yōu)化系統(tǒng)中,整個用于優(yōu)化的強化學習算法過程都可以在計算機上得以實現(xiàn)。所以軟件結構的建立并不是難點。但是在優(yōu)化系統(tǒng)中還包括了機器魚、狀態(tài)檢測機構等。這些部分必須依賴硬件,不可能在計算機內(nèi)部來實現(xiàn)。這樣機器魚運動狀態(tài)的檢測以及各部分之間數(shù)據(jù)的傳輸就成為了問題的關鍵。對于我們構建的整個優(yōu)化系統(tǒng)的結構來講,有兩個部分必須依賴于特定的硬件。這兩個部分就是機器魚運動狀態(tài)的檢測以及計算機與機器魚之間的通信。
1.1 基于視覺的機器魚運動模式檢測
為了能夠利用強化學習算法兌機器魚的運動狀態(tài)進行優(yōu)化,我們必須要檢測到機器魚在當前的運動參數(shù)下的運動狀態(tài)。有了運動狀態(tài)的采樣參數(shù),才能夠?qū)ζ溥M行評價,得出獎勵值,使整個優(yōu)化過程得到實現(xiàn)。
針對檢測機器魚運動狀態(tài)的問題,最直接的方式就是采取視覺的方式對機器魚的運動狀態(tài)進行采樣。于是我們采用了視覺檢測模塊進行檢測。在此,我們采用了實驗室已經(jīng)成熟的維視科技生產(chǎn)的攝像頭物體檢測平臺。
1.2 無線通信
機器魚在水中運動,如果采用有線的通信方式會因為導線施加的力量對機器魚的運動狀態(tài)產(chǎn)生干擾。并且安裝導線需要在機器魚表面打孔,這樣在防水上也存在缺陷。為了有利于優(yōu)化,所以在計算機與機器魚的通信中應該使用無線的方式對機器魚的運動參數(shù)進行傳輸??紤]到機器魚內(nèi)部體積和防水的因素,我們選擇了工作頻率為2.4GHz的無線收發(fā)模塊NRF24L01,這款無線收發(fā)模塊需要用程序的方式模擬SPI總線的時序才能夠工作。
在機器魚的內(nèi)部,空間非常有限而且伸出體外的棒狀天線必然會影響機器魚的防水。所以這款于電路板上集成了內(nèi)置天線的無線收發(fā)模塊非常適合于機器魚的使用。我們將其安裝在機器魚頭內(nèi)部的上方,以保證通信的暢通。但是這款無線收發(fā)模塊使用的是SPI總線的驅(qū)動方式,不能和計算機接口直接相連。所以我們讓計算機通過串口分三次向STC89C52單片機發(fā)送三個運動參數(shù)(A1,A2,θ),STC89C52單片機收到運動參數(shù)后在通過連接于單片機上的nRF24L01無線收發(fā)模塊將數(shù)據(jù)一次性發(fā)送到控制機器魚的STC89C52單片機中。再由機器魚使用的單片機將數(shù)據(jù)運算成為控制數(shù)據(jù),并存儲于控制表中。
2 實驗及結論
2.1 機器魚運動參數(shù)范圍和優(yōu)化步長的確定
由于機器魚使用的舵機的轉(zhuǎn)角限度為120°,我們將機器魚舵機的初始位置調(diào)節(jié)至轉(zhuǎn)角范圍的中心。這樣在機器魚中,關節(jié)向一邊的扭動范圍理論上就有60°。那么機器魚轉(zhuǎn)動角度的幅值就可以設置為60°。但是在試驗中,舵機在接近轉(zhuǎn)動范圍極限的時候,會出現(xiàn)不穩(wěn)定以及抖動的情況。所以我們將機器魚轉(zhuǎn)動角度的幅值設置為50°。此外,需要有一個固定的相位差θ。由于采用鱒行式的魚類的體長都小于自身體波的波長,也就是魚頭到魚尾的擺動相位差小于2π。且根據(jù)采用鱒行式的魚類的身體擺動部分是后1/2這一特點,我們將機器魚的兩臺舵機的軸都安裝在了機器魚的后半部分。于是我們可以肯定,機器魚兩臺舵機的相位差應該在0到π之間。
于是,我們得到機器魚三個運動參數(shù)(A1,A2,θ)的取值范圍。這個范圍就是0 機器魚使用的舵機,其轉(zhuǎn)角的控制精度為1°。所以我們沒有必要對兩個舵機的轉(zhuǎn)角幅值的精度要求過高,其步長設置為1就可以。換算之后的相位差的取值范圍是0<θ<64。其取值步長還是為1,大約相當于3°。 2.2 機器魚運動模式的優(yōu)化實驗和結論 距離閾值決定了在檢測區(qū)域中搜索標志物的范圍。在檢測的程序中,在沒有檢測到標志物的時候是全范圍搜索,當檢測到標志物后,下一個采樣周期會以上一次檢測到標志物的點作為圓心,在一定的半徑內(nèi)搜索標志物。距離閾值就代表了半徑。如果設置值過小,可能就會導致下一次搜索不到標志物得情況。設置值過小,就會導致搜索范圍過大,影響實時性。通常的調(diào)節(jié)方式是,標志物的速度越快,取值就應該相應增加。我們在整個實驗過程中,由于機器魚的速度不斷加快,所以多次調(diào)節(jié)了距離閾值的取值。在檢測參數(shù)確定之后就是反復多次的進行實驗。 在實驗中,我們始終保持機器魚的體波頻率在1Hz。經(jīng)過多次機器魚運動控制模式的優(yōu)化實驗,我們得到了機器魚的運動控制模式的一組較好的參數(shù),可以滿足機器魚的使用。經(jīng)過多次實驗,我們一共對機器魚的參數(shù)ω1取了四組不同的取值。但是不管對機器魚的獎勵函數(shù)的權值如何改變,機器魚始終向著速度更快,頭部擺動更小的方向改變。只是在優(yōu)化的收斂時間和優(yōu)化過程有所不同。 在實驗開始時,首先我們采取了一組初始的運動參數(shù)發(fā)送到機器魚中。這組參數(shù)的三個值(A1,A2,θ)都是在各自取值范圍內(nèi)的隨意值。 由實驗可以看到,機器魚的兩個驅(qū)動舵機并不是沒有運動,相反兩個舵機的轉(zhuǎn)角還是比較大的。但是由于轉(zhuǎn)角幅值A1、A2和兩個舵機的轉(zhuǎn)角相位差θ的取值搭配不合理,機器魚的尾部始終處于擺動很小的狀態(tài)。身體側(cè)向上的運動更多的是自身的扭動而不是有效的推水擺動。這樣并沒有帶來良好的推進效率。參照圖中水下的參照物,機器魚幾乎沒有向前的運動。接近于一種原地擺頭的狀況。根據(jù)視頻的觀察,機器魚游過整個屏幕大約1.2m的長度,時間超過了30s,這是難以接受的。 在我們的優(yōu)化目標中,優(yōu)化了機器魚的速度。在達到一定速度的情況下,魚類為了保持這樣的高速,必然會減小擺頭的幅度。這樣才能保證在一定的推進效率的基礎上,減小機器魚在水中受到的阻力,節(jié)省能量。這樣的參數(shù)會在對機器魚速度的優(yōu)化中達到要求。沒有優(yōu)化之前的運動狀態(tài)速度是很慢的。 隨后,我們使用四組數(shù)據(jù)各自進行了幾次優(yōu)化試驗,在所有的優(yōu)化試驗中,機器魚的三個運動參數(shù)稍有不同,但是差距很小。由于驅(qū)動機器魚的舵機的轉(zhuǎn)角定位精度的限制,所以不能夠完全的表現(xiàn)出計算機的計算結果。因此有幾組試驗數(shù)據(jù)在收斂的時候都有微小的波動,并未出現(xiàn)一個確定的值,但是這樣的波動幅度微小,可以接受。我們可以把這組數(shù)據(jù)視為是收斂的。在所有的結果數(shù)據(jù)中,我們制作的機器魚1號舵機的轉(zhuǎn)角幅值均小于10,2號舵機的幅值范圍在27至33之間有所波動。兩個舵機的相位差幾乎都集中于30左右,也就是略小于90°。 我們最終得到的優(yōu)化結果為:1號舵機轉(zhuǎn)角幅值為5°,2號舵機轉(zhuǎn)角幅值為30°,兩臺舵機之間相位差為90°。 由實驗可知,機器魚的擺動部分集中于身體的后半部分,而前半部分基本上可以視作剛性的結構。以水下的橫線作為參考標志,機器魚的頭部并沒有出現(xiàn)大幅度的擺動。在體波頻率為1Hz的情況下,速度大約為0.3m/s。 但是因為機器魚所處的魚缸體積狹小,在系統(tǒng)改變機器魚的運動參數(shù)之前的機器魚的運動和人為的操作帶來的水流會對改變運動參數(shù)之后的運動產(chǎn)生一定的影響,而且機器魚的舵機精度也有限,所以不能完全表現(xiàn)出優(yōu)化程序得到的結果。在這樣的條件下我們得到的并不是最優(yōu)解,而是可以接受的次優(yōu)解。但是還是在一定的程度上解決了機器魚運動控制模式的問題,取得了良好的效果。 【參考文獻】 [1]戴坡.仿生機器魚的控制系統(tǒng)設計與實驗研究[D].哈爾濱:哈爾濱工業(yè)大學,2006. [2]梁建宏,王田苗,魏洪興.水下仿生機器魚的研究進展Ⅰ—魚類推進機理[J].機器人,2002,24(2):107-111. [責任編輯:王偉平]