새로운 시뮬레이션 세계, Genesis
최근 로봇공학, 시뮬레이션 분야에서 혁신을 가져올 것으로 예상되는 Genesis를 소개드리고, 실제 MacOS에 설치해서 시작하는 방법을 소개해드리고자 합니다.
Genesis는 새롭게 설계된 범용 물리 엔진을 기반으로 한 플랫폼으로, 물리 시뮬레이션부터 데이터 생성까지 전혀 새로운 방식으로 로봇공학의 가능성을 열어줍니다.
유튜브 강의를 통해서 더 구체적인 내용을 보실 수도 있습니다.
Genesis란 무엇인가요?
Genesis는 단순한 물리 엔진을 넘어, 다양한 기능을 한데 모은 강력한 플랫폼입니다.

- 범용 물리 엔진: 다양한 소재와 물리적 현상을 초정밀하게 시뮬레이션할 수 있습니다.
- 로봇 시뮬레이션 플랫폼: 가볍고, 빠르며, Python 기반으로 누구나 쉽게 사용할 수 있도록 설계되었습니다.
- 사실적 렌더링 시스템: 높은 시각적 완성도로 몰입감 넘치는 가상 환경을 제공합니다.
- 생성 데이터 엔진: 자연어 설명을 데이터로 변환해, 로봇공학과 그 외의 다양한 분야에서 데이터를 자동으로 생성합니다.
Genesis는 이러한 기능들을 통합하여 물리, 시각, 센서의 디테일을 극대화한 환경을 제공합니다.
Genesis의 비전
Genesis는 다음과 같은 목표를 가지고 만들어졌습니다:
누구나 쉽게 접근할 수 있는 로봇공학
물리 시뮬레이션 사용의 진입 장벽을 낮추어 연구자, 개발자, 학생 누구나 쉽게 활용할 수 있는 환경을 제공합니다.
물리 엔진의 통합
최신 물리 솔버들을 하나의 프레임워크로 통합하여 현실 세계의 물리 현상을 가상 세계에서 재현할 수 있도록 합니다.
데이터 생성 자동화
데이터 수집에 드는 인적 노력을 최소화하여, 데이터가 스스로 생성되고 활용될 수 있는 기반을 마련합니다.
Genesis의 주요 기능
압도적인 속도
Franka 로봇 팔을 단일 RTX 4090 GPU에서 시뮬레이션 시 43백만 FPS를 구현합니다. 이는 실제 현실에서 실험하는 것 대비 43만 배가 빠른 시뮬레이션을 지원합니다.
크로스 플랫폼 지원
Linux, macOS, Windows에서 실행 가능하며 CPU, Nvidia/AMD GPU, Apple Metal 등 다양한 연산 백엔드 지원합니다.
그 외에도, 다양한 물레 엔진, 소재, 로봇 호환성을 비롯하여 직관적인 설치와 API 설계로 누구나 쉽게 사용할 수 있습니다. 또한 사실적인 렌더링으로 시뮬레이션 환경을 사실적으로 제공합니다.
Genesis: 오픈소스 사용해보기
Genesis는 완전히 오픈소스로 공개되어 있습니다. 누구나 다운로드 받아서 시뮬레이션을 너무나 간단하게 수행할 수 있습니다. MacOS를 기준으로 설치 방법에 대해 설명드리겠습니다. terminal을 열고 설치를 준비해주세요.
왜 macOS로 실습하나요?
먼저 이 Genesis는 시뮬레이션을 시각화해야 하기 때문에 화면을 필요로 합니다. 그래서 보통 원격 서버로 사용하는 Ubuntu에서 화면을 표시하기 어려움으로 애플실리콘(M1, M2...)이 탑재된 macOS가 있다면 첫 시작을 권장합니다. 하지만 더 복잡한 예제들의 경우 Ubuntu(Linux) 환경에 최적화되어 있음으로, 본격적인 실험을 위해서는 모니터가 탑재된 Ubuntu OS로 실험하시면 좋습니다.

또한, 윈도우의 경우 위의 그림처럼 Interactive View와 Headless Rendering을 지원하지 않습니다. 그러므로, 쉽게 화면을 볼 수 있고 모든 기능을 지원하는 macOS로 해보시기를 권장합니다.
Xcode 및 커맨드라인 도구 설치
먼저 Xcode도구를 설치해야 합니다.
xcode-select --install
Xcode는 iOS 및 MacOS 개발에 필요한 도구와 라이브러리를 포함하고 있습니다. 위 명령을 입력하면 Xcode Command Line Tools를 다운로드하고 자동으로 설치할 수 있습니다.
미니콘다 설치 및 활성화
손 쉬운 작업 세팅을 위해서, miniconda라는 환경 세팅 도구를 활용해주도록 하겠습니다.
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
bash Miniconda3-latest-MacOSX-arm64.sh
위 두개의 명령어를 통해서 미니콘다를 설치할 수 있습니다.
conda create -n torch-m1-gpu python=3.10
conda activate torch-m1-gpu
다음 이 두개의 명령어를 실행하여 torch-m1-gpu라는 이름의 환경을 생성하고 활성화 해주었습니다. 이제 conda 환경 내에서 파이썬과 여러 패키지를 관리할 수 있습니다.
Pytorch설치하기
Pytorch 공식 홈페이지에서 설치방법을 확인해볼 수 있습니다. 저희는 아래의 명령어로 설치를 진행해보겠습니다.
conda install pytorch torchvision -c pytorch
위 방법으로 하면 파이토치가 깔끔하게 설치됩니다.

방금 설치한 환경에서 python3
명령어를 통해 파이썬을 켜주시고, 아래의 명령어를 차례로 입력해서 모두 True가 나오는지 확인해주세요.
>>> import torch
>>> print(torch.backends.mps.is_available())
>>> print(torch.backends.mps.is_built())
위 명령어는 macOS의 GPU에 해당하는 MPS(Metal Process Service)가 제대로 사용할 수 있도록 설치되었는지 체크하는 명령어 입니다. 체크가 완료되었다면 Genesis에서 CPU가 아닌 GPU를 사용하여 원활한 실습이 가능합니다.
Genesis 설치하기
이 과정이 끝났다면 genesis설치는 매우 간단합니다. 아까와 같이 conda 환경에서 아래의 명령어를 통해 설치를 진행해주세요.
pip install genesis-world
설치가 완료되면, 기본적인 세팅은 마무리 됩니다. 다른 옵션이 필요하다면 설치 페이지에 방문하셔서 다른 선택지를 확인해보실 수 있습니다.
예제코드 돌려보기
Genesis의 첫페이지에 있는 실습 예제를 시작해보겠습니다. 예제 코드를 그대로 돌려볼 경우, macOS에서 시뮬레이션 화면이 나오지 않기에, macOS에서 실습할 수 있도록 코드를 수정하였습니다. python파일 (확장자 .py)를 열고 아래의 코드를 넣어 실행해주세요.
import genesis as gs
def run_sim(scene, enable_vis):
for i in range(1000):
scene.step()
if enable_vis:
scene.viewer.stop()
gs.init(backend=gs.metal)
scene = gs.Scene(
sim_options=gs.options.SimOptions(),
viewer_options=gs.options.ViewerOptions(
camera_pos=(3.5, 0.0, 2.5),
camera_lookat=(0.0, 0.0, 0.5),
camera_fov=40,
),
show_viewer=True,
rigid_options=gs.options.RigidOptions(
dt=0.01,
gravity=(0.0, 0.0, -10.0),
),
)
plane = scene.add_entity(gs.morphs.Plane())
franka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)
scene.build()
gs.tools.run_in_another_thread(
fn=run_sim,
args=(scene, True))
scene.viewer.start()
위 코드를 실행하면 아래와 같은 실행화면이 나오게 됩니다. 처음 실행할 경우, 시간이 다소 오래 걸릴 수 있습니다.

Building Visualizer...
라는 문구가 보이기 시작할 때 쯤 아래와 같은 화면이 나오게 됩니다.

이 화면이 등장하면 첫 시뮬레이션이 성공적으로 이뤄진 것입니다. cntrl + c
를 눌러 실험을 종료해주세요.
다양한 학습 예제 섭렵하기
사용 방법 학습하기에 가시면, 지금 만든 로봇을 실제로 움직여서 시뮬레이션을 할 수 있도록 되어있습니다. 제일 복잡한 환경세팅이 일부 마무리 되었으니,
정리하자면, 시뮬레이션의 최강자의 등장이라고 볼 수 있습니다. 현실 세계에서 하지 못하는 실험을 해볼 수 있고, 몇년이 걸리는 물리 실험들도 더 짧은 시간에 진행해 볼 수 있습니다.
특히 로봇의 움직임을 학습하기 위해, 과거에는 직접 사람이 로봇을 움직이며 학습을 해야했고, 그 과정은 어렵고 복잡했습니다. 특히 강화학습(Reinforcement Learning)을 위해서는 실험 환경을 직접 코딩하여 보상체계를 구축해야만 했는데, 이 환경이 만들어짐에 따라 실험환경을 직접 구축할 수 있습니다.
메트릭스 영화가 점점 현실이 되고 있습니다. 언어모델, 시각모델, 시뮬레이션 세상, 강화학습 등.. 앞으로 기술이 바꿀 우리의 세상이 궁금해지는 요즘입니다.