Post

NVIDIA Isaac Sim - Introduction

What is Isaac Sim?

isaac_sim

Isaac Sim은 AI 로봇을 기반으로 한 더 빠르고 효율적인 시뮬레이션 설계, 테스트 및 학습이 가능한 로봇 시뮬레이터입니다. Isaac Sim에서는 로봇 팔, 모바일 로봇 등 다양한 로봇이 존재하며 2024년 01월 기준 2023.1 버전이 출시되어 있다. Isaac Sim은 ROS/ROS2, Domain Randomiation, Ground-truth labeling, segmentation, bounding boxes와 같이 Robot 조작 및 Computer vision 테크닉도 같이 사용이 가능하여 로봇을 학습 또는 사용하고자 한다면 좋은 플랫폼이 되지 않을까 생각된다.

System Architecture

Isaac Sim에서는 다양한 사용자 층을 고려하여 다양한 robot의 파일형식을 import할 수 있으며 아래와 같이 나열되어 있다. isaac_sim_system_architecture

  1. Onshape: 무료 웹 CAD 프로그램 중 하나인 Onshape는 클라우드 컴퓨팅을 통해 작업이 가능한 도구이다. 사용자들에 의하면 다른 CAD 프로그램들과 호환성이 좋다고 한다.
  2. URDF: URDF는 Unified Robot Description Format의 줄임말으로써, URDF를 이용하면 로봇의 Navigation, Manipulation, Remote Control이 가능하다. 기본적으로 URDF는 XML 형식으로 작성이 가능하다.
  3. MJCF: MJCF는 Multi-Joint dynamics with contact의 약자로 물리 시뮬레이션을 위한 XML 파일 형식이다. MJCF 파일은 고급 물리 시뮬레이션인 Mujoco에서 쓰이는 파일이다.
  4. USD: USD는 Universal Scene Description의 약자이며 콘텐츠 생성 및 다양한 도구 간 교환을 위해 Pixar에서 개발한 쉽게 확장 가능한 오픈 소스 3D 장면 설정 및 파일 형식이다.

Omniverse Kit

Omniverse Kit는 기본 Omniverse application 및 microservice를 구축하기 위한 SDK (Software Development Kit)이다. Omniverse Kit을 이용하여 Isaac Sim내에 SDK를 개발하고 싶은 사람은 사용하면 좋을 것 같다.

Omniverse Nucleus

Isaac Sim을 사용하고 있거나 사용할 예정인 사람들은 Omniverse Nucleus를 알아두는게 좋을 것이라고 생각이 된다. Nucleus에는 다양한 환경 및 로봇 예제가 존재하고 이를 접근하여 수정사항을 DB (Database)에 게시하거나 구독할 수 있다. 클라우드 시스템과 동일하다고 보면 될 것 같다.

Isaac Sim Requirements

Isaac Sim 구동을 위해서 본인이 가지고 있는 System의 사양을 Simulation에서 요구하는 사양으로 맞춰주어야 한다. Isaac Sim에서 요구하는 사양은 아래와 같다.

  1. System Requirements
ElementMinimum SpecGoodIdeal
OSUbuntu 20.04/22.04,
Windows 10/11
Ubuntu 20.04/22.04,
Windows 10/11
Ubuntu 20.04/22.04,
Windows 10/11
CPUIntel Core i7 (7th Generation),
AMD Ryzen 5
Intel Core i7 (9th Generation),
AMD Ryzen 7
Intel Core i9 (X-series or higher),
AMD Ryzen 9 (Threadripper or higher)
Cores4816
RAM32GB*64GB*64GB*
Storage50GB SSD500GB SSD1TB NVMe SSD
GPUGeForce RTX 2070GeForce RTX 3080RTX A6000
VRAM8GB*10GB*48GB*
  1. Driver
Driver Version SupportWindowsLinux
Recommended528.24, 528.33 (Grid/vGPU)525.85.05, 525.85.12 (Grid/vGPU)
Minimum473.47510.73.05
Unsupported495.0 up to 512.59, 525 up to 526.91515.0 up to 515.17

Installation Environment

  • CPU: Intel(R) Core(TM) i9-10900X
  • GPU: NVIDIA GeForce RTX 3090 (2개)
  • OS: Ubuntu 20.04 LTS
  • NVIDIA Driver: 525.147.05

우선 사람들은 아래와 같이 여러가지 이유로 인해 Isaac Sim을 사용할 수 있다.

  1. 순수 Robotics (ex. ROS 사용, verification 용)
  2. AI agent 생성 및 verification 용 (Computer Vision, Reinforcement Learning)

필자는 강화학습 (Reinforcement Learning, RL)을 이용한 모바일 로봇 (Wheeled-Mobile Robot, WMR)을 학습시킬 예정이므로, WMR을 기준으로 포스팅을 작성하겠다.

Requirements

우선 WMR을 학습시키기 위해서는 아래와 같은 절차 (process)로 학습을 진행할 것인지가 중요하다.

  1. 학습할 환경 (ex. Indoor, Outdoor, …)
  2. 학습할 로봇 (ex. Robot Arm, WMR, …)
  3. 학습할 목표 (ex. navigation, collision avoidance, …)
  4. 학습할 알고리즘 (ex. DQN, DDPG, …)

위와 같이 어떠한 환경에서 학습을 진행할 것인지, 어떠한 로봇을 사용할 것인지, 어떠한 목표로 우리의 로봇을 학습시킬 것인지, 어떠한 알고리즘을 통해서 학습시킬 것인지가 중요하다. 목표가 제대로 정해지지 않은 상황에서 학습을 수행한다는 것은 꿈이 없이 공부만 계속하는 것과 같을 것이다.

이렇게 우리가 나눈 절차대로 학습을 진행하기 위해 순서대로 어떻게 이루어지는지 살펴볼 것이다.

Isaac Sim Content

Omniverse Isaac release에 따라 자체적으로 사용할 수 있는 asset들이 있다. 만약, 아래에 나열된 환경, 로봇, 센서, 소품, 주요 자산을 가져다 쓰고 싶다면 이전 포스팅에 언급된 Nucleus 서버에서 파일을 다운로드하거나 Nucleus 서버에 Isaac Mount를 생성해야한다. 자세한 설치 내용은 Isaac Sim First Run 또는 Sample Asset에서 확인가능하다.

만약 Nucleus 설치 및 세팅이 완료되었다면 아래와 같이 확인할 수 있다. nucleus_example

01. Environment Assets

우선 필자의 경우 Indoor 즉, 실내에서 움직이는 로봇을 만들 것이다. Isaac Sim내에서는 다양한 환경 asset들을 지원하며, 지원하는 대표적인 환경 asset은 아래와 같다.

Simple Grid

Simple Grid는 평평한 지면 (flat ground)와 그리드 텍스처가 있는 측면이 포함되어 있다. 단순하게, 평평한 바닥이 무한하게 있는게 아니라 벽이 있다. 아래의 첫번째, 두번째 환경은 정사각형 형태이고, 세번쨰 환경의 경우 모서리가 구부러진 (curved) 환경이다.

Asset 위치: /Isaac/Environments/Grid/

default_environment.usdgridroom_black.usdgridroom_curved.usd
default_grid_roomgridroom_blackgridroom_curved

Simple Room

Simple Room은 방에 테이블이 하나 놓여있는 구조이다.

Asset 위치: /Isaac/Environments/Simple_Room/simple_room.usd

simple_room.usd
simple_room

Warehouse

warehouse 환경에서는 선반 위에 objects들과 장애물들이 배치되어 있다.

Asset 위치: /Isaac/Environments/Simple_Warehouse/

warehouse.usdwarehouse_with_forklifts.usd
warehousewarehouse_with_forklifts
warehouse_multiple_shelves.usdfull_warehouse.usd
warehouse_multiple_shelvesfull_warehouse

Hospital

Hospital 환경에서는 병원과 같이 여러개의 방과 공간이 꾸려져 있다.

Asset 위치: /Isaac/Environments/Hospital/hospital.usd

hospital.usd
hospital

Office

Office 환경에서는 사무실처럼 여러개의 방과 복도로 꾸며져 있다.

Asset 위치: /Isaac/Environments/Office/office.usd

office.usd
office

Jetracer Track

Jetracer track에서는 바닥에 레이싱 트랙이 생성되어 있어, Computer vision으로 line tracking 또는 line following을 수행해보고 싶은 사람들에게는 좋은 환경이다.

Asset 위치: /Isaac/Environments/Jetracer/jetracer_track_solid.usd

jetracer_track_solid.usd
jetracer_track_solid

02. Robots Assets

Isaac Sim을 사용하는 사람들에게 희소식은 로봇의 경우 major한 (jetbot, carter) 로봇들은 이미 asset으로 제공하고 있다는 점이다.

03. Sensor Assets

04. Prop Assets

This post is licensed under CC BY 4.0 by the author.