genesis 사용후기
Genesis 사용 후기
우연히 Genesis에 대해 알게 되었다.
설명에 따르면
Genesis는 로봇 공학, 체화 AI, 물리 AI 애플리케이션을 위해 설계된 혁신적인 물리 시뮬레이션 플랫폼입니다
위와 같은 원래 였으면 로봇으로 하나하나 계속 해봐야 하는걸 시뮬로 대체할 수 있는 느낌.
https://genesis-embodied-ai.github.io/
더 많은 영상은 위 링크에서 확인할 수 있다.
요즘 이게 핫하다고 해서 뭐.. 그렇다고는 하는데 난 GPU가 없어서 노트북 로컬로 돌려봣다가 택도 없음을 느끼고
안돌아가겟지만 혹시나해서 git clone해서 구글 코랩으로 한번 돌려봤다.
!git clone https://github.com/Genesis-Embodied-AI/Genesis.git
!pip install -e .
아래의 코드가 기본 tutorial 코드다.
import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene()
plane = scene.add_entity(
gs.morphs.Plane(),
)
franka = scene.add_entity(
# gs.morphs.URDF(
# file='urdf/panda_bullet/panda.urdf',
# fixed=True,
# ),
gs.morphs.MJCF(file="xml/franka_emika_panda/panda.xml"),
)
scene.build()
for i in range(1000):
scene.step()
음. A100 결제해서 씀에도 페이지가 팅겻다.
I was trying Hello_Genesis on Google Colab. The building visualizer step takes about 20 minutes regardless of whether I use CPU or GPU.
github issues를 찾아봤더니 다른 사람은 20분정도걸리고 잘 된다는데 난 왜 팅기지.
Feature request: please add an example working in Google Colab 여기에 따르면 첫번째 답변자는 좀 프레임 낮추는 방식으로 성공한것 같은데 난 세번째 답변자처럼 무한로딩이다.
게다가 그게 중요한게 아니라 몰랐는데
Colab 환경에서 OpenGL 기반 실시간 시각화 불가
코랩에서는 실시간 시각화를 할 수 없단다. 음. 그렇쿠만. 뭐지? 저 사람들은 그럼 어케한거지? 내가 모르는 또 무언가가 있나?
최대한 돌려보기
사실 Gensis는 나온지 얼마 되지 않았다. 논문도 프레임워크도 아직 없고 오픈소스만 있는 거라 그런가 되게 불완전하고 뭐 그렇기에 github issues 도 활발하고 뭐.
나도 하나 써볼까 했다. 나처럼 Colab으로 Gensis를 돌려보고 싶은 사람도 있을 거 아냐?
없으려나. Gensis를 알 정도로 AI에 관심이 많으면 GPU가 있으려나.
- 프레임별 이미지 캡처 방식으로 전환
- 렌더링 결과를 파일로 저장하여 확인
이렇게 진행해서 한번 써보기로 했다. 코랩에서 실시간 시각화 어케 하냐고 물어볼겸.
Image Rendering and Saving Issues
렌더링이 계속 오류가 나서
-
rgb_data[0]을 사용하여 실제 이미지 데이터에 접근
-
numpy 배열을 PIL Image로 변환하여 저장
rgb_data = cam.render(rgb=True)
img_array = rgb_data[0]
img = Image.fromarray((img_array * 255).astype(np.uint8))
그리고
- 객체도 최대한 box로 단순화시켰다.
- 프레임 수 감소
- 해상도 조정
- 이미지 저장
이렇게 해서 겨우겨우 다행히 돌아가긴 했는데
카메라 위치가 이상해서 그런가 움직인게 보이긴한데 좀 멀리 잇넹.
import genesis as gs
import numpy as np
from PIL import Image
import os
gs.init(backend=gs.cuda)
# 결과 저장할 디렉토리 생성
save_dir = "/content/simulation_frames" # Colab의 경우 /content/ 경로 사용
os.makedirs(save_dir, exist_ok=True)
scene = gs.Scene(show_viewer=False)
# 객체 추가
plane = scene.add_entity(gs.morphs.Plane())
box = scene.add_entity(
gs.morphs.Box(
pos=(0, 0, 2),
size=(0.5, 0.5, 0.5)
)
)
# 카메라 설정
cam = scene.add_camera(
res=(320, 240),
pos=(2.0, 2.0, 2.0),
lookat=(0, 0, 0),
fov=30,
)
scene.build()
# 렌더링 및 이미지 저장
for i in range(30):
scene.step()
if i % 5 == 0:
print(f"Step {i}/30")
rgb_data = cam.render(rgb=True)
# rgb_data[0]이 실제 이미지 데이터
img_array = rgb_data[0]
img = Image.fromarray((img_array * 255).astype(np.uint8))
img.save(f"{save_dir}/frame_{i:03d}.png")
print(f"Frame {i} saved to {save_dir}")
뭐, Genesis를 써봣다하긴 머한데 그래도 돌아간거에 다행이다. 실시간 시각화 써보고 싶엇는데 아쉽넹. 1월에 GPU서버 할당받으면 그때 제대로 해봐야겠다.
Is real-time visualization possible in Google Colab?
위는 내가 올린 issues