Python 如何创建具有多种功能的OpenAI健身房观察空间
使用Python3.6、Ubuntu 18.04、Gym 0.15.4、RoS melodic、Tensorflow 1.14和RLU coach 1.01: 我建立了一个定制的健身房环境,使用360元素阵列作为观察空间Python 如何创建具有多种功能的OpenAI健身房观察空间,python,python-3.x,ros,reinforcement-learning,openai-gym,Python,Python 3.x,Ros,Reinforcement Learning,Openai Gym,使用Python3.6、Ubuntu 18.04、Gym 0.15.4、RoS melodic、Tensorflow 1.14和RLU coach 1.01: 我建立了一个定制的健身房环境,使用360元素阵列作为观察空间 high = np.array([4.5] * 360) #360 degree scan to a max of 4.5 meters low = np.array([0.0] * 360) self.observation_space = spaces.Box(low, h
high = np.array([4.5] * 360) #360 degree scan to a max of 4.5 meters
low = np.array([0.0] * 360)
self.observation_space = spaces.Box(low, high, dtype=np.float32)
但是,这还不足以通过ClippedPO algo进行正确训练,我想在我的状态中添加其他功能,包括:
在世界上的位置(x,y坐标)世界中的方向(四元数:x、y、z、w) 线性轨迹(x、y、z坐标) 角轨迹(x,y,z坐标) 我将上述四个特性放入它们自己的np.array中,并尝试将它们作为state对象传递回去,但显然它与观测空间不匹配。这个空盒子把我弄糊涂了。我假设我无法将所有这些特性转储到一个np数组中,因为上限和下限将不同,但是,我无法确定如何创建具有多个“特性”的spaces.Box对象
TIA请查看
健身房空间元组课程
另外,您可以看看我是如何将其用于我自己的ROS环境的,您需要的是:
导入健身房
空格={
“位置”:gym.spaces.Box(低=0,高=100,形状=(2,),
“方向”:。。。
}
dict_space=gym.spaces.dict(spaces)
我查看了您的源代码以及如何返回gym.spaces.Tuple
对象作为观察值。但是至少StableBaselines3中的RL算法不支持Tuple
观察值或动作空间。您能告诉我您使用了哪种算法吗?您知道支持Dict
观察值的RL算法吗ces?我找不到一个,StableBaselines3的文档说,Tuple
和Dict
不受支持。@Philipp我一直在使用PPO,从框架中观察到Dict
。据我所知,框架中的所有/大部分算法(有很多!)支持Dict
observations.@CGFoX因此,当您训练代理时,Ray RLlib会直接连接所有Dict观测,还是每个值都有一个单独的NN()关于Dict?@SatyaPrakashDash,我不是100%确定,但我相信RLlib只是将值连接到单个向量,并将向量传递到单个NN。也就是说,Dict中的每个条目都没有单独的NN。通常,这是您想要的,因为您需要一个NN输出(值、动作等)基于所有观察结果,而不是基于部分观察结果的多个输出。@CGFoX是的,我也这么认为。谢谢。