機器人仿真開源軟件Roboschool首發(fā),與OpenAI Gym高度整合。
以三種策略控制三個不同的機器人在Roboschool中賽跑??梢酝ㄟ^運行agent_zoo /demo_race1.py重新建立此場景。每次運行腳本時,會出現(xiàn)隨機的一組機器人。
Roboschool作為新的OpenAI 訓練場(OpenAI Gym)開發(fā)環(huán)境為機器人仿真控制提供了可能。其中八個開發(fā)環(huán)境可以免費替代現(xiàn)有預設的MuJoCo環(huán)境,它們可以重新調(diào)整以產(chǎn)生更逼真的運動。此外,我們還包括幾個全新的更具有挑戰(zhàn)性的環(huán)境。
Roboschool的發(fā)布也使得在同一個環(huán)境中同時訓練多個機器人變得容易。在我們推出OpenAI訓練場后,許多用戶向我們反饋,MuJoCo組件需要付費許可證(盡管MuJoCo最近為個人和高校增加了免費學生許可證)?,F(xiàn)在,開源的Roboschool取消了這一限制,讓每個人都在無需擔心預算的情況下進行他的研究。 Roboschool基于Bullet物理引擎,這是一個開放源代碼許可的物理庫,已被其他仿真軟件(如Gazebo和V-REP)使用。
開發(fā)環(huán)境
Roboschool發(fā)布時帶有十二個設定環(huán)境,其中不僅包括Mujoco用戶熟悉的任務,還包括了一些更新,更具挑戰(zhàn)性的任務,如更高難度的人型機器人步行任務,以及多玩家乒乓球游戲任務。我們在今后會不斷豐富我們的環(huán)境任務集,同時也對開源社區(qū)的貢獻充滿期待。
對于現(xiàn)有的MuJoCo環(huán)境,除了將其移植到Bullet之外,我們也對其進行了更貼近現(xiàn)實的改進。以下是經(jīng)過我們移植的三種環(huán)境,并通過比較說明了它們與現(xiàn)有環(huán)境的不同之處。

您可以在GitHub中agent_zoo文件夾中找到針對所有這些環(huán)境的訓練策略。此外,你還可以通過demo_race腳本來運行三個機器人之間的比賽。
交互性和魯棒性控制
在之前的幾個OpenAI訓練場環(huán)境中,任務目標是學習一個步行控制器。然而,在該環(huán)境任務只是涉及到簡單的向前推進。在實際應用中,機器人的步行策略只是簡單學習到一個循環(huán)軌跡,并沒有訪問到其余大部分狀態(tài)空間。因此,最終學習到的策略往往是非常脆弱的:一個小小的推動通常會導致機器人失敗摔倒。
在發(fā)布的Roboschool中我們已經(jīng)添加了兩個包含3D人形機器人的環(huán)境,這使得機器人運動問題變得更加有趣和具有挑戰(zhàn)性。這些環(huán)境需要交互式控制 - 機器人必須朝向一個標志運行,而標志的位置會隨時間隨機變化。
機器人的任務目標是不斷朝著位置隨機變化的標志奔跑。HumanoidFlagrun環(huán)境用來展示如何讓機器人學習減速和轉(zhuǎn)彎。此外,HumanoidFlagrunHarder環(huán)境還允許機器人跌倒,并給予其時間重新站起來回到步行狀態(tài)。在每次運行開始時,機器人處于直立或平躺在地面上的狀態(tài),同時它會不斷被白色的立方體轟炸,來將機器人推離原有的軌跡。
我們?yōu)镠umanoidFlagrun和HumanoidFlagrunHarder環(huán)境提供成熟的訓練策略。在這些訓練策略中,機器人的不行并不像我們普通人那樣快速和自然,但這些訓練策略可以允許機器人從許多復雜情況中恢復,他們知道如何動作。這個訓練策略本身是一個沒有內(nèi)部狀態(tài)的多層感知器,所以我們推斷,在某些情況下,機器人通過其手臂的姿態(tài)來存儲運動信息。
兩位機器人通過彼此對抗學習玩RoboschoolPong
Roboschool允許您在同一環(huán)境中運行和訓練多個機器人。我們接下來通過RoboschoolPong來展示這一特性,同時它也可以應用到其余很多環(huán)境中。通過多人訓練,您可以訓練同一機器人(它可以自己和自己玩),也可以使用相同的算法訓練兩個不同的機器人,甚至可以設置兩種不同的算法相互對抗。
多人訓練的設置也提出了一些有意思的挑戰(zhàn)。如果你同時訓練兩個機器人,您可能會看到它們的學習曲線,從梯度控制算法中所得學習曲線如下圖所示。
乒乓球控制游戲?qū)W習曲線,其中策略更新與策略梯度控制算法同時運行。

乒乓球控制游戲?qū)W習曲線,其中策略更新與策略梯度控制算法同時運行。
在算法運行的過程中,發(fā)生了以下的情況:
機器人2(紫色)發(fā)現(xiàn)它的對手處于頂端,所以它將球發(fā)送到底部。
機器人1最終發(fā)現(xiàn)它可以通過移動到底部來保衛(wèi)自己,但現(xiàn)在總是保持在底部,因為機器人2總是將球發(fā)送到底部。
這樣,生成的控制策略就會不斷迭代變化,經(jīng)過幾個小時的訓練,兩個機器人都沒有學到任何有用的東西。在生成對抗網(wǎng)絡中,在對抗環(huán)境中學習是比較復雜的,但卻是一個有趣的值得研究的問題,因為即使在簡單的環(huán)境中,這種相互作用也可以生成復雜的策略,并且可以提供非常自然的解決方案。