💡Issac Sim이란?
Isaac Sim은 NVIDIA Omniverse 플랫폼을 위한 포괄적인 로봇 시뮬레이션 툴킷으로, 가상 로봇 환경을 구축하고 실험을 수행하는 데 필수적인 다양한 기능을 제공한다.
Isaac Sim 정보
NVIDIA Isaac Sim은 NVIDIA Omniverse™ 플랫폼을 기반으로 구축된 확장 가능한 로보틱스 시뮬레이션 애플리케이션 및 합성 데이터 생성 도구입니다. PhysX 5를 사용한 고급 GPU 지원 물리 시뮬레이션, 실시간 광선 및 경로 추적을 통한 포토리얼리즘, 물리 기반 렌더링을 위한 MDL 머티리얼 정의 지원 등 Omniverse Kit의 강력한 시뮬레이션 기술을 활용합니다. Isaac Sim은 AI 기반 로봇을 개발, 테스트 및 관리하기 위한 물리적으로 정확한 가상 환경이며 로봇 모델 가져오기 및 RGB-D, Lidar, 접촉, 초음파 및 IMU와 같은 센서 시뮬레이션을 포함하여 가상 로봇 실험을 구축하는 데 필수적인 기능을 제공합니다. Isaac Sim은 파이썬, ROS 및 Isaac SDK를 통해 탐색, 조작, 딥 러닝 애플리케이션을 지원합니다. AI 애플리케이션을 위해 Isaac Sim은 합성 데이터 생성 및 도메인 무작위화를 위한 Isaac Replicator, 강화 학습을 위한 Isaac Gym, 높은 수준의 의사 결정 프로그래밍을 위한 Cortex와 같은 광범위한 도구를 제공합니다.
로봇 연구 및 개발 과정에서 실제 로봇을 보유하고 테스트하는 것은 중요하지만, 기본적으로 로봇이 제대로 작동하는지 확인하기 위해 시뮬레이션을 통해 확인한다. Isaac Sim은 이러한 시뮬레이션을 작동할 수 있도록 설계되어 있다. Issac Sim을 통해 실제 환경에서 테스트하기 전에 로봇을 가상으로 시뮬레이션하고 튜닝할 수 있기 때문에 시간과 비용을 절약하여 개선된 로봇 시스템을 개발할 수 있다.
GPU 기반 시뮬레이션
GPU는 Graphics Processing Unit의 약자로, 그래픽 처리 장치를 가리킨다. 컴퓨터의 그래픽 처리를 담당하는 전용 하드웨어로, 3D 그래픽을 생성하고 디스플레이에 출력하는 등의 작업을 수행한다. CPU와 달리 대량의 병렬 처리를 수행하여 그래픽 작업을 빠르고 효율적으로 처리할 수 있다. 또한, 최근에는 딥러닝 및 과학 계산과 같은 다양한 분야에서도 활용되고 있다.
Isaac Sim은 CPU 기반의 기존 시뮬레이션과는 다르게 GPU 기반으로 작동하기 때문에 가상 환경을 더욱 생생하게 묘사할 수 있다. 이는 최신 그래픽카드 기술 중 하나인 레이트레이싱을 활용하여 실제 환경과 거의 흡사한 시뮬레이션을 제공한다는 장점을 갖고 있다.
레이 트레이싱(Ray Tracing)
레이트레이싱은 컴퓨터 그래픽에서 사용되는 실시간 그래픽 렌더링 기술 중 하나이다. 이 기술은 광선이 물체와 상호 작용하여 굴절, 반사, 그림자 등과 같은 현실적인 빛의 동작을 시뮬레이션하는 데 중점을 둔다.
전통적인 렌더링 기술은 객체의 표면에 대한 광선을 추적하여 그림자와 반사를 계산해 왔다. 그러나 레이트레이싱은 더욱 현실적인 결과를 얻기 위해 광선을 카메라에서부터 시작하여 물체를 향해 직접 발사하고, 그 과정에서 빛의 반사, 굴절, 그림자 등을 모두 고려한다.
레이 트레이싱은 현실적인 그래픽을 제공하며, 게임, 영화 및 시뮬레이션 분야에서 사용되어 시각적으로 더욱 풍부하고 현실적인 경험을 제공하지만, 계산량이 많고 복잡하기 때문에 고성능의 하드웨어가 필요하다. 최근에는 GPU의 발전으로 실시간으로도 이 기술을 적용하는 것이 가능해졌다.
강화학습(Reinforcement Learning)
Isaac Sim을 사용하는 가장 큰 장점 중 하나는 강화학습을 수행할 수 있다는 것이다. CPU 기반 시뮬레이션에서는 CPU에서 계산된 물리 현상을 GPU로 데이터를 전송하고 다시 CPU로 결과를 받는 과정에서 상당한 시간이 소요된다. 그러나 Isaac Sim은 GPU 내에서 시뮬레이션과 트레이닝을 동시에 수행하기 때문에 이러한 지연을 피할 수 있다.
또한, Isaac Sim의 Gym을 이용하면 하나의 환경에서 여러 시뮬레이션을 병렬로 실행할 수 있어 기존 방식보다 훨씬 효율적이다. 이는 연구 및 실험 과정에서 빠른 결과 도출과 더 많은 실험 수행이 가능하다는 장점을 제공한다.
https://docs.omniverse.nvidia.com/isaacsim/latest/overview.html
System Architecture
Isaac Sim의 시스템 아키텍처는 내부 구조를 개요하며 다양한 구성 요소가 어떻게 상호 작용하는지를 보여준다.
Development Workflows
이 다이어그램은 Isaac Sim 내에서 사용자가 가상 로봇 환경을 생성하고 관리하는 프로세스를 보여준다.
💡Isaac Sim 설치
Issac Sim을 설치하기 전에 Nucleus localhost 서버를 생성한다.
NVIDIA Omniverse 거래소에서 Isaac Sim을 검색하여 설치를 진행한다.
2023.1.1 버전 기준, 최소 사양으로 8GB 이상의 저장 공간, Intel Core i7 CPU, RTX GPU를 필요로 한다.
i7-11370H, GeForce RTX 3050 정도라면 Isaac Sim을 사용할 수는 있으나, 보통 3D 그래픽 작업은 높은 컴퓨터 성능을 요구하므로 되도록 이러한 추천 사양으로 진행하도록 한다.
NVIDIA Omniverse는 자주 사용되는 자원을 임시로 저장하는 데 Cache를 사용한다. Cache는 프로그램의 성능을 향상하고 작업을 빠르게 실행할 수 있도록 도와주지만, 디스크 공간을 사용하므로 충분한 용량을 확보해 두는 것이 좋다.
💡Isaac Sim 실행
Isaac Sim의 기본적인 인터페이스는 위 글을 참고한다.
설치를 완료한 경우 라이브러리에 Isaac Sim이 추가되며, 런칭 버튼을 통해 시작할 수 있다.
Isaac Sim App Selector
Isaac Sim 애플리케이션은 메인 앱과 헤드리스 앱, 두 가지 주요 실행 모드를 제공한다.
- 메인 앱: 시각적으로 시뮬레이션을 제어할 수 있는 GUI를 가진 기본 모드
- 헤드리스 앱: GUI 없이 명령줄 또는 웹 브라우저를 통해 원격으로 실행할 수 있는 모드
헤드리스는 GUI가 보이지 않는 실행 모드이다. 따라서 메인 앱으로 실행하도록 하자.
START 버튼을 클릭하면 콘솔 창이 나타나면서 시뮬레이션이 실행된다.
콘솔 창에 로그가 기록되며, 콘솔 창이 꺼지면 Isaac Sim도 함께 종료되므로 주의하도록 한다.
Franka Nut and Bolt
Franka Nut and Bolt는 Isaac Sim에서 기본적으로 제공하는 예제 중 하나로, 판다 로봇을 사용하여 나사와 볼트를 조작하고 조립하는 작업을 시뮬레이션한다.
Panda robot
https://robodk.com/robot/ko/Franka/Emika-Panda
판다 로봇은 독일의 회사인 Franka Emika에서 개발한 7축 로봇 팔이다. 이 로봇은 고정밀 작업과 협력적 작업에 모두 적합하며, 유연한 동작과 안전한 협력을 위해 설계되어 있다. 판다 로봇은 고속, 정확성 및 안전성을 결합하여 다양한 산업 분야에서 사용된다.
Isaac Examples
Isaac Examples 탭에서 Manipulation 서브 탭에 있는 Franka Nut and Bolt를 선택하여 판다 로봇을 불러왔다.
처음에 Asset을 로드할 때 필요한 리소스를 다운로드하기 때문에 시간이 걸리는 편이다.
예제를 불러와 로봇의 구성을 확인할 수 있으며, 좌측 시뮬레이션 실행 버튼을 눌러 실행하면 로봇이 너트를 볼트에 체결하는 시뮬레이션이 실행된다.
로봇 부품에 오차가 생기면 시뮬레이션이 멈추게 된다. 만약 로봇의 위치가 조정되어 시뮬레이션을 할 수 없는 상황이라면 RESET 버튼을 눌러 처음 상태로 되돌리도록 한다.
https://docs.omniverse.nvidia.com/isaacsim/latest/features/physics/sdf_nut_and_bolt_extension.html
Franka Nut and Bolt 예제는 위 Document를 참고하였다.
HoliCity CAD
HoliCity는 고해상도의 거리뷰 파노라마 이미지와 도시 CAD 모델이 정확하게 정렬된 대규모 데이터셋이다.
CAD 맵에서 USD 파일 생성
HoliCity CAD 파일을 다운로드하고, CAD 파일을 USD 파일로 변환하기 위해 USD composer를 실행한다.
CAD 파일을 사용할 때 'CAD CONVERTER' Extension을 활성화해야 한다. 이를 위해 Window에서 Extensions을 클릭하고 CAD CONVERTER를 auto load 한다. 그리고 USD composer를 다시 실행하여 File에서 Import를 통해 CAD 파일을 불러온다. 그리고 불러온 CAD 파일을 필요에 맞게 수정한 후 저장한다. 이 때, 맵을 중심에 위치시키고 조명을 추가할 수 있으며, 저장된 USD 파일이 HoliCity usd 파일로 생성된다.
Isaac Sim에서 시뮬레이션
- Isaac Sim을 실행한다.
- Isaac Examples > Hello World를 클릭하여 해당 예제 파일을 불러온다. 이는 vscode에서 Isaac Sim과 연동된 파일이 열리게 된다.
- vscode에서 sejong_crawler와 같은 필요한 파이썬 모듈을 추가하고, isaac/examples 폴더에 해당 모듈 파일을 이동시킨다. 또한, 사용하고자 하는 USD 파일의 경로를 정의한다.
- Isaac Examples > 사용하고자 하는 파일 이름을 클릭하고 LOAD 버튼을 클릭하여 HoliCity 맵을 불러온다. (예: SejongCrawler)
- START 버튼을 클릭하여 파이썬 모듈의 코드를 실행한다. 이후에는 STOP 버튼으로 시뮬레이션을 중지할 수 있다.
- 시뮬레이션이 완료되면 크롤링 결과 폴더에 맵의 이미지들이 저장된다.
이렇게 하면 CAD 맵을 USD 파일로 변환하고, Isaac Sim에서 시뮬레이션을 실행하는 작업이 수행된다.
참고 자료
What Is Isaac Sim?, NVIDIA, 2024.03.14.
Isaac Sim Interface, NVIDIA, 2024.03.14.
SDF: Nut and Bolt Extension, NVIDIA, 2024.03.14.
[Isaac Sim - 초급] #1 Isaac Sim 소개 및 설치, KIMe Lab, 2023.02.14.
[Omniverse] 옴니버스에서 시뮬레이션 하기, H J, 2023.08.06.