Isaac Sim+SKRL机器人并行强化学习

   

目录

Isaac Sim介绍

OmniIssacGymEnvs安装

SKRL安装与测试

基于UR5的机械臂Reach强化学习测评

机器人控制

OMNI GYM环境编写

SKRL运行文件

训练结果与速度对比

结果分析

运行体验与建议


Isaac Sim介绍

  Isaac Sim是英伟达出的一款机器人仿真平台,适用于做机器人仿真。同类产品包括mujoco,vrep和pybullt等,它的主要优势就是可以做并行强化学习仿真,这对于提高训练效率是非常有好处的。

     作者使用的版本是 :ISAAC SIM 2023.1,因为isaac sim每次版本的迭代变化都很大,而isaac 4.0 又是大更改,因此我还是在2023.1版本上进行测试的。

     之前使用isaac sim没有进行并行化训练,原因就是如果想用并行化训练单纯使用isaac sim是搞不出来的,还要搭配另外的环境,例如2023.1就要使用OmniIsaacGymEnvs或者ORbit。如果是4.0的用户就是使用isaac lab了。

OmniIssacGymEnvs安装

IsaacGymEnvs的安装非常简单,按照官方仓库readme安装即可

GitHub - isaac-sim/OmniIsaacGymEnvs: Reinforcement Learning Environments for Omniverse Isaac Gym

 OmniIsaacGymEnvs 提供了很多经典的强化学习训练场景,最典型的就是Cartpole环境了。

安装步骤:

1.  git clone https://github.com/NVIDIA-Omniverse/OmniIsaacGymEnvs.git 下载仓库

2. 将默认执行的python设置为Isaac sim环境执行的python

For Linux: alias PYTHON_PATH=~/.local/share/ov/pkg/isaac_sim-*/python.sh
For Windows: doskey PYTHON_PATH=C:\Users\user\AppData\Local\ov\pkg\isaac_sim-*\python.bat $*
For IsaacSim Docker: alias PYTHON_PATH=/isaac-sim/python.sh

3.安装 omniisaacgymenvs 模块

PYTHON_PATH -m pip install -e .

按照官方的指示,这样就可以把仓库安装好了,然后执行,就可以测试官方给的例程。

PYTHON_PATH scripts/rlgames_train.py task=Cartpole

但是注意到,这里用的是rlgames作为强化学习的库,这并不是一个常见的库,实际上英伟达自己在论坛上在推行一个叫做SKRL的库。

SKRL安装与测试

SKRL网址:Examples - skrl (1.3.0)

SKRL是英伟达自己推荐的一个强化学习库,它的优势在于可以无缝衔接英伟达自己的并行仿真环境,虽然说训练效果可能不如SB3好,但是它适配了啊。并且在使用多智能体的时候训练速度也是挺快的。

pip install skrl["torch"]

SKRL的安装按照官方的教程直接装就可以了。

这里需要特别注意的是OIGE的配置文件和rlgame是不一样的,具体可以参考官方给出的example,在yaml文件中要做一些修改。

把skrl官方提供的yaml文件下载下来,并使用它给出的python文件运行,就可以将官方给的demo跑起来了。 

这里作者使用的GPU是4060TI 16G的版本

在环境中设置了4096个agent,运行起来还是非常顺畅的,训练了1600个回合,只花了1分钟左右

另外,官方提供了headless可选性,当headless设置成True时,就不会显示界面,这时候运行速度会更加快,1600个回合只需要15秒钟不到的时间即可完成。 

可以看到,SKRL与omni isaac gym的衔接还是比较OK的,至少官方给出的例程运行起来是没什么问题的。

基于UR5的机械臂Reach强化学习测评

机器人控制

在测试完官方给出的环境后,肯定是希望可以测试下自己的环境。作者自己使用的是UR5机械臂,isaac sim中本身已经提供了这一款机械臂了,所以模型直接下载下来就可以,是usd格式的模型。

在机器人控制方面,官方提供的是RMPFLOW的轨迹规划库,但是RMPFLOW本身要配置很多东西,官方只提供了UR10的配置文件,因此这里我选用了最简单的控制方法。在网上下载了UR5的urdf文件,然后使用ikpy函数库读取urdf文件,并进行逆运动学求解,把求解出来的关节角度再下发到模型中。这里提供我写的UR5函数控制类作为参考:


from typing import Optional

import carb
import numpy as np
import torch
from omni.isaac.core.robots.robot import Robot
from omni.isaac.core.utils.nucleus import get_assets_root_path
from omni.isaac.core.utils.stage import add_reference_to_stage
from omni.isaac.core.articulations import ArticulationView,Articulation
from omni.isaac.core.utils.types import ArticulationAction, ArticulationActions
from common import MatrixProcess as mp
from omni.isaac.core.prims import RigidPrim, RigidPrimView,XFormPrimView
import common.robot.Urik as urik
from common.robot.Ur5ik import Kinematic
import logging
class UR5(Robot):
    def __init__(
            self,
            prim_path: str,
            ik_urdfPath:str,
            name: Optional[str] = "UR5",
            tcpOffset_pose=np.array([0,0,0]),
            tcpOffset_ori=np.array([1,0,0,0]),
            usd_path: Optional[str] = None,
            translation: Optional[np.ndarray] = None,
            orientation: Optional[np.ndarray] = None,
    ) -> None:
        self._usd_path = usd_path
        self._name = name
        if self._usd_path is None:
            self._usd_path = "C:\\Users\\Administrator\\AppData\\Local\\ov\\pkg\\gym\\OmniIsaacGymEnvs\\omniisaacgymenvs\\robots\\myrobots\\model\\ur5_modify.usd"
            print("=== _usd_path=", self._usd_path)

        add_reference_to_stage(self._usd_path, prim_path)

        super().__init__(
            prim_path=prim_path,
  
### 部署强化学习模型于NVIDIA Isaac平台 #### 使用Isaac Sim 4.0中的Isaac Lab进行开发与测试 为了在NVIDIA Isaac平台上部署强化学习(RL)模型,开发者可以利用最新的Isaac Sim版本所提供的工具集。特别是Isaac Sim 4.0引入了Isaac Lab这一轻量级应用,它专为机器人学习而设计,能够加速RL算法的研发过程[^2]。 #### 构建自定义Actuator模块以支持特定硬件需求 对于那些希望集成物理世界中真实设备的应用场景来说,可以通过定制`omni.isaac.lab.actuators`子包内的组件来满足特殊的需求。此部分文档详尽描述了多种显式的驱动器模型实现方式,允许用户根据实际情况调整参数设置从而更好地适配不同的执行机构[^1]。 #### 利用Isaac Gym环境训练并优化策略网络 考虑到高效能计算资源的重要性,在GPU上运行模拟成为提升训练效率的关键因素之一。借助Isaac Gym提供的多线程仿真框架以及大规模并行处理能力,研究者们可以在短时间内完成大量实验迭代,并最终得到经过充分调优后的政策函数(policy function),即所谓的强化学习模型。 #### 将训练好的模型迁移到实际环境中 一旦完成了上述阶段的工作,则可考虑把所获得的最佳实践成果迁移至目标平台之上。此时应当注意确保源码兼容性问题已被妥善解决;同时也要验证现场操作条件是否符合预期假设——比如传感器精度、通信延迟等方面的表现情况。 ```python import torch from isaacgym import gymapi, gymutil from custom_policy_network import CustomPolicyNetwork def deploy_reinforcement_learning_model(): env = gymapi.Environment() # 加载预训练的PyTorch模型 policy_net = CustomPolicyNetwork(input_dim=..., output_dim=...) checkpoint = torch.load('path_to_trained_model.pth') policy_net.load_state_dict(checkpoint['model_state_dict']) while True: observation = env.get_observation() # 获取当前状态观测值 with torch.no_grad(): # 推理时不计算梯度 action = policy_net(observation).numpy() reward = env.step(action) # 执行动作并接收反馈奖励 deploy_reinforcement_learning_model() ```
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值