• 强化学习环境 - robogym - 学习 - 1


    强化学习环境 - robogym - 学习 - 1

    项目地址

    https://github.com/openai/robogym

    为什么选择 robogym

    1. 自己的项目需要做一些机械臂 table-top 级的多任务操作

    2. robogym 基于 mujoco 搭建,构建了一个仿真机械臂桌面物体操作(pick-place、stack、rearrange)场景

    3. robogym 的例程效果看,支持多个相机视角,包括眼在手上和眼在手外,可以获取多视角视觉信息

    4. robogym 的物体支持 YCB 数据集格式

    主要是这些原因,当然,看官方 readme.md 文档,它还有其他不错的功能。

    国内主流社区对 robogym 的介绍比较少,所以选择写一些文档记录一下,作为参考。

    安装

    这里提供我的参考,倘若遇到其他bug还需要查找资料解决!

    前提:你需要提前安装好 mujoco 200 、对应的 mujoco-py 和 Open AI gym(我选择0.12.0版本)。

    创建 conda 环境:

    conda create -n robogym python=3.7
    
    • 1

    启动这个 conda 环境:

    conda activate robogym
    
    • 1

    从 github 上下载包文件(我下载到了 /home/xxx/ 目录下):

    git clone https://github.com/openai/robogym.git
    
    • 1

    进入这个包文件:

    cd robogym/
    
    • 1

    执行安装命令:

    pip install -e .
    
    • 1

    等待安装即可!

    还需要安装 pytorch ,推荐使用离线安装办法。链接:【https://blog.csdn.net/weixin_47142735/article/details/113684365】

    至此,需要安装的就基本完成。

    测试

    需要一个 pycharm/vscode ,然后初始化一个 project/文件夹,与 robogym 的 conda 环境产生关联。

    创建一个代码 test1.py

    下面这个代码是我基于例程改的,可以作为测试。

    from robogym.envs.rearrange.blocks import make_env
    
    # Create an environment with the default number of objects: 5
    env = make_env(
        parameters={
            'simulation_params': {
                'num_objects': 5,
                'max_num_objects': 8,
            }
        }
    )
    
    # Acquire number of objects parameter interface
    param = env.unwrapped.randomization.get_parameter("parameters:num_objects")
    
    # Set num_objects: 3 for the next episode
    param.set_value(3)
    
    
    # Reset to randomly generate an environment with `num_objects: 3`
    obs = env.reset()
    while True:
        a = env.action_space.sample()
        env.step(a)
        env.render()
    
    from robogym.envs.rearrange.blocks import make_env
    
    # Create an environment with the default number of objects: 5
    env = make_env(
        parameters={
            'simulation_params': {
                'num_objects': 5,
                'max_num_objects': 8,
            }
        }
    )
    
    # Acquire number of objects parameter interface
    param = env.unwrapped.randomization.get_parameter("parameters:num_objects")
    
    # Set num_objects: 3 for the next episode
    param.set_value(3)
    
    
    # Reset to randomly generate an environment with `num_objects: 3`
    obs = env.reset()
    while True:
        a = env.action_space.sample()
        env.step(a)
        env.render()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 右键点击运行,会报这个错误:

      ModuleNotFoundError: No module named 'attr'
      
      • 1

      执行命令,解决:

      pip install attrs
      
      • 1
    • 右键点击运行,继续报这个错误:

      Please add following line to .bashrc:
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xxx/.mujoco/mujoco210/bin
      
      • 1
      • 2

      我是用pycharm的,在 Run -> Edit Configurations... -> Environment Variables 这里,把 LD_LIBRARY_PATH/home/xxx/.mujoco/mujoco210/bin 添加进去。

    • 右键点击运行,继续报这个错误:

      Please add following line to .bashrc:
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia
      
      • 1
      • 2

      同样,在 Run -> Edit Configurations... -> Environment Variables 这里,把 LD_LIBRARY_PATH/usr/lib/nvidia 添加进去。

    • 右键点击运行,继续报这个错误:

      Cython.Compiler.Errors.CompileError: /home/xxx/anaconda3/envs/robogym/lib/python3.7/site-packages/mujoco_py-2.1.2.14-py3.7.egg/mujoco_py/cymj.pyx
      
      • 1

      原因是 Cython 的包版本不对,重新安装即可。

      pip install Cython==3.0.0a10
      
      • 1

    接下来就可以运行了,第一次运行比较慢,因为 Cython 做一些初始化操作占据了时间,warnnings 不影响。

    效果如下:

    1

    2

  • 相关阅读:
    2022-08-22 第六小组 瞒春 学习笔记
    单例模式(饱汉式和饿汉式)
    springboot连接rabbitmq报错:Failed to checkredeclare auto-delete queue(s)
    LeetCode每日一题:1488. 避免洪水泛滥(2023.10.13 C++)
    1款可以美颜变妆换装的虚拟人SDK|Android
    Python和Matplotlib电磁一维二维三维模拟
    k8s权限控制RBAC
    FPC焊点剥离失效分析
    一百七十四、Hive——Hive动态分区表加载数据时需不需要指定分区名?
    java高级用法之:无所不能的java,本地方法调用实况
  • 原文地址:https://blog.csdn.net/m0_48948682/article/details/133563225