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

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

Christopher Nolan
Christopher Nolan원래의
2025-03-01 09:54:09336검색

작년에 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으로 문의하세요.