isaacgym(legged_gym)学习 (一)—— 添加自己的机器人模型并训练

本文介绍了如何在isaacgym的legged_gym环境中,获取并配置宇数科技GO2机器人的urdf文件,创建自定义配置文件,并将其添加到task_registry以便进行训练和验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

isaacgym(legged_gym)学习 (一)—— 添加自己的机器人模型并训练


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

例如:isaacgym系列学习记录。


这里默认已经安装好isaacgym学习环境,并可以成功运行其中的案例

一、获取你机器人的urdf文件

这里我以宇数科技的GO2机器人为例,去其官网下载GO2的urdf文件

下载好了urdf文件,将其中resources/robots/go2文件复制到legged_gym/resources/robots/目录下

二、配置GO2机器人的学习环境

1.建立配置文件

在legged_gym/legged_gym/envs/目录下建立一个go2文件夹,然后在go2文件夹中建立一个go2_config.py的配置文件,如下:

from legged_gym.envs.base.legged_robot_config import LeggedRobotCfg, LeggedRobotCfgPPO

class GO2RoughCfg( LeggedRobotCfg ):
    class init_state( LeggedRobotCfg.init_state ):
        pos = [0.0, 0.0, 0.42] # x,y,z [m]
        default_joint_
### 使用 Isaac Gym 部署四足机器人的方法 #### 安装依赖项 为了在 Isaac Gym 中成功部署四足机器人,需先安装必要的软件包。这通常涉及 Python 和 CUDA 的环境配置以及特定版本的 PyTorch。 ```bash pip install nvidia-isaac-gym==1.0.2 # 特定于所使用的 isaac gym 版本 conda create -n isaacgym python=3.8 conda activate isaacgym ``` 上述命令会创建个新的 conda 虚拟环境激活它,同时安装指定版本的 Isaac Gym 库[^1]。 #### 初始化项目结构 建立合理的文件夹布局对于管理代码至关重要: ``` four_legged_robot/ ├── assets/ │ └── urdf/ └── tasks/ ├── __init__.py └── quadruped.py ``` 此目录树展示了基本的工作空间安排,其中 `assets` 文件夹存储着描述物理特性的 URDF 文件;而 `tasks` 则放置自定义的任务逻辑[^3]。 #### 编写任务类 编写个继承自 `VecTaskPython` 或者 `VecTask Torch` 类的新类来表示具体的行走挑战。下面是个简单的例子展示如何实现这功能。 ```python from typing import Tuple, Dict import torch from omni.isaac.gym.vec_env import VecEnvBase class Quadruped(VecEnvBase): def __init__(self, sim_device: str = "cuda:0", headless: bool = False): super().__init__( task_name="Quadruped", num_environments=64, control_freq_inv=4, enable_camera_sensors=False) self._setup_stage() def _create_sim(self) -> None: """ 创建仿真器 """ ... def reset(self) -> Tuple[torch.Tensor]: """重置环境""" ... def step(self, actions: torch.Tensor) -> Tuple[ torch.Tensor, torch.Tensor, torch.Tensor, Dict[str, any]]: """ 执行步动作 """ ... ``` 这段代码片段提供了构建四足动物模拟的基础框架。 #### 加载资产与场景设定 利用加载好的URDF模型初始化个体实例,将其加入至虚拟环境中去。这部分工作主要集中在 `_create_sim()` 方法内部完成。 ```python def _create_sim(self) -> None: asset_root = os.path.join(os.getcwd(), "../assets/urdf/") asset_file = "quadruped.urdf" asset_options = gymapi.AssetOptions() asset_options.fix_base_link = True robot_asset = self.gym.load_asset( self.sim, asset_root, asset_file, asset_options) pose = gymapi.Transform() pose.p.z = 0.5 # 设置初始高度 env_ptr = self.envs[-1] actor_handle = self.gym.create_actor( env_ptr, robot_asset, pose, "robot", i, 0) ``` 这里设置了机器人的起始位置和其他属性参数。 #### 训练过程中的观察与奖励设计 为使代理能够学会有效的移动策略,在每轮迭代之后应当给予相应的反馈信号——即观测值和即时回报。这些机制的设计直接影响最终的学习效果。 ```python observation_space = spaces.Box(low=-np.inf, high=np.inf, shape=(obs_size,)) action_space = spaces.Box(low=-1., high=1., shape=(act_dim,)) reward_function = lambda obs, act: compute_reward(obs, act) done_condition = lambda obs: check_done(obs) info_provider = lambda obs: get_info(obs) ``` 以上伪码说明了怎样定义状态空间、行为范围及其关联函数的形式。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值