Shortcuts

BipedalWalker

概述

BipedalWalker是Gym中经典的一个双足四关节机器人环境,机器人需要在1600个时间步中得到300分方可通关这一环境。在这个环境中,机器人需要与环境不断交互,并最终习得跑步、跳跃、处理不同地形的运动方式等一系列技能。

../_images/bipedal_walker.gif

安装

安装方法

安装 gym 和 box2d 两个库即可,可以通过 pip 一键安装或结合 DI-engine 安装

# Method1: Install Directly
pip install gym
pip install box2d
# Method2: Install with DI-engine requirements
cd DI-engine
pip install ".[common_env]"

验证安装

安装完成后,可以通过在 Python 命令行中运行如下命令验证安装成功:

import gym
env = gym.make('BipedalWalker-v3')
obs = env.reset()
print(obs.shape)  # (24,)

镜像

DI-engine 的镜像包含自有框架和 Atari 环境,可通过docker pull opendilab/ding:nightly获取. 如何获取更多镜像? 访问docker hub

变换前的空间(原始环境)

观察空间

  • 机器人的状态是由船体角速度(hull angle speed)、角速度、水平速度、垂直速度、关节位置和关节角速度、腿与地面的接触标记以及 10 次激光雷达测距仪的测量值组成的24维向量。需要注意的是 该状态向量中不包含机器人的坐标

动作空间

  • 环境动作空间为 4 维的连续向量,每个维度的值在 [-1,1] 之间。

  • 这四维的连续向量分别控制机器人四个腿关节的扭矩。机器人共有 2 条腿,每条腿有两个关节(腰关节和膝关节), 一共 4 个关节需要控制。

奖励空间

  • 机器人驱动关节转动将得到少量的负奖励,前进则获得少量的正奖励,成功移动到最远端累计可以得到超过 300 分的奖励。如果机器人途中摔倒,会得到 -100 的奖励,且游戏结束。 奖励是一个float数值,范围是 [-400, 300]。

其他

随机种子

  • 环境中有两部分随机种子需要设置,一是原始环境的随机种子,二是各种环境变换使用到的随机库的随机种子(例如randomnp.random

  • 对于环境调用者,只需通过环境的seed方法进行设置这两个种子,无需关心具体实现细节

  • 环境内部的具体实现:对于原始环境的种子,在调用环境的reset方法内部,具体的原始环境reset之前设置

  • 环境内部的具体实现:对于随机库种子,则在环境的seed方法中直接设置该值

存储录像

在环境创建之后,重置之前,调用enable_save_replay方法,指定游戏录像保存的路径。环境会在每个 episode 结束之后自动保存本局的录像文件。(默认调用gym.wrappers.RecordVideo实现 ),下面所示的代码将运行一个环境 episode,并将这个episode 的结果保存在./video/中:

from easydict import EasyDict
from dizoo.box2d.bipedalwalker.envs import BipedalWalkerEnv
import numpy as np

env = BipedalWalkerEnv(EasyDict({'act_scale': True, 'rew_clip': True, 'replay_path': './video'}))
obs = env.reset()

while True:
   action = np.random.rand(24)
   timestep = env.step(action)
   if timestep.done:
       print('Episode is over, eval episode return is: {}'.format(timestep.info['eval_episode_return']))
       break

DI-zoo 可运行代码示例

完整的训练配置文件在 github link 内,对于具体的配置文件,例如 bipedalwalker_td3_config.py ,使用如下命令即可运行:

python3 ./DI-engine/dizoo/bipdalwalker/config/box2dbipedalwalker_td3_config.py

基准算法性能

  • 平均奖励大于等于 300 视为表现较好的智能体

    • BipedalWalker + TD3

    ../_images/bipedalwalker_td3.png