01. Genesis 기본 개념 — 용어부터 정리하고 가기

이번 단계 목표: 본격적으로 로봇을 다루기 전에, Genesis(그리고 로봇 시뮬레이션 일반)에서 계속 나오는 핵심 용어들을 그림 그리듯 정리합니다. 여기만 이해하면 이후 코드가 술술 읽힙니다.


시뮬레이터를 “가상 촬영 스튜디오”로 생각하기

로봇 시뮬레이션을 영화 촬영 스튜디오에 비유하면 이해가 쉽습니다.

영화 스튜디오 Genesis 용어 하는 일
촬영장(세트) Scene (씬) 모든 것이 담기는 가상 공간
배우·소품 Entity (엔티티) 로봇, 바닥, 공 같은 등장 물체
물리 법칙 Solver (솔버) 중력·충돌·마찰을 계산하는 엔진
필름 한 컷 step (스텝) 시간을 아주 조금(예: 0.01초) 진행
카메라 Camera / Viewer 장면을 화면에 보여주거나 영상으로 저장

시뮬레이션이란 결국 “step을 수천·수만 번 반복하면서, 매 step마다 솔버가 물리를 계산해 모든 엔티티의 위치를 조금씩 갱신하는 것”입니다. 영화가 1초에 24장의 정지 사진을 빠르게 넘겨 움직임처럼 보이는 것과 똑같아요.

Scene 구조와 프로그램 5단계 골격


코드로 보는 기본 흐름

Genesis 프로그램은 거의 항상 아래 5단계를 따릅니다.

import genesis as gs

# (1) 엔진 켜기 — GPU를 쓸지 CPU를 쓸지 등 결정
gs.init(backend=gs.gpu)

# (2) 촬영장 만들기
scene = gs.Scene(show_viewer=True)   # show_viewer=True면 실시간 창이 뜸

# (3) 배우·소품 배치하기 (Entity 추가)
plane = scene.add_entity(gs.morphs.Plane())        # 바닥
robot = scene.add_entity(gs.morphs.URDF(file="..."))  # 로봇

# (4) 무대 준비 완료 — 메모리에 올리고 초기화
scene.build()

# (5) 시간 흘려보내기 — step 반복
for i in range(1000):
    scene.step()

이 5단계 골격은 앞으로 모든 스크립트에서 반복됩니다. init → Scene → add_entity → build → step. 주문처럼 외워두면 좋아요.


꼭 알아야 할 용어 5개

1) URDF — 로봇의 설계도

URDF(Unified Robot Description Format)는 로봇이 어떻게 생겼는지를 적은 XML 파일입니다. “몸통이 있고, 거기에 허벅지가 관절로 연결되고, 그 아래 종아리가…” 하는 식으로 부품(link)과 관절(joint)의 연결 관계, 크기, 무게를 담고 있습니다. 로봇을 불러온다는 건 곧 이 URDF 파일을 읽어 들이는 것입니다.

비유: 레고 설명서. 어떤 블록을 어디에 어떻게 끼우는지 적혀 있죠. URDF도 똑같습니다.

2) Link(링크)와 Joint(조인트)

  • Link: 로봇의 단단한 부품 하나 (예: 허벅지, 종아리, 발).
  • Joint: 두 링크를 잇는 관절. 사람의 무릎·팔꿈치처럼 회전하는 부분.

3) DOF — 자유도 (움직일 수 있는 축의 개수)

DOF(Degree Of Freedom, 자유도)는 “독립적으로 움직일 수 있는 관절 축의 수”입니다. 무릎처럼 한 방향으로만 굽는 관절은 1 DOF, 어깨처럼 여러 방향으로 도는 관절은 더 많습니다. 휴머노이드는 보통 DOF가 20~40개입니다. DOF가 많을수록 제어가 복잡해집니다.

비유: 자유도 = 로봇을 조종하는 조이스틱 레버의 개수. 레버가 30개면 30개를 동시에 잘 움직여야 자연스럽게 걷습니다. 휴머노이드 보행이 어려운 근본 이유가 여기 있어요.

URDF의 Link/Joint 사슬과 DOF

4) 관절 각도(joint position)와 제어

각 관절이 “지금 몇 도 굽었는지”가 관절 각도입니다. 로봇을 “제어한다”는 건 보통 각 관절을 원하는 각도로 가져가도록 명령하는 것을 뜻합니다. (구체적인 방법은 03번 문서에서!)

5) backend(백엔드)와 dt(시간 간격)

  • backend: 계산을 GPU(gs.gpu)에서 할지 CPU(gs.cpu)에서 할지. GPU가 훨씬 빠릅니다.
  • dt: step 한 번이 진행하는 시간(초). 예를 들어 dt=0.01이면 step 한 번 = 0.01초. 작을수록 더 정밀하지만 더 많은 step이 필요해 느려집니다.

뷰어(Viewer) vs 헤드리스(Headless) 렌더링

Genesis로 장면을 “보는” 방법은 두 가지입니다.

  • 뷰어(Viewer): 실시간으로 창이 떠서 마우스로 돌려보며 관찰. 개발·디버깅에 좋음. 단, 그래픽 화면이 있는 환경(이 PC는 X11)이 필요합니다.
  • 헤드리스(Headless) 렌더링: 화면 없이 카메라로 이미지/영상 파일을 저장. 서버나 블로그용 자료 만들 때 좋음. 화면이 없어도 됩니다.

이 프로젝트에서는 개발할 땐 뷰어로 보고, 블로그용 결과물은 헤드리스로 mp4를 뽑는 식으로 둘 다 활용합니다.


다음 단계

개념을 잡았으니, 이제 진짜 휴머노이드 로봇을 불러와 관절 구조를 들여다봅니다 → 02. 휴머노이드 불러오기

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.