LOE
[Unitree go2] Part 1. URDF import 본문
isaaclab install
Installation using Isaac Sim Binaries — Isaac Lab Documentation
On Linux systems, Isaac Sim directory will be named ${HOME}/isaacsim. Note For details on driver requirements, please see the Technical Requirements guide! From Isaac Sim 4.5 release, Isaac Sim binaries can be downloaded directly as a zip file. The below s
isaac-sim.github.io
먼저 isaaclab을 설치해줍니다. isaaclab.assets에 모든 robot의 configuation file이 있기 때문에 우리는 그 파일로 isaacsim에서 로봇을 load해보겠습니다.
script 작성

먼저 isaaclab파일 안의 script에 custom폴더를 만들고 go2 로봇을 load 할 수 있는 파이썬 파일을 하나 생성했습니다.
scripts > tutorials > 00_sim > create_enpty.py와 scripts > demo > quadrupeds.py를 조합하여 빈공간에 go2 로봇개를 load하는 코드를 작성하였습니다.
import argparse
from isaaclab.app import AppLauncher
# create argparser
parser = argparse.ArgumentParser(description="go2 scene")
# append AppLauncher cli args
AppLauncher.add_app_launcher_args(parser)
# parse the arguments
args_cli = parser.parse_args()
# launch omniverse app
app_launcher = AppLauncher(args_cli)
simulation_app = app_launcher.app
"""Rest everything follows."""
import numpy as np
import torch
import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation
from isaaclab.sim import SimulationCfg, SimulationContext
from isaaclab_assets.robots.unitree import UNITREE_GO2_CFG
def main():
"""Main function."""
# Initialize the simulation context
sim_cfg = SimulationCfg(dt=0.01)
sim = SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view([2.5, 2.5, 2.5], [0.0, 0.0, 0.0])
# Ground-plane 생성
cfg = sim_utils.GroundPlaneCfg()
cfg.func("/World/defaultGroundPlane", cfg)
# Lights
cfg = sim_utils.DomeLightCfg(intensity=2000.0, color=(0.75, 0.75, 0.75))
cfg.func("/World/Light", cfg)
# go2 articulation을 로드합니다.
go2 = Articulation(UNITREE_GO2_CFG.replace(prim_path="/World/go2"))
# 로봇 데이터에 접근하기 전에 simulator를 먼저 실행해줍니다.
#
'''Articulation 객체가 완전히 유효한 시뮬레이션 데이터를 담기 위해서는
객체 생성 후 시뮬레이션이 최소 한 번 재설정(Reset)되거나 스텝(Step)이 수행되어야 합니다.'''
sim.reset()
root_state = go2.data.default_root_state.clone()
# 로봇의 초기 pose의 위치와 방향을 입력해줍니다.
go2.write_root_pose_to_sim(root_state[:, :7])
# 로봇의 속도, 가속도를 입력해줍니다.
go2.write_root_velocity_to_sim(root_state[:, 7:])
joint_pos, joint_vel = go2.data.default_joint_pos.clone(), go2.data.default_joint_vel.clone()
# 로봇의 초기 joint state를 입력합니다.
go2.write_joint_state_to_sim(joint_pos, joint_vel)
# 로봇을 reset하여 로봇의 이전 상태에 대한 정보를 없앱니다. (강화학습을 위해)
go2.reset()
# generate random joint positions
joint_pos_target = go2.data.default_joint_pos
# apply action to the robot
go2.set_joint_position_target(joint_pos_target)
# write data to sim
go2.write_data_to_sim()
# Now we are ready!
print("[INFO]: Setup complete...")
# Simulate physics
while simulation_app.is_running():
# perform step
sim.step()
if __name__ == "__main__":
# run the main function
main()
# close sim app
simulation_app.close()
- 로봇에게 초기 joint포즈를 입력해줬지만 땅에 떨어지면서 포즈를 유지하지 못하고 넘어지는 모습입니다.
- 초기 joint pos를 계속 입력해주거나 가만히 서있을 수 있는 policy를 적용해주면 될 것으로 생각됩니다
'isaac sim & lab' 카테고리의 다른 글
| [Unitree go2] Part 2. isaaclab 환경 구성하기 (0) | 2025.12.17 |
|---|---|
| [isaacLab tutorial] Assets을 import하고 Scene을 만든는 법 (0) | 2025.12.04 |
| [Isaac sim Tutorial] Part 7. H1 휴머노이드 policy 제어 (0) | 2025.12.03 |
| [Isaac sim Tutorial] Part 6. ROS2 Joint Control (0) | 2025.12.02 |
| [Isaac sim Tutorial] Part 5. ROS2 Publish rate, Qos 조정 (0) | 2025.12.01 |