配置IsaacLab环境

IsaacLab本地安装的方式有两种 通过PIP安装 二进制安装 本次课程将使用二进制安装 安装要求 系统要求 Element Minimum Spec Good Ideal OS Ubuntu 20.04/22.04、Windows 10/11 Ubuntu 20.04/22.04、Windows 10/11 Ubuntu 20.04/22.04、Windows 10/11 CPU Intel Core i7 (7th Generation)、AMD Ryzen 5 Intel Core i7 (9th Generation)、AMD Ryzen 7 Intel Core i9, X-series or higher、AMD Ryzen 9, Threadripper or higher Cores 4 8 16 RAM 32GB* 64GB* 64GB* Storage 50GB SSD 500GB SSD 1TB NVMe SSD GPU GeForce RTX 3070 GeForce RTX 4080 RTX Ada 6000 VRAM 8GB* 16GB* 48GB* 本机配置 描述 地址 显卡 RTX 3080 Ti 操作系统 PopOS(一款基于Ubuntu的操作系统) https://pop.system76.com IsaacSim 4.2.0 https://developer.nvidia.com/omniverse#section-getting-started IsaacLab 最新的main分支 https://github.com/isaac-sim/IsaacLab Anaconda Anaconda3-2024.10-1-Linux-x86_64 https://docs.anaconda.com/anaconda/install 🎉 开始安装! 1. Anaconda安装(Linux) # 安装依赖 sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 # 下载 & 安装anaconda curl -O https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh bash ~/Anaconda3-2024.10-1-Linux-x86_64.sh # 刷新环境变量 source ~/.zshrc # 或source ~/.bashrc 2. 安装Omniverse Launcher # 下载Omniverse Launcher wget https://install.launcher.omniverse.nvidia.com/installers/omniverse-launcher-linux.AppImage # 添加可执行权限 chmod +x omniverse-launcher-linux.AppImage # 运行 ./omniverse-launcher-linux.AppImage 运行后出现如下界面,然后输入邮箱账号登陆(没注册过的需要先注册) ...

November 20, 2024 · 2 min · 300 words · FakeRick

IsaacLab创建直接工作流RL环境

原文地址:https://isaac-sim.github.io/IsaacLab/source/tutorials/03_envs/create_direct_rl_env.html 从环境中获取信息(观察) 获取joint(铰链)信息:位置和速度 joint会被包含在Articulation(关节)中,一个Articulation可能会包含1个或多个的joint对象,可以通过Articulation.find_joints()方法获得joint在当前Articulation中的索引(index)数据。 find_joints的返回值是这样的:tuple[list[joint索引], list[joint名字]] find_joints的函数声明如下: def find_joints( self, name_keys: str | Sequence[str], joint_subset: list[str] | None = None, preserve_order: bool = False ) -> tuple[list[int], list[str]] 在Articulation内部有一个属性私有变量_data: ArticulationData,该变量通过方法def data(self) -> ArticulationData获取,在ArticulationData中存放着几个关节重要的数据:位置ArticulationData._joint_pos,速度ArticulationData._joint_vel,加速度ArticulationData._joint_acc 在ArticulationData有几个@property装饰器函数,用于获取上述的三个属性,这样可以用过属性名的方式直接访问到这些数据。 下面介绍下这三个方法的返回值: joint_pos返回torch.Size([num_instances, num_joints]) joint_vel返回torch.Size([num_instances, num_joints]) joint_acc返回torch.Size([num_instances, num_joints]) 是时候讲解下DirectRLEnv(gym.Env)._get_observations(self) -> VecEnvObs方法了,该方法带有@abstractmethod被定义成抽象方法,所以我们在继承DirectRLEnv类后必须在自己的类中实现_get_observations方法。 我们在_get_observations方法中计算并返回观测值,这会用到上面提到的ArticulationData以及如何通过joint索引从中获取实际数据。 在cartpole_env.py的代码中有如下实现: def _get_observations(self) -> torch.Dict[str, torch.Tensor | torch.Dict[str, torch.Tensor]]: obs = torch.cat( ( self.joint_pos[:, self._pole_dof_idx[0]].unsqueeze(dim=1), self.joint_vel[:, self._pole_dof_idx[0]].unsqueeze(dim=1), self.joint_pos[:, self._cart_dof_idx[0]].unsqueeze(dim=1), self.joint_vel[:, self._cart_dof_idx[0]].unsqueeze(dim=1), ), dim=-1, ) observations = {"policy": obs} return observations 上述代码中的_pole_dof_idx里边存放的是杆子的joint对应的索引数据,_cart_dof_idx存放的是小车的joint对应的索引数据,这里介绍下获取杆子位置的代码,获取杆子速度和小车位置和速度的代码都一样。 ...

July 21, 2024 · 2 min · 330 words · FakeRick