python - 如何创建具有多种功能的 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 和 rl_coach 1.01:

我已经构建了一个使用 360 元素数组作为观察空间的自定义 Gym 环境。

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)

但是,这不足以通过 ClippedPPO 算法进行正确训练,我想为我的状态添加其他功能,包括:

在世界中的位置(x,y 坐标)
世界方向(四元数:x,y,z,w)
线性轨迹(x,y,z 坐标)
角轨迹(x,y,z 坐标)。

我把上面的四个特征放到他们自己的np.arrays中,并试图将它们作为状态对象全部传回去,但显然它与观察空间不匹配。 space.Box 让我很困惑。我假设我无法将所有这些功能转储到单个 np 数组中,因为上限和下限会有所不同,但是,我无法确定如何创建具有多个“功能”的 space.Box 对象。

TIA

最佳答案

gym.spaces.Dict 是你需要的:

import gym

spaces = {
  'position': gym.spaces.Box(low=0, high=100, shape=(2,),
  'orientation': ...
}
dict_space = gym.spaces.Dict(spaces)

关于python - 如何创建具有多种功能的 OpenAI Gym 观察空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58964267/

相关文章:

python-3.x - 如何在 pandas.dataframe 中执行行间操作

python - 读取某些行编码错误的 csv 文件并向用户返回错误行

ros - 未检测到命令 -> roscd : command not found

python - 如何快速创建一个 numpy 或 pandas 二维数组,其中两个轴都在一个范围内并且值是一个产品?

python - 如何在 python 上生成安全 session_id ?

ros - 未找到 Catkin 命令

python - 导入rospy和roslib库时出现问题

python - 在 Python 中,如何从一个或多个列表中删除重复项?

python - 使用sqlalchemy创建一个mysql数据库

python - Django 分页对象与 Postgresql QuerySets 有问题