> 기술 주변기기 > 일체 포함 > Genesis Physics Engine : 창세기 설정을위한 단계별 안내서

Genesis Physics Engine : 창세기 설정을위한 단계별 안내서

Christopher Nolan
풀어 주다: 2025-03-01 09:54:09
원래의
334명이 탐색했습니다.

작년에 Genesis는 현실적인 물리 시뮬레이션, Interactive 4D Worlds 등을 만들기위한 흥미로운 새로운 도구로 출시되었습니다. 나는 그것을 시도하기를 간절히 바랐지만 일을하는 것은 쉽지 않았습니다. 설정 중에 많은 도전에 직면했음을 인정해야합니다. 

이 튜토리얼에서는 제가 발행 한 문제를 간단히 공유하고 Google Colab과 몇 가지 트릭을 사용하여 어떻게 실행되었는지 보여줍니다.

. 창세기 개요 만 원한다면 이전 기사 인 Genesis Physics Engine : 예제가있는 가이드를 확인하십시오. 창세기 에 대한 초기 설정 경험 처음 창세기 작업을 시작했을 때 문서의 설치 단계를 따랐습니다. 바로, 나는 종속성에 문제를 일으켰다. Genesis에는 Taichi (1.7.x)라는 모듈의 특정 버전이 필요하지만 MACOS는 지원하지 않았습니다. 참고로, 내 Mac은 8 살입니다.… 일부 연구 후, 나는 다른 사용자들도 더 나은 컴퓨터를 사용하더라도 같은 문제가 있음을 깨달았습니다. 몇 시간 동안 노력하고 창세기가 특정 Python 버전과 만 작동한다는 사실을 알게 된 후 마침내 설치했습니다. . 그러나 새로운 문제가 나타났습니다. 아무것도 렌더링하지 않을 것이며 OpenGL에 몇 가지 문제가있었습니다. Github에서 예제 파일을 실행하려고 할 때에도 더 많은 오류와 충돌에 직면했습니다. 그런 다음 분류했다고 생각했을 때 "Uniform Found"와 같은 오류가 발생하기 시작했습니다. 이는 일부 렌더링 설정이 누락되었음을 의미했습니다. 이 과정에서, 나는 온라인으로 다른 사람이 같은 문제를 겪었는지 확인하기 위해 온라인으로 조사했습니다. 내가 유일한 사람이 아니 었습니다. 사람은 같은 어려움에 직면했으며 많은 사람들이 스크립트를 작동시키기위한 해결책을 찾을 수없는 것처럼 보였습니다.

. 내가 창세기 작업을 한 방법 : 구글 콜랩 초기 좌절 후, 나는 프로 계정으로 Google Colab을 시험해보기로 결정했고, 정확히 내가 필요한 것으로 판명되었습니다. Colab의 GPU 리소스를 사용하여 다음을 수행 할 수있었습니다

문제없이 필요한 모든 종속성을 설치하십시오

GPU 백엔드를 사용하여 훌륭한 성능과 현실적인 렌더링을 달성하십시오. 마지막으로, 기본 예제를 실행하고 창세기의 잠재력을 탐구하십시오.

나는 NVIDIA A100-SXM4-40GB를 선택했는데, 이는 창세기 시뮬레이션을 효율적으로 처리 할 수있을만큼 강력한 것으로 판명되었습니다. 

Google Colab 환경을 설정하고 Genesis를 설치하면 문서에서 가장 간단한 예제를 실행하려고했습니다.

이 예제는 CPU 백엔드로 창세기를 초기화하고 기본 장면을 표시해야합니다. 그러나 나는 즉시 다음 오류에 부딪쳤다 :

오류 메시지는 Genesis가 장면을 렌더링하기 위해 그래픽 창을 만들려고 노력하고 있지만 Google Colab은 실시간 시각화를 지원하지 않습니다. Colab은 로컬 디스플레이에 액세스 할 수없는 원격 환경에서 실행되므로 Gs.Scene () 초기화의 show_viewer = true 매개 변수가 작동하지 않습니다. 오류 메시지에서 제안한대로 뷰어를 비활성화하기 위해 코드를 수정했습니다.

이를 통해 스크립트는 충돌없이 실행할 수있었습니다. 그러나이 접근법은 결과를 직접 시각화 할 방법이 없음을 의미했습니다.

온라인을보고 난 후에, 나는 다른 사람들이 같은 문제에 직면했다는 것을 알게되었습니다. 많은 제안 된 솔루션에는 원격 OpenGL 환경을 구성하거나 XVFB를 사용하여 가상 디스플레이를 작성했습니다. 불행히도, 나는 의존성 충돌과 환경의 한계로 인해 이러한 방법을 Colab에서 안정적으로 작동시킬 수 없었습니다.
import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(show_viewer=True)
로그인 후 복사
로그인 후 복사
. 이 시점에서 더 실용적인 해결 방법이 필요했습니다! 실시간 렌더링은 Colab에서 옵션이 아니기 때문에 프레임별로 렌더링 된 출력 프레임을 이미지로 저장하기로 결정했습니다. 이 아이디어로 나중에 애니메이션으로 결합 될 수있는 일련의 이미지를 생성 할 수있었습니다.

구현 및 출력 이 섹션에서는 코드의 구현과 내가 얻은 출력을 안내해 드리겠습니다.

GPU 환경 설정 우선, 나는 창세기를 설치했습니다 :

그런 다음 GPU 가속을위한 Cuda 백엔드로 창세기를 초기화했습니다.

이것은 내가 얻은 출력입니다 :

장면을 만들고 구축합니다 결과를 ​​저장하기위한 디렉토리를 만듭니다 가장 먼저 필요한 것은 Genesis가 렌더링 한 이미지를 저장할 수있는 폴더였습니다. 

> os.makedirs () 함수는 지정된 경로에서 simulation_frames라는 폴더를 생성하고 ENDERS_OK = TRUE 인수는 폴더가 이미 존재하면 오류가 발생하지 않도록합니다.

이 방법으로, 나는 시뮬레이션에서 모든 프레임과 출력을 저장할 수있는 전용 장소를 가졌습니다.

장면을 초기화하십시오

다음으로 객체를 추가하고 그들과 상호 작용할 수있는 장면을 만들어야했습니다.

.

gs.scene ()은 새로운 시뮬레이션 공간을 초기화하고 show_viewer = false 실시간 시각화를 비활성화합니다. 이 시점에서, 나는 구축을 시작할 준비가 된 빈 장면이있었습니다.

비행기와 상자를 추가하십시오 장면이 준비된 상태에서 객체를 추가하기 시작했습니다. 나는 처음으로 비행기를 추가했는데, 이는 땅으로 작용합니다.

GenesisException: No display detected. Use show_viewer=False for headless mode.
로그인 후 복사
로그인 후 복사
비행기는 시뮬레이션을위한 평평한베이스 역할을합니다. 기본적으로, 그것은 무한대이며 x-y 축을 따라 평평합니다.

다음, 나는 장면에 상자를 추가했다 :

나는 상자를 장면의 중앙에 (0, 0, 0)으로 설정했고, 너비가 0.5 단위, 키가 크고 깊이로 만들어 기본보다 작게 만들었습니다.
scene = gs.Scene(show_viewer=False)
로그인 후 복사
이제, 나는 간단한 설정을 가졌다 :지면과 같은 비행기와 그 위에 놓여있는 상자가있다.

카메라 추가 장면에서 무슨 일이 일어나고 있는지 캡처하기 위해 카메라를 추가했습니다.

import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(show_viewer=True)
로그인 후 복사
로그인 후 복사
나는 이미지 해상도를 320x240 픽셀로 설정하고 테스트를위한 실질적인 선택으로 카메라를 (3.5, 2.0, 2.5)로 배치하여 약간 위와 측면에서 장면을 명확하게 볼 수있었습니다. 상자의 초점을 유지하기 위해 카메라를 상자 중앙 바로 위에있는 (0, 0, 0.5)로 목표로 삼았습니다. 30도 시야 (FOV)를 사용하여 카메라는 장면의 좁고 집중된 관점을 포착했습니다. 

장면을 구축하십시오 다음 단계는 시뮬레이션 및 렌더링을 위해 장면을 준비하는 것이 었습니다.

이 단계는 Genesis가 정시 (JIT) 컴파일을 사용하여 시뮬레이션을 최적화하기 때문에 중요합니다. 내가 장면을 만들 때, 창세기 :

장면의 객체에 대한 메모리를 할당했습니다 렌더링 및 물리 계산을위한 준비된 GPU 커널 시뮬레이션이 원활하게 실행되기 위해 필요한 모든 데이터 구조를 설정합니다.

이제 모든 것이 준비되었습니다 - 내 평면, 상자 및 카메라가 설정되어 장면이 제작되었습니다.
GenesisException: No display detected. Use show_viewer=False for headless mode.
로그인 후 복사
로그인 후 복사
렌더링 및 저장 출력 시뮬레이션을 시각화하기 위해 프레임별로 출력을 렌더링하고 저장했습니다. 각 프레임은 Simulation_frames 디렉토리의 이미지로 저장되었습니다. 

렌더링 프로세스 중에 처음 몇 개의 프레임이 빠르게 렌더링되었지만 (최대 2,297fps) 시뮬레이션이 진행됨에 따라 성능이 감소했습니다. FPS는 결국 프레임 25에 의해 약 0.33fps로 떨어졌습니다. 이것은 더 큰 장면에 대한 시뮬레이션의 계산 복잡성 또는 아마도 GPU 자원 제약 조건이 증가하기 때문일 수 있습니다.
    . 이것은 내가 얻은 출력입니다 :
  • 이것들은 내가 얻은 이미지입니다 :

각 이미지는 카메라를 통해 볼 수 있듯이 시간이 지남에 따라 평면과 관련하여 상자가 어떻게 움직이는지를 보여줍니다. 시뮬레이션은 단계로 실행되며 각 단계마다 상자의 위치가 변경되어 상자가 움직이는 것처럼 보입니다.

이 예는 창세기가 간단한 물리적 상호 작용을 시뮬레이션하고 표시 할 수있는 방법을 강조합니다. 이 설정은 기본이지만 장면에서 객체가 어떻게 행동하는지에 대한 좋은 아이디어를 제공합니다. 그러나 창세기로보다 복잡하고 현실적인 시나리오를 만들 수 있습니다! 다음 섹션에서 이러한 기능 중 일부를 탐색 할 것입니다.

기원 탐색 : 기능 및 기능 객체와 장면 생성 Genesis를 사용하면 다양한 객체와 모프를 추가하여 복잡한 장면을 만들 수 있습니다. 물체는 비행기, 상자 및 구체와 같은 간단한 프리미티브에서 구체와 같은 로봇 및 지형과 같은 더 복잡한 엔티티에 이르기까지 다양합니다. 형상 프리미티브 : gs.morphs.Plane gs.morphs.box gs.morphs.cylinder gs.morphs.sphere 외부 파일 지원 :

Mujoco XML 로봇 구성을위한 에 대한 <:> urdf : gs.morphs.urdf mesh : gs.morphs.mesh.

Genesis는 "Morph"라는 통합 된 개념을 사용하여 지오메트리를 캡슐화하고 정보를 제공합니다. 이 객체 지향 설계는 메소드를 사용하여 엔터티와 직접 상호 작용할 수 있습니다. 렌더링 및 시각화 Genesis의 주요 강점 중 하나는 고급 카메라 기능을 사용하여 자세한 시각적 출력을 만들 수있는 기능입니다. 카메라는 "헤드리스 모드"에서 작동하므로 디스플레이 화면이 없으면 이미지를 생성 할 수 있습니다. 일반 컬러 이미지 (RGB)를 포함하여 다양한 유형의 비주얼, 객체가 얼마나 멀리 떨어져 있는지 보여주는 깊이 맵, 장면의 다른 부분에 레이블을 지정하는 세분화 마스크 및 표면 세부 사항을 나타내는 일반 맵을 생성 할 수 있습니다.

녹음 동영상 카메라가 시뮬레이션의 각 프레임을 자동으로 녹음하도록하여 비디오를 만들 수 있습니다. 녹음 중에 카메라를 이동하여 비디오를보다 역동적이고 몰입 할 수 있습니다. 예를 들어 프레임을 캡처하면서 장면 주변의 원형 경로로 이동하도록 카메라를 구성 할 수 있습니다. cam.start_recording () 함수가 녹음을 시작하고 시뮬레이션의 각 단계에서 카메라의 위치가 업데이트됩니다. 모든 프레임이 캡처되면 cam.stop_recording ()은 비디오를 "video.mp4"로 저장합니다. 최종 비디오는 시뮬레이션을 부드럽게 볼 수있어 객체가 시간이 지남에 따라 상호 작용하고 움직이는 방법을 보여줍니다. 운동 작업을위한 지형 생성

로봇 공학 및 AI 훈련을 위해 다양한 유형의 지형을 만들 수도 있습니다. 내장 지형 옵션을 사용하거나 Gs.Morphs.terRain으로 사용자 정의 높이 맵을 제공하여 직접 설계 할 수 있습니다. 이 지형은 로봇이 어떻게 움직이는 지 테스트 및 훈련에 적합하여 창세기가 로봇 연구를위한 훌륭한 도구입니다. 확장 성 여러 가지 방법으로 시뮬레이션을 사용자 정의 할 수도 있습니다. 객체에 현실적인 텍스처를 추가하여 더 생생하게 보이게 할 수 있습니다. 또한 모델 가져 오기를위한 많은 파일 형식을 지원하며 형식이 지원되지 않으면 추가하도록 요청할 수 있습니다. 또한 개인화 된 파일 및 설정을 사용하여 고유 한 사용자 정의 객체 모양 (Morphs)을 만들 수 있습니다.

결론 이 튜토리얼은 창세기를 시작하는 데 도움이되는 간단한 예를 제공했습니다. 우리는이 강력한 물리 엔진이 어떻게 작동하는지 보여주기 위해 장면 생성, 객체 추가 및 렌더링 출력과 같은 기본 사항을 다루었습니다. 그러나 이것은 창세기가 할 수있는 일의 시작일뿐입니다. 강력한 GPU 및 충분한 메모리와 같은 올바른 하드웨어를 사용하면 많은 가능성이 있습니다. 복잡한 로봇 공학 시뮬레이션 또는 AI 교육을위한 고품질 데이터 세트를 만드는 데 사용할 수 있습니다. 그것을 설정하는 것은 까다로울 수 있지만, 그것은 큰 잠재력을 가진 도구입니다!

.

위 내용은 Genesis Physics Engine : 창세기 설정을위한 단계별 안내서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿