Curieux.JY
  • Post
  • Note
  • Jung Yeon Lee

On this page

  • 1 Orbit?
  • 2 Orbit์„ ์„ค์น˜ํ•˜๊ธฐ ์ „์—
  • 3 Orbit ์„ค์น˜ํ•˜๊ธฐ
  • 4 Orbit์—์„œ ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •
  • 5 Extensions ์„ค์น˜
  • 6 Closing

๐Ÿ‘ฉโ€๐Ÿ’ปOrbit ์„ค์น˜ํ•˜๊ธฐ

orbit
isaacsim
code
Isaac Orbit Series 001
Published

April 4, 2023

Orbit์€ IsaacLab์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ Nvidia์˜ Omniverse Isaac Orbit์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , Orbit Docs - Installation Guide๋ฅผ ๋”ฐ๋ผ ์„ค์น˜๊ณผ์ •์„ ๊ธฐ๋กํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์„ค์น˜๋ถ€ํ„ฐ ์˜ˆ์ œ ์ฝ”๋“œ๋“ค์„ ์‚ดํŽด๋ณด๋ฉฐ ์‹œ๋ฆฌ์ฆˆ๋กœ ํฌ์ŠคํŒ…ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

1 Orbit?

๊ทธ๋Ÿผ, Orbit ์ด๋ž€ ๋ฌด์—‡์„ ๋งํ•˜๋Š” ๊ฑธ๊นŒ์š”? ๊ณต์‹ Docs์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Overview

Isaac Orbit (or orbit in short) is a unified and modular framework, built on top of NVIDIA Omniverse and Isaac Sim, for robot learning. It offers a modular design to easily and efficiently create robot learning environments with photo-realistic scenes, and fast and efficient simulation.

Orbit Github Main Image

์†Œ๊ฐœ๊ธ€์„ ๋ณด๋ฉด, ํฌ๊ฒŒ 2๊ฐ€์ง€ ํŠน์ง•์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ๋กœ๋Š” Robot learning์„ ์œ„ํ•œ ๋ชจ๋“ˆํ™”๋œ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ์ ์„ ์•Œ ์ˆ˜ ์žˆ๊ณ  ๋‘๋ฒˆ์งธ๋กœ๋Š” Omniverse์™€ Isaac Sim์ด๋ผ๋Š” ๊ฒƒ์— ๊ธฐ๋ฐ˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. Robot learning์„ ์œ„ํ•œ ์ด๋ผ๋Š” ๋ง์—์„œ Github ๋ฉ”์ธ ์‚ฌ์ง„์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋กœ๋ด‡ ์ž‘๋™์„ ์œ„ํ•œ ๋ชจ๋“  learning ๊ณผ์ •์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค๋‹ˆํ“ฐ๋ ˆ์ดํ„ฐ๋ถ€ํ„ฐ ํ•ธ๋“œ ๋กœ๋ด‡, ์‚ฌ์กฑ๋ณดํ–‰ ๋กœ๋ด‡์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์–‘ํ•˜๊ณ  ํญ๋„“์€ ๋กœ๋ด‡์˜ ์ž‘๋™ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ง€์›ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Orbit์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ Omniverse์™€ Isaac Sim์— ๊ธฐ๋ฐ˜ํ•œ๋‹ค๋Š” ์„ค๋ช…์€ ์ด์ „์— Nvidia์˜ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์ง€ ๋ชปํ•˜์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์ƒ์†Œํ•˜๊ณ  ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Nvidia์˜ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๊ฐœ๋ฐœ๊ณผ์ •์ด๋‚˜ ์ œํ’ˆ์— ๋Œ€ํ•ด ๊นŠ์ด ์•Œ์•„๋ณด๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด ์ด๋ฒˆ ํฌ์ŠคํŒ…์˜ ๋ชฉ์ ์€ ์•„๋‹ˆ๋ฏ€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ ํ”„๋กœ๊ทธ๋žจ๋“ค์˜ ์—ญํ•™๊ด€๊ณ„๋ฅผ ์‚ดํŽด๋ณด์ž๋ฉด, Omniverse > Isaac Sim > Orbit์˜ ๊ด€๊ณ„๋ผ๊ณ  ํŒŒ์•…ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Omniverse๊ฐ€ ๊ฐ€์žฅ ํฐ ๋ฒ”์œ„์˜ ๊ฐ€์ƒ์„ธ๊ณ„๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ์ด๊ณ  ๊ทธ ์•„๋ž˜์— ๋กœ๋ด‡ํ‹ฑ์Šค ๋ถ„์•ผ๋ฅผ ์œ„ํ•œ ํ•˜์œ„ ํ”Œ๋žซํผ Isaac Sim์ด ์žˆ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ทธ ์•ˆ์— ์˜ค๋Š˜ ํฌ์ŠคํŒ…์˜ ์ฃผ์ธ๊ณต์ธ Orbit์ด ์žˆ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์„ค๋ช…์„ ๋“ค์—ˆ์„ ๋•Œ ๋ช…ํ™•ํžˆ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Isaac Sim๋„ ๋กœ๋ด‡ํ‹ฑ์Šค ๋ถ„์•ผ๋ฅผ ์œ„ํ•œ ํ•˜์œ„ ํ”Œ๋žซํผ์ธ๋ฐ ๊ทธ ์•ˆ์— Orbit์œผ๋กœ ๋˜ ๋”ฐ๋กœ Robot learning์ด๋ผ๋Š” ๋ชจ๋“ˆ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋” ํ•„์š”ํ• ๊นŒ ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์ด์ „์— Nvidia์˜ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์กฐ๊ธˆ ์•„์…จ๋˜ ๋ถ„๋“ค์ด๋ผ๋ฉด, Isaac Gym์ด๋ผ๋Š” ๊ฐ•ํ™”ํ•™์Šต, ์ฆ‰ robot learning์„ ์œ„ํ•œ (Issac Sim๋ณด๋‹ค ์ข€ ๋” ๊ธฐ๋Šฅ์ด ์ œํ•œ๋œ) ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋Š”๋ฐ Orbit์€ ์–ด๋–ค ์œ„์น˜์ธ์ง€ ๋” ์• ๋งค๋ชจํ˜ธํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ €๋„ ๊ธฐ์กด์— Isaac Gym์œผ๋กœ ๊ฐ•ํ™”ํ•™์Šต์„ ์ง„ํ–‰ํ•ด์™”๋˜ ์‚ฌ๋žŒ์œผ๋กœ์จ Orbit์˜ ๋“ฑ์žฅ์€ ์˜์•„ํ•œ ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์˜๋ฌธ์„ ๋งŽ์€ ์œ ์ €๋“ค๋„ ๋А๊ผˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํฌ๋Ÿผ์— ์˜ฌ๋ผ์˜จ Q&A์—์„œ ๊ณต์‹ Orbit Maintainer์˜ ๋‹ต๋ณ€์œผ๋กœ๋Š”, Orbit์€ Isaac Sim์˜ ์ง„์ž…์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ๋‚ด์žฅ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ 2๊ฐ€์ง€์˜ ๋ชฉ์ ์ด ์žˆ์–ด์„œ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (Q&A ์›๋ณธ์€ ๋งํฌ์™€ ํ•จ๊ป˜ ์•„๋ž˜์— ์ ์–ด๋‘์—ˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.)

  1. ๋ณด๋‹ค ๊ฐ„์†Œํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด์„œ ๋กœ๋ด‡ ํ•™์Šต์„ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค๊ณ„ ๋ฐ ๊ฐ•ํ™”ํ•™์Šต, ๋ชจ์…˜ ํ”Œ๋ž˜๋‹ ๋“ฑ๊ณผ ๊ฐ™์€ ๋กœ๋ด‡ํ‹ฑ์Šค ์›Œํฌ ํ”Œ๋กœ์šฐ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ
  2. ๋ฏธ๋ฆฌ ๊ตฌ์ถ•๋œ ํ™˜๊ฒฝ์„ ๋ฒค์น˜๋งˆํฌ ์˜ˆ์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ก ํŠธ ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์„œ ์ค€๋น„๋œ ์—์…‹๊ณผ ํ™˜๊ฒฝ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด warm-start๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ
IsaacSim๊ณผ Orbit์˜ ์ฐจ์ด์— ๋Œ€ํ•œ Q&A

Q: I have two questions about the Orbit.

May I know what is the purpose of orbit? It seems like it is a modular framework for especially robot learning. However, reinforcement learning can be realized by Issac Sim (Issac Gym). So, what is so special about Orbit?

In the Orbit tutorial, the example always uses the built-in API, e.g. robots and controllers. Is the Orbit an appropriate platform if we want to use custom robots and controllers?

Thank you.


A: In the following extract from the Orbit maintainerโ€™s public post published in the Omniverse Discord channel dedicated to Isaac Sim

(โ€ฆ) Isaac Orbit- Batteries included framework to reduce barrier to entry. It serves a dual purpose:

  1. simplified interface for env design and support for many robotics workflows - RL, Motion planning, teleoperation, imitation learning/behavior cloning, and real robot operation. This unification is the USP of orbit as compared to other interfaces.
  2. Front end framework for prebuilt environments as benchmark examples. (โ€ฆ) We note that many folks in the community are users of IsaacSim, creating new environments rather than physics solvers. Hence, we hope to provide Orbit to warmstart it with prebuilt assets, and environment examples as benchmarks.

Importantly Orbit is designed such that it can accept community contributions with open licensing. We hope that Orbit will be the environment zoo for IsaacSim with contributions from the community as well as internal development.

Orbit also has modified env interfaces. However, Orbit is open source, and users can modify & suggest change to these interfaces, as needed. (โ€ฆ)

์ •๋ฆฌํ•˜์ž๋ฉด, Orbit์€ Robot Learning์„ ์œ„ํ•œ Nvidia์˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ธ๋ฐ ๊ฐ€์žฅ ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ๊ทผํ•œ(์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š”) ํ”„๋กœ๊ทธ๋žจ ์ด๋ผ๊ณ  ์ •๋ฆฌํ•ด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋น„์œ ๋ฅผ ๋“ค์–ด์„œ Nvidia ํ”Œ๋žซํผ์˜ ์—ญํ•™์„ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด, Omniverse๋Š” MS Office, Issac Sim์€ Power Point, Orbit์€ PPT ๋””์ž์ธ ์ถ”์ฒœ ํ”„๋กœ๊ทธ๋žจ ์ •๋„๋กœ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2 Orbit์„ ์„ค์น˜ํ•˜๊ธฐ ์ „์—

์•ž์—์„œ ์ •๋ฆฌํ•œ ๋Œ€๋กœ Orbit์€ Omniverse ์•ˆ์— Isaac Sim์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ชจ๋“ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— IsaacSim์„ ๋จผ์ € ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด ์•„์ง Orbit์„ ์„ค์น˜ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , Orbit์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ค€๋น„ํ•˜๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Isaac Sim์€ ํฌ๊ฒŒ (1)Workstation Installation๊ณผ (2)Container Installation 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ž ๊ฐœ์ธ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์ฒซ๋ฒˆ์งธ Workstation Installation์„ ๋”ฐ๋ผ๊ฐ€๋ฉด ๋˜๋ฏ€๋กœ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Workstation Installation ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ผ์„œ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Workstation Installation: ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์˜ Isaac Sim ์„ค์น˜๋ฐฉ๋ฒ•(Workstation Installation)์„ ๋”ฐ๋ผ Omniverse App์„ ํ†ตํ•ด Isaac Sim 2022.2์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์ œ๊ฐ€ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ–ˆ๋˜ ์ŠคํŽ™์ž…๋‹ˆ๋‹ค. (๋งŒ์•ฝ ํ•ด๋‹น ์ปดํ“จํ„ฐ ์ž์›์ด ์—†๋‹ค๋ฉด ํด๋ผ์šฐ๋“œ ์ž์›์„ ์ด์šฉํ•˜์—ฌ Isaac Sim์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)
์„ค์น˜ ์ง„ํ–‰ ํ™˜๊ฒฝ
  • Ubuntu 20.04 LTS
  • Nvidia RTX 4080
  • Driver Version: 525.60.13

Isaac Sim์˜ ์„ค์น˜๊ณผ์ •์€ Documentation์— step by step์œผ๋กœ ์ž˜ ๋‚˜์™€์žˆ์œผ๋ฏ€๋กœ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ง„ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด Omniverse App์—์„œ Isaac Sim์ด ๋ณด์ด๊ณ  LANCH๋ผ๋Š” ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์„ค์น˜์— ์„ฑ๊ณตํ•œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. (23.04.05 ๊ธฐ์ค€) ์ตœ์‹  ๋ฒ„์ ผ 2022.2.1์ด ๋งž๋Š”์ง€ ๊ผญ ํ™•์ธํ•ด์ฃผ์‹œ๊ณ  ๋งŒ์•ฝ ์ตœ์‹  ๋ฒ„์ ผ์ด ์•„๋‹ˆ๋ผ๋ฉด LANCH ์˜†์˜ list ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์ตœ์‹  ๋ฒ„์ ผ์„ ๋‹ค์šด๋ฐ›๊ณ  ๋ฒ„์ ผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„์—์„œ ์ฒ˜๋Ÿผ 2022.2.1 ๋ฒ„์ ผ์œผ๋กœ ์„ ํƒ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Omniverse App์—์„œ Isaac Sim ๋ฒ„์ ผ ํ™•์ธํ•˜๊ธฐ

  1. Python Environment Setting: Isaac Sim์€ ๋‚ด๋ถ€(built-in) Python 3.7์ด ์žˆ๊ณ  ์ด default Python ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. IsaacSim Default Python Environment์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์˜ ์˜ˆ์‹œ command์™€ ๊ฐ™์ด Isaac Sim์˜ Root folder(Isaac Sim ์„ค์น˜์‹œ ๋ณ„๋„์˜ ๊ฒฝ๋กœ ์„ค์ •์ด ์—†์ด ์„ค์น˜ํ–ˆ์„ ๊ฒฝ์šฐ ${HOME}/.local/share/ov/pkg/isaac_sim-*, *์€ ํ•ด๋‹น Isaac Sim์˜ ๋ฒ„์ ผ)์— ์žˆ๋Š” Python ์‹คํ–‰ํŒŒ์ผ์ธ python.sh๋ฅผ ๊ฐ€์ง€๊ณ  ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    # ${HOME}/.local/share/ov/pkg/isaac_sim-2022.2.1
    ./python.sh path/to/script.py
    Isaac Sim์˜ Default Folder

    ํ•˜์ง€๋งŒ ์ด์™€ ๊ฐ™์ด ๋งค๋ฒˆ Isaac Sim์˜ ๋‚ด๋ถ€ python ์‹คํ–‰ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฏ€๋กœ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ๋‚ด๋ถ€ python์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Linux Ubuntu์—์„œ๋Š” ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ํŒŒ์ผ์€ ~/.bashrc ๋‚˜ ~/.zshrc๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฆฌ๋ˆ…์Šค GUI ํ™˜๊ฒฝ์—์„œ ์ง€์›ํ•˜๋Š” ํ…์ŠคํŠธ ์—๋””ํ„ฐ์ธ gedit์„ ์ด์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Terminal ์ฐฝ์„ ์—ด์–ด์„œ command๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    gedit ~/.bashrc

    ํŒ์—…๋˜๋Š” .bashrc ํŒŒ์ผ์˜ ๋งจ ์•„๋ž˜์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. #์œผ๋กœ ํ›—๋‚  ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋“ค์„ ์™œ ์„ค์ •ํ–ˆ๋Š”์ง€ ๋ฉ”๋ชจํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฃผ์„์„ ๋‹ฌ์•„๋†“๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.(Orbit์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Isaac Sim๋งŒ ์„ค์น˜ํ•˜๋Š” ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” ๊ฐ™์€ ํŒŒ์ด์ฌ ์‹คํ–‰ํŒŒ์ผ์„ ๋‹ค๋ฅธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์„ค์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต๋˜์–ด ์ด๋ฆ„์„ ์„ค์น˜ ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ฉ๋‹ˆ๋‹ค.) ์ถ”๊ฐ€ํ•œ ํ›„ ์ €์žฅํ•˜๊ณ  ์ฐฝ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

    # Isaac Sim root directory
    export ISAACSIM_PATH="${HOME}/.local/share/ov/pkg/isaac_sim-2022.2.1"
    # Isaac Sim python executable
    export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh"

    ํŒŒ์ผ์„ ํŽธ์ง‘ํ–ˆ๋‹ค๊ณ  ๋ฐ”๋กœ ์ถ”๊ฐ€๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋ฐ”๋กœ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•„๋ž˜์˜ command๊นŒ์ง€ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰์‹œํ‚ค๊ณ  ๋‚˜์„œ ์ ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

    source ~/.bashrc
  2. ์‹คํ–‰ ํ™•์ธ : ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜์™€ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊นŒ์ง€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Running the simulator์— ์•ˆ๋‚ด๋˜์–ด ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ ๊ฒ€ command๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    • ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์‹คํ–‰ ํŒŒ์ผ(isaac-sim.sh) ํ™•์ธ

      # note: you can pass the argument `--help` to see all arguments possible.
      $ISAACSIM_PATH/isaac-sim.sh --help

    • ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๋‚ด๋ถ€ ํŒŒ์ด์ฌ ์‹คํ–‰ ํŒŒ์ผ(python.sh) ํ™•์ธ

      # checks that python path is set correctly
      $ISAACSIM_PYTHON_EXE -c "print('Isaac Sim configuration is now complete.')"

    • ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ standalone ์˜ˆ์ œ(add_cubes.py)๋กœ ์‹คํ–‰ ํ™•์ธ

      # checks that Isaac Sim can be launched from python
      $ISAACSIM_PYTHON_EXE $ISAACSIM_PATH/standalone_examples/api/omni.isaac.core/add_cubes.py
      add_cubes.py ์‹คํ–‰ ๊ฒฐ๊ณผ

3 Orbit ์„ค์น˜ํ•˜๊ธฐ

์ด์ œ Orbit์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์„ค์น˜ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ Isaac Sim์ด ์ œ๋Œ€๋กœ ์„ค์น˜๊ฐ€ ๋˜๊ณ  ์˜ˆ์ œ๊นŒ์ง€ ๋Œ์•„๊ฐ€๋Š”์ง€ ๊ผญ ํ™•์ธ์„ ํ•œ ํ›„ ์ง„ํ–‰ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  1. Orbit repository๋ฅผ git clone ํ•ด์˜ค๊ธฐ

    # Option 1: With SSH
    git clone git@github.com:NVIDIA-Omniverse/orbit.git
    # Option 2: With HTTPS
    git clone https://github.com/NVIDIA-Omniverse/Orbit.git
  2. Symbolic link ์ƒ์„ฑํ•˜๊ธฐ: ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ž€ ์›๋ณธ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•˜๋Š” ์œˆ๋„์šฐ์—์„œ์˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ ์•„์ด์ฝ˜๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์ดํ•ดํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ git cloneํ•œ repo์˜ ์œ„์น˜๋กœ ๋“ค์–ด๊ฐ€์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

    # enter the cloned repository
    cd Orbit
    # create a symbolic link
    ln -s $ISAACSIM_PATH _isaac_sim
  3. Orbit ์‹คํ–‰ํŒŒ์ผ ๋ช…๋ น์–ด ๋“ฑ๋กํ•˜๊ธฐ: orbit์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งค๋ฒˆ git clone ํ•œ repository์— ์žˆ๋Š” orbit.sh ํŒŒ์ผ์„ ์จ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ orbit.sh์ด ์žˆ๋Š” ์œ„์น˜์—์„œ ์‹คํ–‰์‹œํ‚จ๋‹ค๋ฉด ./orbit.sh ๋กœ ๊ฐ„๋‹จํ•˜๊ฒ ์ง€๋งŒ ๋‹ค๋ฅธ ์œ„์น˜์˜ ํŒŒ์ผ์„ Orbit์—์„œ ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ์„ ๋•Œ ๋‹จ์ถ•ํ‚ค๊ฐ€ ์žˆ๋‹ค๋ฉด ํ›จ์”ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ํŽธ๋ฆฌํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค. Orbit์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋กœ๋Š” orbit์œผ๋กœ ์ •ํ•ด์„œ ์ฆ‰, ./orbit.sh ์™€ orbit ์ด ๊ฐ™๋„๋ก ํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ๋ฆฌ๋ˆ…์Šค์˜ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์—์„œ .bashrc ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ ๋ช…๋ น์–ด ๋ณ„์นญ์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

    echo -e "alias orbit=$(pwd)/orbit.sh" >> ${HOME}/.bashrc

    ๋ณ„์นญ ๋“ฑ๋ก์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด source ~/.bashrc๋„ ์žŠ์ง€ ์•Š๊ณ  ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”.(๋ช…๋ น์–ด๊ฐ€ ์ œ๋Œ€๋กœ ๋“ฑ๋ก๋๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ ค๋ฉด gedit ~/.bashrc๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์—์„œ ๋งจ ์•„๋žซ์ค„์— alias orbit=$(Orbit ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์œ„์น˜)/orbit.sh์ด ์จ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.) ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ์„๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค๋ฉด ๋ช…๋ น์–ด ๋ณ„์นญ ๋“ฑ๋ก์ด ์ž˜ ๋œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

    orbit --help
    orbit ๋ช…๋ น์–ด ๋ณ„์นญ ํ™•์ธ

4 Orbit์—์„œ ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •

Orbit์—์„œ๋Š” orbit -p๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Isaac Sim์˜ ํŒŒ์ด์ฌ ์‹คํ–‰ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (ํ˜น์€ ์œ„์—์„œ ๋ช…๋ น์–ด ๋ณ„์นญ์„ ๋“ฑ๋ก์•ˆํ–ˆ๋‹ค๋ฉด Orbit repo ์œ„์น˜์—์„œ ./orbit.sh -p๋ผ๊ณ  ์ž…๋ ฅํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.) ํ•˜์ง€๋งŒ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Conda๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

orbit -c (๋˜๋Š” --conda)

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ orbit์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ€์ƒํ™˜๊ฒฝ์ด ๋งŒ๋“ค์–ด์ง€๊ณ  ์•ž์œผ๋กœ ์ด ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด conda activate orbit์„ ํ†ตํ•ด ํ™œ์„ฑํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Conda๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์น˜ ๋ฐ ํ™•์ธ

5 Extensions ์„ค์น˜

  • apt๋ฅผ ์ด์šฉํ•ด์„œ ์šฐ๋ถ„ํˆฌ์—์„œ ๋””ํŽœ๋˜์‹œ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    sudo apt install cmake build-essential
  • Orbit repo์— ์žˆ๋Š” source/extensions ํด๋”์˜ ํ™•์žฅํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ --editable flag๋กœ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“œ๋กœ ์„ค์น˜ํ•˜๊ฒŒ ๋˜์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ฆ‰์‹œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

    orbit --install # or orbit -i
  • (rsl-rl ๊ฐ™์€)Learning framework ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๋””ํŽœ๋˜์‹œ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    orbit --extra # or orbit -e

6 Closing

๋งˆ์ง€๋ง‰๊นŒ์ง€ ์„ค์น˜๊ณผ์ •์„ ์ž˜ ๋งˆ์น˜์…จ๋‹ค๋ฉด ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ ํ–ˆ์„ ๋•Œ ์‚ฌ์กฑ๋ณดํ–‰ ๋กœ๋ด‡๋“ค์ด ๋‚˜์˜ค๋ฉด์„œ Orbit์ด ์ž˜ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!๐Ÿ‘๐Ÿ‘๐Ÿ‘(์ฒ˜์Œ ์‹คํ–‰์‹œ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ธฐ๋‹ค๋ ค์ฃผ์„ธ์š”.)

orbit -p source/standalone/demo/play_quadrupeds.py
play_quadrupeds.py ์‹คํ–‰ ๊ฒฐ๊ณผ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Nvidia์˜ Orbit์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ณ  ์„ค์น˜๊นŒ์ง€ ์ง„ํ–‰ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง ๊ณต์‹ Documentation๋„ ์—…๋ฐ์ดํŠธ ์ค‘์ด๊ณ  ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ™œ๋ฐœํžˆ ๋˜๊ณ  ์žˆ์–ด์„œ ์ดํ›„์— ์ด๋ฒˆ ํฌ์ŠคํŒ…์ด ๋ฒ„์ ผ์— ๋”ฐ๋ผ ๋„์›€์ด ์•ˆ๋  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ ๋งŽ์€ ๋ถ„๋“ค๊ป˜ ์ฐธ๊ณ ๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์น˜๊ณผ์ •์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์˜ต์…˜๋“ค์ด๋‚˜ ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์€ ๊ณต์‹ ์„ค์น˜ Documentation์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์†Œ์‹๋“ค๊ณผ ํ•จ๊ป˜ ๋” ์ž์„ธํ•˜๊ณ  ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์œผ์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์–ด์ง€๋Š” ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฐ ์˜ˆ์ œ๋“ค์„ ํ†ตํ•ด์„œ Orbit์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Copyright 2024, Jung Yeon Lee