本人的第一个强化学习实战小项目,仿真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。
完成以上三步后可以参考这篇文章的效果测试部分进行总体测试。