gym.error.UnregisteredEnv: No registered env with id: PandaReach-v2或类似env丢失问题解决

复现了一下山岳老师的强化学习训练机械臂https://zhuanlan.zhihu.com/p/491909457

遇到了一个很傻的问题,之前在用panda-gym训练时候,最后show真实效果时遇到了gym.error.UnregisteredEnv: No registered env with id: PandaReach-v2的报错。

Traceback (most recent call last):

    return self.env_specs[id]
KeyError: 'PandaReach-v2'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  
    raise error.UnregisteredEnv("No registered env with id: {}".format(id))
gym.error.UnregisteredEnv: No registered env with id: PandaReach-v2

于是我重新跑了一遍:

import gym
all_envs = gym.envs.registry.all()
for env_spec in all_envs:
    print(env_spec.id)

print出来的env里竟然真的没有PandaReach-v2,但是PandaReach-v2其实是panda-gym下载时候就会帮你注册好的环境,而且在我trian的时候我也用了这个环境,这非常奇怪,我仔细地查了python和gym的版本以及stablebaseline的版本(事实上我觉得不可能是这部分出问题)

然后我仔细地看了下我的训练代码,发现我在训练时import panda-gym,而show的python文件没有重新显示导入panda-gym。

gym.make("PandaReach-v2") 在训练中没有问题,但在列出所有环境时,却找不到 "PandaReach-v2"。这说明 "PandaReach-v2" 环境在训练时被正确地注册和使用,但在列出所有环境时,却没有被列出。

这可能是由于环境注册的时间和地点不同导致的。在训练的代码中,panda-gym 可能被正确地导入和使用,从而注册了 "PandaReach-v2" 环境。但在列出所有环境的代码中,panda-gym 可能没有被正确地导入,因此 "PandaReach-v2" 环境没有被注册。

所以我在show的python文件加了一行:

import panda_gym  # 显式地导入 panda-gym

解决了。。。

其他类似的环境问题,很可能也是因为你没有正确导入panda-gym或之类的,大家可以把环境id输出看看,排查一下是不是这个问题。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值