自学内容网 自学内容网

Ubuntu22.04配置强化学习环境及运行相关Demo

什么是强化学习

强化学习(Reinforcement Learning,简称 RL)是机器学习中的一个重要分支,属于一种基于试错机制的学习方法。它通过让智能体(Agent)与环境(Environment)进行交互,并通过奖励惩罚的反馈机制,逐步学习到一个最优的决策策略(Policy),以达到预期的目标。强化学习广泛应用于机器人控制、游戏 AI、自动驾驶等领域。

强化学习的基本概念

在强化学习中,智能体的目标是通过和环境的不断交互,在每一个时刻做出一个动作(Action),以期最大化它在长期内获得的累计奖励(Cumulative Reward)。我们可以将强化学习问题形式化为一个马尔可夫决策过程(MDP, Markov Decision Process)。下面是强化学习的几个核心组成部分:

1. 状态(State, S)
  • 状态是智能体当前所处的情境或环境中的某种信息表示。比如在围棋中,状态可以表示当前的棋盘布局;在自动驾驶中,状态可以是传感器数据和周围环境的信息。

2. 动作(Action, A)
  • 动作是智能体在某一时刻可以做出的决策。不同的状态对应不同的可能动作。比如在机器人控制中,动作可以是向左转、向右转、加速或减速。

3. 奖励(Reward, R)
  • 奖励是环境对智能体某一动作的反馈信号。它是一个标量,用来衡量该动作的好坏。智能体的目标是通过行动来最大化累积的奖励。比如在游戏中,获胜可以得到正奖励,而失败则可能得到负奖励。

4. 策略(Policy, π)
  • 策略定义了智能体在每个状态下应该采取什么动作。策略可以是确定性的(即在每个状态下都有唯一的动作选择)或者是随机的(即每个状态下都有某个动作的概率分布)。策略是强化学习中智能体需要学习的核心内容。

5. 值函数(Value Function, V 或 Q)
  • 值函数是用来评估某个状态(或状态-动作对)的“好坏”的函数。它表示智能体从某个状态(或状态-动作对)开始,期望能够获得的累计奖励。

    • 状态值函数 V(s):从状态 s 开始,未来期望能获得的累积奖励。

    • 状态-动作值函数 Q(s, a):在状态 s 下采取动作 a 后,未来期望能获得的累积奖励。

强化学习的基本流程

  1. 智能体观察当前状态(State)

  2. 根据策略(Policy)选择一个动作(Action)

  3. 智能体执行这个动作,环境给出反馈,包括下一状态和奖励(Reward)

  4. 智能体根据奖励和下一状态更新策略,优化动作选择

  5. 重复上述过程,直到达到目标或回合结束

强化学习环境配置

安装ubuntu系统及ROS2

这里不在仔细说明;

设置显卡驱动

安装完ROS2后,找到附加驱动

注意:这里高显卡使用545,低显卡使用535,还有一种可能是其他。

安装虚拟环境Anaconda

下载

Download Anaconda Distribution | Anaconda

安装

 bash Anaconda3-2024.02-1-Linux-x86_64.sh

直按回车键,知道出现yes/no,然后选择yes

这里选择no,不需要配置环境。

在bashrc下添加环境变量

  source ~/anaconda3/bin/activate

打开终端,出现base说明安装成功

安装pytorch

 # 创建虚拟环境
 conda create -n ref python=3.8

 #安装PyTorch 1.13
 conda activate ref
 conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
 #这里pytorch太慢的话,运行下面的
 conda install pytorch==1.13.1

安装IsaacGym

下载Isaacgym:Isaac Gym - Download Archive | NVIDIA Developer

 cd isaacgym/python/
 conda activate ref
 #安装
 pip install -e.

安装完之后,我们需要配置一个环境

 conda activate ref
 cd $CONDA_PREFIX
 mkdir -p ./etc/conda/activate.d
 mkdir -p ./etc/conda/deactivate.d
 touch ./etc/conda/activate.d/env_vars.sh
 touch ./etc/conda/deactivate.d/env_vars.sh

找到/home/XXX/anaconda3/envs/ref/etc/conda目录下有两个文件夹

进入activate.d,打开env_vars.sh文件添加下面内容

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib

进入deactivate.d,打开env_vars.sh文件添加下面内容

 # 保存原始的 LD_LIBRARY_PATH
 ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
 ​
 # 要删除的目录
 DIRECTORY_TO_REMOVE="$CONDA_PREFIX/lib"
 ​
 # 使用 grep 过滤掉要删除的目录项
 NEW_LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v "$DIRECTORY>
 ​
 # 设置新的 LD_LIBRARY_PATH
 export LD_LIBRARY_PATH=$NEW_LD_LIBRARY_PATH
 ​
 #echo "Original LD_LIBRARY_PATH: $ORIGINAL_LD_LIBRARY_PATH"
 #echo "New LD_LIBRARY_PATH:      $LD_LIBRARY_PATH"

保存,重新进入虚拟环境

测试

 cd isaacgym/python/examples/
 python joint_monkey.py 

安装强化学习

下载:GitHub - roboterax/humanoid-gym: Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer https://arxiv.org/abs/2404.05695

 cd humanoid-gym/
 pip install -e.

基于PPO算法的训练

 #运行
 cd humanoid
 #启动基于PPO算法的训练,任务为humanoid任务,注意这里根据自己的显卡选择训练数量
 python scripts/train.py --task=humanoid_ppo --run_name v1 --headless --num_envs 4096

评估训练好的PPO策略 v1

此命令加载 'v1' 策略以在其环境中进行性能评估。除此之外,它还会自动导出一个JIT模型,适合用于部署。

 python scripts/play.py --task=humanoid_ppo --run_name v1

执行模拟到模拟的模型转换

使用导出的 'v1' 策略来进行模拟到模拟的转换。

 python scripts/sim2sim.py --load_model /home/baining/humanoid-gym/logs/XBot_ppo/exported/policies/policy_1.pt

运行训练好的策略

 python scripts/sim2sim.py --load_model /home/baining/humanoid-gym/logs/XBot_ppo/exported/policies/policy_example.pt


原文地址:https://blog.csdn.net/weixin_64037619/article/details/143922771

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!