Pollux Logo

Isaac Lab - 로봇(Asset) 구성 파일 작성하기

Isaac Lab에서는 로봇을 시뮬레이션 환경에 배치하고 학습을 시키기 위해 로봇의 구성 정보(config)를 정의해야 합니다.

이 구성 파일은 ArticulationCfg라는 클래스를 기반으로 작성되며, 로봇의 불러오기(Spawn), 초기 상태(Initial State), 액추에이터(Actuator) 설정 등을 포함합니다.

이번 글에서는 Isaac Lab에서 커스텀 로봇을 구성하기 위한 ArticulationCfg 작성법을 소개합니다.

PDF에 포함된 내용을 기반으로 구성 요소별 역할과 작성 방법을 예제와 함께 정리하였으며, 모든 이미지를 자연스럽게 포함할 수 있도록 구성했습니다.

🔗 공식 가이드: https://isaac-sim.github.io/IsaacLab/main/source/how-to/write_articulation_cfg.html

ArticulationCfg란?

Image

Isaac Lab에서 로봇을 학습시키기 위해서는 반드시 ArticulationCfg 구성이 필요합니다.

이 구성은 다음과 같은 세 가지 핵심 요소로 이루어져 있습니다:

  1. Spawn: 로봇 불러오기 (USD 또는 URDF 기반)
  2. Initial State: 초기 위치, 관절 각도 등 초기 상태
  3. Actuator: 로봇 관절 제어를 위한 액추에이터 설정

모든 구성은 Python 코드에서 하나의 설정 객체로 정의되며, 이후 다양한 씬(Scene)에서 재활용될 수 있습니다.

Spawn 설정

Image

Spawn은 로봇의 모델을 시뮬레이션에 불러오는 부분으로, USD 파일 또는 URDF 파일을 사용할 수 있습니다.

주요 속성:

  • usd_path: 로봇 모델이 포함된 USD 파일 경로
  • rigid_props: 로봇의 물리적 속성 (질량, 관절 속도 제한 등)
  • articulation_props: 관절 관련 속성 (자체 충돌 여부, solver 반복 횟수 등)

이 설정을 통해 로봇의 기본 형태와 물리 특성이 시뮬레이션에 반영됩니다.

Initial State 설정

Image

Initial State는 로봇이 시뮬레이션에 처음 생성될 때의 상태를 정의합니다.

  • pos: 로봇의 초기 위치 (x, y, z) 좌표
  • rot: 초기 회전 (선택 사항)
  • joint_pos: 각 관절의 초기값 (예: 직립 상태 등)

이 설정을 통해 로봇이 시작 위치에서 원하는 자세로 배치되도록 구성할 수 있습니다.

Actuator 설정

Image

로봇이 움직이기 위해서는 액추에이터(Actuator) 설정이 필요합니다. Isaac Lab에서는 다음과 같은 모델을 사용할 수 있습니다:

  • 내장 모델 (Implicit Actuator Model): Isaac Lab에서 제공하는 기본 모델
  • 사용자 정의 모델 (Explicit Actuator Model): 사용자가 직접 정의한 제어 모델

액추에이터는 로봇의 각 관절에 어떤 힘(force) 또는 목표 위치(position)를 적용할지를 결정합니다.

ArticulationCfg 불러오기

Image

ArticulationCfg가 정의되면, 이를 사용할 수 있도록 Python 코드 상단에서 import 합니다:

from omni.isaac.lab_assets import HUMANOID_CFG

Image

그리고 씬 구성 시 다음과 같이 사용합니다:

humanoid: ArticulationCfg = HUMANOID_CFG.replace(prim_path="{ENV_REGEX_NS}/Robot")

  • humanoid는 씬에서 해당 로봇을 참조할 때 사용되는 이름입니다.
  • replace()를 통해 로봇의 경로를 씬 구조에 맞게 바꿔줄 수 있습니다.

로봇의 동작 테스트: run_simulator()

Image

run_simulator() 함수 내에서 직접 로봇의 동작을 테스트해볼 수 있습니다.

예를 들어, 다음과 같이 랜덤한 관절 힘을 생성하고, 이를 로봇에 적용할 수 있습니다:

Image

efforts = torch.randn_like(robot.data.joint_pos) robot.set_joint_effort_target(efforts)

이 코드는 로봇 관절에 랜덤한 힘을 가해 다양한 동작을 확인하고, 액추에이터 설정을 테스트하는 데 유용합니다.

마무리

이번 글에서는 Isaac Lab에서 로봇의 구성 파일인 ArticulationCfg를 작성하는 방법을 상세히 살펴보았습니다.

핵심 구성 요소인 Spawn, Initial State, Actuator를 통해 로봇의 물리 특성과 동작 제어를 설정할 수 있으며, 이 구성을 기반으로 다양한 강화학습 시나리오를 설계할 수 있습니다.

요약:

  • ArticulationCfg는 로봇을 시뮬레이션에 추가하는 핵심 설정
  • Spawn: 모델 불러오기 및 물리 속성 설정
  • Initial State: 초기 위치 및 관절 상태 설정
  • Actuator: 관절 제어 방식 정의
  • 정의된 cfg는 다양한 씬에서 재사용 가능

이 구성을 마스터하면 이후 강화학습 환경 구축, 다양한 로봇 동작 시뮬레이션 설계에 큰 도움이 됩니다.

이 글 공유하기:

Copyright 2025. POLLUX All rights reserved.