Isaac Gym 2. 倒立摆DDPG实现

首先在安装时得到了isaac gym和IsaacGymEnvs. isaac gym是基础包,IsaacGymEnvs是一个包装好的并行强化学习实例库。

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

参考isaacgym/docs/index.html

1. 初始化环境

参考dof_control.py

import os
import time
import math
import numpy as np
from scipy.spatial.transform import Rotation

import math
from isaacgym import gymapi, gymtorch
from isaacgym import gymutil
import time

import torch
from torch.utils.tensorboard import SummaryWriter
from DDPG_Prior import DDPGAgent
# from DDPG import DDPGAgent
from config import *
from config import opt
from ReplayMemory import *

device = torch.device('cuda') if opt.use_gpu else torch.device('cpu')

np.set_printoptions(precision=3, suppress=True)  # 设定numpy打印精度
np.random.seed(opt.random_seed)
torch.manual_seed(opt.random_seed)

# initialize gym
gym = gymapi.acquire_gym()

# parse arguments
args = gymutil.parse_arguments(description="Joint control Methods Example")

# create a simulator
sim_params = gymapi.SimParams()
sim_params.substeps = 1
sim_params.dt = opt.dt

sim_params.physx.solver_type = 1
sim_params.physx.num_position_iterations = 4
sim_params.physx.num_velocity_iterations = 1

sim_params.physx.num_threads = args.num_threads
sim_params.physx.use_gpu = args.use_gpu

sim_params.use_gpu_pipeline = False
if args.use_gpu_pipeline:
    print("WARNING: Forcing CPU pipeline.")

sim = gym.create_sim(args.compute_device_id, args.graphics_device_id, args.physics_engine, sim_params)

if sim is None:
    print("*** Failed to create sim")
    quit()

# create viewer using the default camera properties
viewer = gym.create_viewer(sim, gymapi.CameraProperties())
if viewer is None:
    raise ValueError('*** Failed to create viewer')

# add ground plane
plane_params = gymapi.PlaneParams()
gym.add_ground(sim, gymapi.PlaneParams())

# set up the env grid
num_envs = 1
spacing = 1.5
env_lower = gymapi.Vec3(-spacing, 0.0, -spacing)
env_upper = gymapi.Vec3(spacing, 0.0, spacing)

# add cartpole urdf asset
asset_root = "/home/blamlight/NVIDIA_Omniverse/ISAAC_Gym/isaacgym/assets"
asset_file = "urdf/cartpole.urdf"

# Load asset with default control type of position for all joints
asset_options = gymapi.AssetOptions()
asset_options.fix_base_link = True
asset_options.default_dof_drive_mode = gymapi.DOF_MODE_POS
print("Loading asset '%s' from '%s'" % (asset_file, asset_root))
cartpole_asset = gym.load_asset(sim, asset_root, asset_file, asset_options)

# initial root pose for cartpole actors
initial_pose = gymapi.Transform()
initial_pose.p = gymapi.Vec3(0.0, 2.0, 0.0)
initial_pose.r = gymapi.Quat(-0.707107, 0.0, 0.0, 0.707107)

# Create environment 3
# Cart has no drive mode, but will be pushed around using forces.
# Pole held steady using position target mode.
env3 = gym.create_env(sim, env_lower, env_upper, 2)
cartpole3 = gym.create_actor(env3, cartpole_asset, initial_pose, 'cartpole', 3, 1)

# Configure DOF properties
props = gym.get_actor_dof_properties(env3, cartpole3)
props["driveMode"] = (gymapi.DOF_MODE_EFFORT, gymapi.DOF_MODE_EFFORT)
props["stiffness"] = (0.0, 0.0)
props["damping"] = (0.0, 0.1)
gym.set_actor_dof_properties(env3, cartpole3, props)  # Environment Handle, Actor Handle

# Set DOF drive targets
cart_dof_handle3 = gym.find_actor_dof_handle(env3, cartpole3, 'slider_to_cart')
pole_dof_handle3 = gym.find_actor_dof_handle(env3, cartpole3, 'cart_to_pole')
gym.set_dof_target_position(env3, cart_dof_handle3, 0.0)

# Look at the first env
cam_pos = gymapi.Vec3(8, 4, 1.5)
cam_target = gymapi.Vec3(0, 2, 1.5)
gym.viewer_camera_look_at(viewer, None, cam_pos, cam_target)

num_bodies = gym.get_actor_rigid_body_count(env3, cartpole3)
num_joints = gym.get_actor_joint_count(env3, cartpole3)
num_dofs = gym.get_actor_dof_count(env3, cartpole3)
# print(num_bodies)
# print(num_joints)
# print(num_dofs)

last_time = time.time()
# gym.apply_dof_effort(env3, pole_dof_handle3, 200)

其中 apply_dof_effort 在 DOF 上施加力。如果自由度是棱柱形的,则作用力将以牛顿为单位。如果自由度是旋转的,则作用力将是扭矩(以 Nm 为单位)。 

替换查看作用在滑块的效果:

gym.apply_dof_effort(env, cart_dof_handle, -pos * 50)

2. 获取传感器信息

参考Isaac-gym(8):Tensor API_isaac gym api.acquire gym() cannot find declaratio-CSDN博客

file:///home/blamlight/NVIDIA_Omniverse/ISAAC_Gym/isaacgym/docs/programming/physics.html#creating-actors

def getstate():
    gym.refresh_actor_root_state_tensor(sim)
    body_states = gym.get_actor_rigid_body_states(env3, cartpole3, gymapi.STATE_ALL)
    quaternion_values = body_states["pose"]["r"][2]
    cart_pos = body_states["pose"]["p"]

    # print(quaternion_values.dtype)
    rotation = Rotation.from_quat([quaternion_values[key] for key in quaternion_values.dtype.names])
    euler_angles = rotation.as_euler('xyz', degrees=True)[0]
    # print("BODY Angle: ", euler_angles[2])

    cart_vel = body_states["vel"]["linear"][1][2]
    pole_vel = body_states["vel"]["angular"][2][0]
    # print("BODY: ", cart_vel, pole_vel)

    return [euler_angles, cart_pos[1][2], cart_vel, pole_vel], cart_pos

 

3. step

def envstep(action):
    forces = torch.zeros(num_dofs, dtype=torch.float32, device="cpu")
    # print(action[0],action[0].dtype)
    forces[0] = torch.tensor(action)
    gym.set_dof_actuation_force_tensor(sim, gymtorch.unwrap_tensor(forces))

其余部分不粘贴了,与isaac gym相关的参数主要在以上部分

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按照以下步骤来安装Isaac Gym: 1. 首先,您需要安装Nvidia驱动程序和Cuda模块。在安装之前,建议先安装Anaconda来管理包。您可以按照这篇博客中的指南来安装Anaconda和Nvidia驱动程序:\[1\] 2. 安装完成后,您可以下载Isaac Gym Benchmark Environments。您可以在这个国内镜像地址下载:\[2\] 3. 下载完成后,将文件解压并放在主目录下。然后进入解压后的文件夹中的isaacgym/docs目录,双击index.html文件,即可打开官方文档。 4. 按照文档中的步骤进行安装。您可以选择直接在新的虚拟环境中进行安装。可以通过以下命令来创建新的虚拟环境: ``` cd isaacgym/python/ sh ../create_conda_env_rlgpu.sh ``` 这样,您就可以按照官方文档中的指南来完成Isaac Gym的安装了。希望对您有所帮助! #### 引用[.reference_title] - *1* [issacgym+leggedgym安装](https://blog.csdn.net/svfsvadfv/article/details/129214461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Isaac-gym(1): 安装及官方demo内容](https://blog.csdn.net/hongliyu_lvliyu/article/details/124605383)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值