天天看點

Unity3D環境 強化學習 訓練機器人(TCP通訊機制)前言:一,建立自己的方塊機器人(Box Robot)二,python端

前言:

         已入強化學習一個學期了,發現自己急需一個實體環境來進行訓練機器人,前前後後參考過過許多環境,但是最後選擇了Unity3D,這是因為其足夠簡單,不用費很大的功夫就可以建立一個簡易的機器人,隻需要編寫C#腳本和tensoflow進行通訊,立馬就可以生成一個模型。對于這點,之前我找過資料看是否unity 支援python腳本,國外一老哥介紹了方法,但是我的電腦在安裝一些内容時就出錯,當我确定通訊方案已經開幹時,後面忽然發現,unity 官方也在支援機器學習,也就是2018年的事情,本質上也是通訊,但是他有許多内容都已經打包,是以需要原生态的還是需要自己建立。我采用TCP的方式,建立通訊機制,采用PPO的學習算法來進行了一些簡單的測試,效果還行,仍有許多問題需要解決。

一,建立自己的方塊機器人(Box Robot)

       建立robot是一個很有意思的過程,如下就是在多次嘗試之後的柯基犬:

Unity3D環境 強化學習 訓練機器人(TCP通訊機制)前言:一,建立自己的方塊機器人(Box Robot)二,python端

 1.添加受實體環境影響的屬性
Unity3D環境 強化學習 訓練機器人(TCP通訊機制)前言:一,建立自己的方塊機器人(Box Robot)二,python端

   添加該屬性,所建立的模型就會受到實體環境的影響,這裡至關重要,裡面可以設定運動的自由度,運動粘滞。

 2.實體的關節建立

   在嘗試unity時,一窮二白,在多次嘗試之後發現,可以使用

Unity3D環境 強化學習 訓練機器人(TCP通訊機制)前言:一,建立自己的方塊機器人(Box Robot)二,python端

這個就是旋轉Joint,裡面可以設定旋轉的上下限,可以使用馬達并設定旋轉速度,機關(deg/s),可以是用彈簧等。我建立的BoxRobot 利用了他的關節角度限制,馬達旋轉速度等參數。裡面比較重要的就是Connected Anchor這個屬性的設定,他的坐标不是依據該物體的坐标!(肢體關節不可過長,否則會在一個自由度方向發生振動,這個吃了大虧)

  3.添加摩擦

   在unity中,我所知道的是利用添加實體材質Physic Material ,裡面可以進行設定滑動摩擦和靜态摩擦,我隻在地面和腳的的地  方添加了摩擦。

Unity3D環境 強化學習 訓練機器人(TCP通訊機制)前言:一,建立自己的方塊機器人(Box Robot)二,python端

 4.編寫腳本

     對每個肢體都編寫了腳本,有資訊回報函數和參數設定函數。最後這些腳本在總的執行腳本裡面調用,執行。通訊腳本的編寫參考:unity 與 python 通訊(demo)

    對于觀測狀态,有X軸角度,Y軸角度,每條腿的角度值。激勵政策:X軸方向位移差*50 。行為:每條腿下次要轉動的角度,速度依據角度差! (我這裡的政策可能有問題,在完善中) Z軸位移為固定,隻訓練前進速度。

二,python端

       在python 端我利用了PyQt的信号機制,當然也是用了他的TCP接口,這樣做的目的使得效率較高。而且我訓練的過程也是放在了槽函數裡面!

       PPO(Proximal Policy Optimization近端政策優化)是OpenAI提出的一種DRL算法,其對于連續控制問題具有比較好的效果,已經是OpenAI在強化學習上的預設算法了。還是基于基于 

Actor-Critic

 算法,這點我比較喜歡。通俗的來講利用綜合價值優勢來進行梯度下降的,而且下降依據綜合價值*clip(0.8,1.2) (舉例),在policy上采用比例的方式,比較好的解決了步長問題。總的來說比較簡單,而且paper裡面公式都很簡單,相比DDPG來說,省了很多功夫。而且大佬們說好或許就真的好。由于可憐的硬體和時間問題,我隻嘗試了PPO算法。

三,實際結果

早期的dog:

Unity3D環境 強化學習 訓練機器人(TCP通訊機制)前言:一,建立自己的方塊機器人(Box Robot)二,python端

現在的:

Unity3D環境 強化學習 訓練機器人(TCP通訊機制)前言:一,建立自己的方塊機器人(Box Robot)二,python端

可以看出柯基的步态很有意思,在其他次的訓練中,他總是到一種局部最優的情況,就不思進取了,這裡需要改善和一些經驗指導,有可能問題就出現在機器人的模型上。具體視訊:這裡

依據tensorboard顯示的Loss我的後面波動比較大,這裡就不展示了。

接下來,準備嘗試自由度更高的模型,在激勵政策上進行優化。

-------------------------------------------------------------------

新的訓練模型

繼續閱讀