欢迎光临
我们一直在努力

OpenAI发布基于Bullet物理引擎集成Gym的机器人仿真开发环境Roboschool!

机器人仿真开源软件Roboschool首发,与OpenAI Gym高度整合。

以三种策略控制三个不同的机器人在Roboschool中赛跑。可以通过运行agent_zoo /demo_race1.py重新建立此场景。每次运行脚本时,会出现随机的一组机器人。

Roboschool作为新的OpenAI 训练场(OpenAI Gym)开发环境为机器人仿真控制提供了可能。其中八个开发环境可以免费替代现有预设的MuJoCo环境,它们可以重新调整以产生更逼真的运动。此外,我们还包括几个全新的更具有挑战性的环境。

Roboschool的发布也使得在同一个环境中同时训练多个机器人变得容易。在我们推出OpenAI训练场后,许多用户向我们反馈,MuJoCo组件需要付费许可证(尽管MuJoCo最近为个人和高校增加了免费学生许可证)。现在,开源的Roboschool取消了这一限制,让每个人都在无需担心预算的情况下进行他的研究。 Roboschool基于Bullet物理引擎,这是一个开放源代码许可的物理库,已被其他仿真软件(如Gazebo和V-REP)使用。

开发环境

Roboschool发布时带有十二个设定环境,其中不仅包括Mujoco用户熟悉的任务,还包括了一些更新,更具挑战性的任务,如更高难度的人型机器人步行任务,以及多玩家乒乓球游戏任务。我们在今后会不断丰富我们的环境任务集,同时也对开源社区的贡献充满期待。

对于现有的MuJoCo环境,除了将其移植到Bullet之外,我们也对其进行了更贴近现实的改进。以下是经过我们移植的三种环境,并通过比较说明了它们与现有环境的不同之处。

您可以在GitHub中agent_zoo文件夹中找到针对所有这些环境的训练策略。此外,你还可以通过demo_race脚本来运行三个机器人之间的比赛。

交互性和鲁棒性控制

在之前的几个OpenAI训练场环境中,任务目标是学习一个步行控制器。然而,在该环境任务只是涉及到简单的向前推进。在实际应用中,机器人的步行策略只是简单学习到一个循环轨迹,并没有访问到其余大部分状态空间。因此,最终学习到的策略往往是非常脆弱的:一个小小的推动通常会导致机器人失败摔倒。

在发布的Roboschool中我们已经添加了两个包含3D人形机器人的环境,这使得机器人运动问题变得更加有趣和具有挑战性。这些环境需要交互式控制 - 机器人必须朝向一个标志运行,而标志的位置会随时间随机变化。

机器人的任务目标是不断朝着位置随机变化的标志奔跑。HumanoidFlagrun环境用来展示如何让机器人学习减速和转弯。此外,HumanoidFlagrunHarder环境还允许机器人跌倒,并给予其时间重新站起来回到步行状态。在每次运行开始时,机器人处于直立或平躺在地面上的状态,同时它会不断被白色的立方体轰炸,来将机器人推离原有的轨迹。

我们为HumanoidFlagrun和HumanoidFlagrunHarder环境提供成熟的训练策略。在这些训练策略中,机器人的不行并不像我们普通人那样快速和自然,但这些训练策略可以允许机器人从许多复杂情况中恢复,他们知道如何动作。这个训练策略本身是一个没有内部状态的多层感知器,所以我们推断,在某些情况下,机器人通过其手臂的姿态来存储运动信息。

两位机器人通过彼此对抗学习玩RoboschoolPong

Roboschool允许您在同一环境中运行和训练多个机器人。我们接下来通过RoboschoolPong来展示这一特性,同时它也可以应用到其余很多环境中。通过多人训练,您可以训练同一机器人(它可以自己和自己玩),也可以使用相同的算法训练两个不同的机器人,甚至可以设置两种不同的算法相互对抗。

多人训练的设置也提出了一些有意思的挑战。如果你同时训练两个机器人,您可能会看到它们的学习曲线,从梯度控制算法中所得学习曲线如下图所示。

乒乓球控制游戏学习曲线,其中策略更新与策略梯度控制算法同时运行。

乒乓球控制游戏学习曲线,其中策略更新与策略梯度控制算法同时运行。

在算法运行的过程中,发生了以下的情况:

机器人2(紫色)发现它的对手处于顶端,所以它将球发送到底部。

机器人1最终发现它可以通过移动到底部来保卫自己,但现在总是保持在底部,因为机器人2总是将球发送到底部。

这样,生成的控制策略就会不断迭代变化,经过几个小时的训练,两个机器人都没有学到任何有用的东西。在生成对抗网络中,在对抗环境中学习是比较复杂的,但却是一个有趣的值得研究的问题,因为即使在简单的环境中,这种相互作用也可以生成复杂的策略,并且可以提供非常自然的解决方案。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。