Simulation-Control panda with RL

  本人的第一个强化学习实战小项目,仿真panda机械臂的控制,用到了stable-baslines3 + panda-gym + gym (gymnasium)。Stable-baslines3是目前学界主流且友好的RL库,panda-gym是在gym的基础上以panda机械臂为模型建立了6个任务环境。

环境搭建

我的显卡:NVIDIA GeForce RTX 3080 Laptop GPU 准备工作:Python 3.7 + CUDA 11.7 + PyTorch 1.13.1

  环境搭建主要参考了这篇文章,但是遇到了一些问题,所以记录一下。

1. 安装gym或gymnasium

pip install gym #最小环境安装
pip install --upgrade gym[all] #完整安装,包含所有依赖库

  我在用pip进行完整安装的过程中报错,所以改用gym源码进行安装,将源码gitclone后进入相应路径执行pip install –e '.[all]',安装完成后可以将gym的安装目录写进环境变量,在.bashrc中加入export PYTHONPATH=你的gym目录:$PYTHONPATH

  Gym现在已经升级为了Gymnasium,所以import gym可能无法正常使用,替换成import gymnasium as gym即可。这里我安装的还是gym的最新发行版0.26.2,因为我是在后续有些环境无法打开的时候才发现了这个问题。

  下面是一个测试程序,有两个注意点:(1) “CartPole-v0” 已经过时,(2)在导入环境的时候一定要指定render_mode。执行下面的代码之后,应该就能看到强化学习中的“hello world”——车杆模型了(在控制领域中,我们一般称它为一级直线倒立摆)。

import gymnasium as gym      

env_name = "CartPole-v1"
env = gym.make(env_name, render_mode="human")          # 导入环境

print(type(env.action_space))

episodes = 10
for episode in range(1, episodes + 1):
    state = env.reset()           
    done = False
    score = 0

    while not done:
        env.render()                           # 渲染环境
        action = env.action_space.sample()     # 随机采样动作
        n_state, reward, done, info, _ = env.step(action)    # 和环境交互,得到下一个状态,奖励等信息
        score += reward                        # 计算分数
    print("Episode : {}, Score : {}".format(episode, score))

env.close()     # 关闭窗口

2. 安装panda-gym

pip install panda-gym

  我安装的是v3.0.6版本,因为panda-gym与gym的版本需要匹配。安装方法可以参考官方安装指南(包含测试程序)。

3. 安装stable-baslines3

  官方安装指南很详细,但是如果你像我一样前两步安装的版本都比较新,建议不要安装stable release,而是安装development version。

  完成以上三步后可以参考这篇文章的效果测试部分进行总体测试。