强化学习的高保真模拟环境
holodeck的Python项目详细描述
全息甲板
全息甲板是一个用于强化学习的高保真模拟器,建立在虚幻引擎4之上。 Read the docs.
安装
pip install holodeck
(需要python 3)
完整说明见Installation(包括docker)。
功能
- 7+丰富的世界用于培训代理,以及这些世界的许多场景
- 轻松扩展和修改培训方案
- 一次训练和控制多个代理
- 简单的、类似openai健身房的界面
- 高性能-模拟速度可达到2倍实时性
- 无头跑步或观看您的经纪人学习
用法
全息甲板的接口设计与OpenAI's Gym相同。 熟悉holodeck使用的最快方法是查看example.py文件。 下面是运行全息甲板世界的示例的基本演练:
importholodeckimportnumpyasnpenv=holodeck.make("UrbanCity")# Load the environment. This environment contains a UAV in a city.env.reset()# You must call `.reset()` on a newly created environment before ticking/stepping itcommand=np.array([0,0,0,100])# The UAV takes 3 torques and a thrust as a command.foriinrange(30):state,reward,terminal,info=env.step(command)# Pass the command to the environment with step.# This returns the state, reward, terminal and info tuple.
状态是传感器枚举到传感器值的字典。 奖励是从上一个动作中获得的奖励,终端指示当前 状态是一个终端状态。 信息包含其他特定于环境的信息。
如果您想访问特定传感器的数据,它与导入传感器和 从状态字典中检索正确的值:
fromholodeck.sensorsimportSensorsprint(state[Sensors.LOCATION_SENSOR])
控制方案
holodek支持不同代理的不同控制方案。 目前唯一具有多种控制方案的智能体是无人机智能体。 控制方案的切换如下:
fromholodeck.agentsimportControlSchemesenv.set_control_scheme('uav0',ControlSchemes.UAV_ROLL_PITCH_YAW_RATE_ALT)
有关更多控制方案,请查看docs
多代理环境
holodeck支持多代理环境。界面有点不同,但仍然很容易使用。
与其调用step
将命令传递给主代理并标记游戏,不如调用act
。
act
向特定代理提供命令,但不在游戏中打勾。
一旦所有代理都收到他们的操作,您就可以调用tick
来勾选游戏。
在act之后,每次调用tick时,都会向代理提供相同的命令。
要更改命令,只需再次调用act。
env=holodeck.make('CyberPunkCity')env.reset()env.act('uav0',np.array([0,0,0,100]))env.act('nav0',np.array([0,0,0]))foriinrange(300):s=env.tick()
从tick返回的状态也有些不同。 状态现在是从代理名称到传感器字典的字典。 您可以按如下方式访问无人机的奖励、终端和位置:
s['uav0'][Sensors.REWARD]
s['uav0'][Sensors.TERMINAL]
s['uav0'][Sensors.LOCATION_SENSOR]
文档
在Linux中使用OpenGL3
要在Linux中使用OpenGL3,请更改holodeck.make中的参数:
from Holodeck import Holodeck
env = Holodeck.make("MazeWorld", Holodeck.GL_VERSION.OPENGL3)
在无头机器上运行全息甲板
全息甲板可以运行在无头机器与GPU加速渲染。这不需要额外的配置。全息甲板将自动检测到机器是无头的,并相应地配置它的渲染过程。
引文:
@misc{HolodeckPCCL,
Author = {Joshua Greaves and Max Robinson and Nick Walton and Mitchell Mortensen and Robert Pottorff and Connor Christopherson and Derek Hancock and Jayden Milne David Wingate},
Title = {Holodeck: A High Fidelity Simulator},
Year = {2018},
}