Curieux.JY
  • Post
  • Note
  • Jung Yeon Lee

On this page

  • 1 Brief Review
  • 2 Detail Review
    • 2.1 ์†Œ๊ฐœ: GPU๋กœ ๊ฐ€์†ํ•œ ์ฐจ์„ธ๋Œ€ ๋กœ๋ด‡ ๋ชจ์…˜ ํ”Œ๋ž˜๋„ˆ
    • 2.2 cuRobo์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด์™€ ๊ตฌ์กฐ
    • 2.3 GPU ๋ณ‘๋ ฌํ™” ์ „๋žต๊ณผ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
    • 2.4 ์„ฑ๋Šฅ ํ‰๊ฐ€: ์†๋„, ์„ฑ๊ณต๋ฅ  ๊ทธ๋ฆฌ๊ณ  ๋™์ž‘ ์•ˆ์ •์„ฑ
    • 2.5 ๊ตฌํ˜„ ๋‚œ์ด๋„์™€ ์˜คํ”ˆ์†Œ์Šค ํ™œ์šฉ
    • 2.6 ๊ธฐ์กด ๋ชจ์…˜ ์ƒ์„ฑ ๊ธฐ๋ฒ•๊ณผ์˜ ๋น„๊ต
    • 2.7 ์ฃผ์š” ์‹คํ—˜ ๊ฒฐ๊ณผ ๋ฐ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค
    • 2.8 ๊ฒฐ๋ก : cuRobo์˜ ์žฅ์ ๊ณผ ํ•œ๊ณ„, ํ–ฅํ›„ ๋ฐœ์ „ ๋ฐฉํ–ฅ

๐Ÿ“ƒCuRobo ๋ฆฌ๋ทฐ

sim2real
adaptive
rl
hand
Parallelized Collision-Free Minimum-Jerk Robot Motion Generation
Published

July 17, 2025

  • Paper Link
  • Github Link
  • Documentation Link
  1. ๐Ÿ“š ๋ณธ ๋…ผ๋ฌธ์€ GPU ๊ฐ€์†์„ ํ™œ์šฉํ•˜์—ฌ ๋กœ๋ด‡์„ ์œ„ํ•œ ์ถฉ๋Œ ์—†๋Š” ์ตœ์†Œ ์ €ํฌ(minimum-jerk) ๋ชจ์…˜ ์ƒ์„ฑ์„ ๋ณ‘๋ ฌ ์ตœ์ ํ™” ๋ฌธ์ œ๋กœ ๊ณต์‹ํ™”ํ•˜๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” cuRobo ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
  2. ๐Ÿ’ก cuRobo๋Š” ๊ณ ์„ฑ๋Šฅ CUDA ์ปค๋„ ๊ธฐ๋ฐ˜์˜ ์šด๋™ํ•™ ๋ฐ Signed Distance ํ•จ์ˆ˜, ๋ณ‘๋ ฌ L-BFGS ๋ฐ ํŒŒํ‹ฐํด ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”, ๊ทธ๋ฆฌ๊ณ  ๋ณ‘๋ ฌ ๊ธฐํ•˜ํ•™์  ํ”Œ๋ž˜๋„ˆ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์ „์ฒด ๋ชจ์…˜ ์ƒ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ€์†ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  3. ๐Ÿš€ ๊ทธ ๊ฒฐ๊ณผ, cuRobo๋Š” ๊ธฐ์กด ์ตœ์‹  ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋ชจ์…˜ ์ƒ์„ฑ์—์„œ ํ‰๊ท  60๋ฐฐ, ์ถฉ๋Œ ์—†๋Š” Inverse Kinematics์—์„œ 80๋ฐฐ ์ด์ƒ ๋นจ๋ผ์กŒ์œผ๋ฉฐ, ๋” ์งง์€ ๊ฒฝ๋กœ์™€ ๋‚ฎ์€ ์ €ํฌ(jerk)์˜ ๊ณ ํ’ˆ์งˆ ๊ถค์ ์„ ์ œ๊ณตํ•˜๋ฉฐ ์‹ค์ œ ๋กœ๋ด‡ ๋ฐ ์ €์ „๋ ฅ ์žฅ์น˜์—์„œ ์„ฑ๋Šฅ์ด ๊ฒ€์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Collision-free motion generation for a manipulator to move from a start configuration to a desired gripper pose

1 Brief Review

์ด ๋…ผ๋ฌธ์€ ๋กœ๋ด‡ ๋งค๋‹ˆํ“ฐ๋ ˆ์ดํ„ฐ์˜ ์ถฉ๋Œ ์—†๋Š” ๋ชจ์…˜ ์ƒ์„ฑ(collision-free motion generation) ๋ฌธ์ œ๋ฅผ ์ „์—ญ ๋ชจ์…˜ ์ตœ์ ํ™”(global motion optimization) ๋ฌธ์ œ๋กœ ๊ณต์‹ํ™”ํ•˜๊ณ , ์ด๋ฅผ ๋ฐฉ๋Œ€ํ•œ GPU ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ตœ์ฒจ๋‹จ(SOTA) ๊ถค์  ์ตœ์ ํ™”(trajectory optimization) ๋ฐฉ๋ฒ•๋ณด๋‹ค ํ‰๊ท  60๋ฐฐ ๋น ๋ฅธ ์†๋„๋กœ ํ‰๊ท  50ms ์ด๋‚ด์— ๋ชจ์…˜ ์ƒ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋ฉฐ, NVIDIA Jetson AGX Orin๊ณผ ๊ฐ™์€ ์ €์ „๋ ฅ ์žฅ์น˜์—์„œ๋„ ํƒ์›”ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ธฐ์—ฌ:

  • ๊ณ ์„ฑ๋Šฅ Kinematics ๋ฐ Signed Distance Kernel: ๋กœ๋ด‡ Kinematics ๋ฐ Signed Distance ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๊ณ ์„ฑ๋Šฅ CUDA Kernel์„ ๊ฐœ๋ฐœํ•˜์—ฌ ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜ ๋ฐฉ์‹๋ณด๋‹ค ์ตœ๋Œ€ 10,000๋ฐฐ ๋น ๋ฅธ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” PyTorch์—์„œ ๋ฏธ๋ถ„ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๋กœ ์ œ๊ณต๋˜์–ด ๋‹ค๋ฅธ ๋กœ๋ด‡ ๊ณตํ•™ ์ž‘์—…์—๋„ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฏธ๋ถ„ ๊ฐ€๋Šฅํ•œ ์—ฐ์† ์ถฉ๋Œ ๊ฒ€์‚ฌ(Differentiable Continuous Collision Checking): Swept Collision Check๋ฅผ ์œ„ํ•ด ์  ์ฟผ๋ฆฌ Signed Distance ํ•จ์ˆ˜์™€ ๊ทธ๋ž˜๋””์–ธํŠธ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ (closest point)๋งŒ ์š”๊ตฌํ•˜๋Š” ๋…์ฐฝ์ ์ธ ์—ฐ์† ์ถฉ๋Œ ๊ฒ€์‚ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Primitive, Mesh, Occupancy Map ๋“ฑ ๋‹ค์–‘ํ•œ World Representation์—์„œ ์—ฐ์† ์ถฉ๋Œ ๊ฒ€์‚ฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ‘๋ ฌ ์ตœ์ ํ™”: GPU Batch L-BFGS Optimizer๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ทผ์‚ฌ ๋ณ‘๋ ฌ Line Search Scheme๊ณผ ํŒŒํ‹ฐํด ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”(particle-based optimizer)๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‚œ์ด๋„๊ฐ€ ๋†’์€ ๋ชจ์…˜ ์ƒ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์†”๋ฒ„๋Š” ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜ ์†”๋ฒ„ ๋Œ€๋น„ ์—ญ๊ธฐ๊ตฌํ•™(Inverse Kinematics, IK)์—์„œ 23๋ฐฐ, ์ถฉ๋Œ ์—†๋Š” ์—ญ๊ธฐ๊ตฌํ•™(Collision-Free IK)์—์„œ 80๋ฐฐ, ์ถฉ๋Œ ์—†๋Š” ๊ถค์  ์ตœ์ ํ™”์—์„œ 87๋ฐฐ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ์ตœ์ฒจ๋‹จ IK ์†”๋ฒ„: ๊ฐœ๋ฐœ๋œ ๊ณ ์„ฑ๋Šฅ Kernel์„ ํ™œ์šฉํ•˜์—ฌ ์ดˆ๋‹น 37000๊ฐœ์˜ IK ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ๊ณ„ ์ตœ๊ณ  ์ˆ˜์ค€์˜ IK ์†”๋ฒ„๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค (TracIK ๋Œ€๋น„ 23๋ฐฐ ๋น ๋ฆ„). ๋˜ํ•œ ์ดˆ๋‹น 7600๊ฐœ์˜ ์ถฉ๋Œ ์—†๋Š” IK ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (TracIK + Bullet ๋Œ€๋น„ 80๋ฐฐ ๋น ๋ฆ„).
  • ๋ณ‘๋ ฌ ๊ธฐํ•˜ํ•™์  ํ”Œ๋ž˜๋„ˆ(Parallel Geometric Planner): ๋ณ‘๋ ฌ Steering ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ–์ถ˜ ๊ธฐํ•˜ํ•™์  ํ”Œ๋ž˜๋„ˆ๋ฅผ ๊ฐœ๋ฐœํ•˜์—ฌ 20ms ์ด๋‚ด์— ์ถฉ๋Œ ์—†๋Š” ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์—ญ ๋ชจ์…˜ ์ƒ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ: ์œ„์˜ ๋ชจ๋“  ๊ธฐ์—ฌ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ, ์‹œ์ž‘ Configuration์—์„œ ๋ชฉํ‘œ Gripper Pose๊นŒ์ง€์˜ ์ถฉ๋Œ ์—†๋Š” ๋ชจ์…˜ ์ƒ์„ฑ์„ ํ‰๊ท  50ms ์ด๋‚ด์— ์™„๋ฃŒํ•˜๋Š” ์ „์—ญ ๋ชจ์…˜ ์ƒ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ €์ „๋ ฅ ์žฅ์น˜ ๊ฒ€์ฆ: NVIDIA Jetson AGX Orin (60W ๋ฐ 15W ์ „๋ ฅ ์˜ˆ์‚ฐ)์—์„œ ๊ฒ€์ฆ ๊ฒฐ๊ณผ, ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•๋ณด๋‹ค ํ‰๊ท  28๋ฐฐ(60W) ๋ฐ 21๋ฐฐ(15W) ๋” ๋น ๋ฆ„์„ ์ž…์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.
  • cuRobo ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต๊ฐœ: GPU ๊ฐ€์† ๋กœ๋ด‡ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ชจ์Œ์ธ cuRobo ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต๊ฐœํ•˜์—ฌ ๋กœ๋ด‡ ๊ณตํ•™ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋Œ€๊ทœ๋ชจ ๋ฌธ์ œ ํƒ์ƒ‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก  ์ƒ์„ธ ์„ค๋ช…:

์ด ๋…ผ๋ฌธ์€ ๋กœ๋ด‡ ๋ชจ์…˜ ์ƒ์„ฑ์„ ์‹œ์ž‘ ๊ด€์ ˆ Configuration \theta_0์—์„œ ๋กœ๋ด‡์˜ End-Effector๊ฐ€ ๋ชฉํ‘œ Cartesian Pose X_g์— ๋„๋‹ฌํ•˜๋Š” ์ตœ์ข… ๊ด€์ ˆ Configuration \theta_T๊นŒ์ง€์˜ ์‹œ๊ฐ„ ์ด์‚ฐํ™”๋œ ๊ถค์  ์ตœ์ ํ™” ๋ฌธ์ œ๋กœ ๊ณต์‹ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ์  ํ•จ์ˆ˜๋Š” End-Effector์˜ ๋ชฉํ‘œ Pose ๋„๋‹ฌ ๋น„์šฉ๊ณผ ๊ถค์ ์˜ ๋ถ€๋“œ๋Ÿฌ์›€(smoothness)์„ ์œ„ํ•œ ๋น„์šฉ์˜ ํ•ฉ์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. \arg \min_{\theta_{[1,T]}} C_{\text{task}}(X_g, \theta_T) + \sum_{t=1}^T C_{\text{smooth}}(\cdot) ์—ฌ๊ธฐ์„œ ๋‹ค์Œ ์ œ์•ฝ ์กฐ๊ฑด๋“ค์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค: * ๊ด€์ ˆ ์œ„์น˜, ์†๋„, ๊ฐ€์†๋„, ์ €ํฌ(jerk) ํ•œ๊ณ„: \theta^- \preceq \theta_t \preceq \theta^+, \dot{\theta}^- \preceq \dot{\theta}_t \preceq \dot{\theta}^+, \ddot{\theta}^- \preceq \ddot{\theta}_t \preceq \ddot{\theta}^+, \dddot{\theta}^- \preceq \dddot{\theta}_t \preceq \dddot{\theta}^+ * ์ตœ์ข… ์‹œ์ ์—์„œ์˜ ์†๋„, ๊ฐ€์†๋„, ์ €ํฌ 0 ์ œ์•ฝ: \dot{\theta}_T, \ddot{\theta}_T, \dddot{\theta}_T = 0 * ์ž๊ธฐ ์ถฉ๋Œ(self-collision) ๋ฐ ์„ธ๊ณ„ ์ถฉ๋Œ(world-collision) ํšŒํ”ผ: C_r(K_s(\theta_t)) \preceq 0, C_w(K_s(\theta_t)) \preceq 0

Kinematics ๋ฐ ์ถฉ๋Œ ํšŒํ”ผ:

๋กœ๋ด‡์˜ Kinematics K_s(\cdot)๋Š” ๊ด€์ ˆ Configuration์„ ๋กœ๋ด‡์˜ ๋ชจ๋“  geometry์˜ Cartesian Pose๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. Kinematics ๊ณ„์‚ฐ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ˆœ์ฐจ์ ์ด์ง€๋งŒ, ์ด ๋…ผ๋ฌธ์—์„œ๋Š” transformation์„ 4x4 ๋™์ฐจ ํ–‰๋ ฌ๋กœ ํ‘œํ˜„ํ•˜๊ณ  4๊ฐœ์˜ ๋ณ‘๋ ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ–‰๋ ฌ ๊ณฑ์…ˆ์„ ๊ณ„์‚ฐํ•จ์œผ๋กœ์จ ๋ณ‘๋ ฌํ™”๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์—ญ๋ฐฉํ–ฅ Kinematics(Backward Kinematics)์˜ ๊ฒฝ์šฐ 16๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜๋””์–ธํŠธ๋ฅผ Cartesian ๊ณต๊ฐ„์—์„œ Joint ๊ณต๊ฐ„์œผ๋กœ ํˆฌ์˜ํ•ฉ๋‹ˆ๋‹ค. ์ž๊ธฐ ์ถฉ๋Œ ํšŒํ”ผ๋ฅผ ์œ„ํ•ด ๋กœ๋ด‡ ๋ณผ๋ฅจ์„ ๊ตฌ(sphere) ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ , ์ž๊ธฐ ์ถฉ๋Œ ๋น„์šฉ C_r์€ ๊ตฌ ์Œ ๊ฐ„์˜ ์ตœ๋Œ€ ์นจํˆฌ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. C_r(K_s(\theta_t)) = \beta_1 \max_{i,j \in S} (\max(0, s_{i,r} + s_{j,r} - ||s_{i,x} - s_{j,x}||)) ์—ฌ๊ธฐ์„œ s_{i,x}, s_{j,x}๋Š” ๊ตฌ์˜ ์œ„์น˜, s_{i,r}, s_{j,r}์€ ๊ตฌ์˜ ๋ฐ˜์ง€๋ฆ„์ด๋ฉฐ, S๋Š” ์ž๊ธฐ ์ถฉ๋Œ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ๊ตฌ ์Œ์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์„ธ๊ณ„ ์ถฉ๋Œ ํšŒํ”ผ๋Š” ์žฅ์• ๋ฌผ ํ‘œ๋ฉด ๊ทผ์ฒ˜์˜ ๋ถˆ์—ฐ์†์„ฑ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์„ฑํ™” ๊ฑฐ๋ฆฌ \eta๋ฅผ ๊ฐ–๋Š” ์ด์ฐจ ๋น„์šฉ ํ”„๋กœํŒŒ์ผ(d_c)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. d_c = \begin{cases} d + 0.5\eta & \text{if } d > 0 \\ 0.5\eta (d + \eta)^2 & \text{if } -\eta < d < 0 \\ 0 & \text{otherwise} \end{cases} ๋˜ํ•œ, ์ตœ์ ํ™”๊ฐ€ ์žฅ์• ๋ฌผ์„ ๋น ๋ฅด๊ฒŒ ํ†ต๊ณผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ถฉ๋Œ ๋น„์šฉ์„ ๋กœ๋ด‡์˜ ์†๋„์— ๋น„๋ก€ํ•˜์—ฌ ์Šค์ผ€์ผ๋งํ•˜๋Š” ์†๋„ ์ธก์ •ํ•ญ๋ชฉ(\dot{s})์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, d_s = \dot{s} d_c๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ ์ดํƒˆ์— ๋Œ€ํ•œ ๊ฐ•๊ฑด์„ฑ์„ ์œ„ํ•ด \eta ๊ฑฐ๋ฆฌ ๋‚ด์—์„œ๋Š” ๋กœ๋ด‡์˜ ์†๋„์— ํŽ˜๋„ํ‹ฐ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์† ์ถฉ๋Œ ๊ฒ€์‚ฌ(Continuous Collision Checking)๋Š” ์–‡์€ ์žฅ์• ๋ฌผ๊ณผ์˜ ์ถฉ๋Œ์„ ๋†“์น˜์ง€ ์•Š๋„๋ก ์ค‘์š”ํ•˜๋ฉฐ, ์ด ๋…ผ๋ฌธ์—์„œ๋Š” Swept Volume ๋Œ€์‹  World Representation์—์„œ ์  ์ฟผ๋ฆฌ Signed Distance ํ•จ์ˆ˜๋งŒ ์š”๊ตฌํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ถค์ ์˜ ๊ฐ ์‹œ์ ์—์„œ ๊ตฌ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ „๋ฐฉ ๋ฐ ํ›„๋ฐฉ Sweeping์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ถฉ๋Œ์„ ๊ฒ€์‚ฌํ•˜๊ณ , ์ด ๊ณผ์ •์€ ๊ทธ๋ž˜๋””์–ธํŠธ ๊ณ„์‚ฐ์˜ ๋ณ‘๋ ฌํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ์„ธ๊ณ„ ์ถฉ๋Œ ๋น„์šฉ C_w๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. C_w(S_{t-1,t,t+1}) = \beta_2 \text{speed}(S_{t-1,t,t+1})\text{smooth}(\text{sweep}(S_{t-1,t,t+1})) ์—ฌ๊ธฐ์„œ \beta_2๋Š” ๋น„์šฉ ์Šค์ผ€์ผ๋ง, \text{sweep}(\cdot)๋Š” ์—ฐ์† ์ถฉ๋Œ ๊ฒ€์‚ฌ, \text{smooth}(\cdot)๋Š” ์ด์ฐจ smoothing, \text{speed}(\cdot)๋Š” ์†๋„ ์Šค์ผ€์ผ๋ง์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ์ตœ์ ํ™” ์†”๋ฒ„:

์ฃผ์š” ์ตœ์ ํ™” ์†”๋ฒ„๋กœ L-BFGS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋Š” ๋Œ€๊ทœ๋ชจ ์ตœ์ ํ™” ๋ฌธ์ œ์— ์ ํ•ฉํ•˜๊ณ  ๋ณ‘๋ ฌํ™”์— ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. L-BFGS์˜ Step Direction ๊ณ„์‚ฐ ํ›„, ๋ณ‘๋ ฌ ๋…ธ์ด์ฆˆ ๋ผ์ธ ํƒ์ƒ‰(Parallel Noisy Line Search)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด์‚ฐ์ ์ธ ์Šค์ผ€์ผ ๊ฐ’ ์ง‘ํ•ฉ์„ ๋ณ‘๋ ฌ๋กœ ํ‰๊ฐ€ํ•˜์—ฌ ์ตœ์ ์˜ Step ํฌ๊ธฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋…ธ์ด์ฆˆ ์Šคํ…(์˜ˆ: 0.01)์€ ๋ผ์ธ ํƒ์ƒ‰์ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•  ๋•Œ๋„ ์ตœ์ ํ™” ๋ณ€์ˆ˜ ๊ฐ„์˜ ์ง€์†์ ์ธ ๊ต๋ž€์„ ์ œ๊ณตํ•˜์—ฌ NaN ๊ฐ’์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ˆ˜๋ ด๋ฅ ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. L-BFGS์˜ ์ง€์—ญ ์ตœ์ ํ•ด(local optima) ๋„๋‹ฌ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํŒŒํ‹ฐํด ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”(Particle-Based Optimization)๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. L-BFGS ์‹œ์ž‘ ์ „์— ํŒŒํ‹ฐํด ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”๋ฅผ ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ํ‰๊ท  ๊ถค์  \Theta_\mu์™€ ๊ณต๋ถ„์‚ฐ \Theta_\sigma์—์„œ n๊ฐœ์˜ ํŒŒํ‹ฐํด \theta_{n,[1,T]}๋ฅผ ์ƒ˜ํ”Œ๋งํ•˜๊ณ , ๊ฐ ํŒŒํ‹ฐํด์˜ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•œ ํ›„, Exponential Utility w๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‰๊ท ๊ณผ ๊ณต๋ถ„์‚ฐ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. \Theta_{\mu} = (1 - k_{\mu})\Theta_{\mu-1} + (k_{\mu})w * \theta_{n,[1,T]} \Theta_{\sigma} = (1 - k_{\sigma})\Theta_{\sigma-1} + w * (\theta^2_{n,[1,T]} - \Theta_{\mu-1}) ์—ฌ๊ธฐ์„œ k_{\mu}์™€ k_{\sigma}๋Š” ํ•™์Šต๋ฅ (learning rate)์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ L-BFGS์˜ ์ˆ˜๋ ด ์†๋„์™€ ์„ฑ๊ณต๋ฅ ์„ ํฌ๊ฒŒ ๋†’์ž…๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ๊ธฐํ•˜ํ•™์  ํ”Œ๋ž˜๋„ˆ:

๊ธฐํ•˜ํ•™์  ํ”Œ๋ž˜๋„ˆ๋Š” ์‹œ์ž‘์—์„œ ๋ชฉํ‘œ Configuration๊นŒ์ง€ ์ถฉ๋Œ ์—†๋Š” ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ํŠนํžˆ ๊ทธ๋ž˜ํ”„ ๊ตฌ์ถ•์˜ ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ GPU์—์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: ์ถฉ๋Œ ์—†๋Š” ๋…ธ๋“œ ์ƒ˜ํ”Œ๋ง, ๊ทธ๋ž˜ํ”„ ๋‚ด K-Nearest ๋…ธ๋“œ ์ฐพ๊ธฐ, ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์ƒ˜ํ”Œ๋ง๋œ ๋…ธ๋“œ์—์„œ K-Nearest ๋…ธ๋“œ๋กœ์˜ ๋ณ‘๋ ฌ Steering. ํŠนํžˆ ๋ณ‘๋ ฌ Steering ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—ฌ๋Ÿฌ ์ •์  ๊ฐ„์˜ Steering ์‹œ๋„๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฒฝ๋กœ ์ƒ์„ฑ์„ ๊ฐ€์†ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ—˜ ๊ฒฐ๊ณผ:

cuRobo๋Š” Kinematics, ์ถฉ๋Œ ๊ฒ€์‚ฌ, IK, Trajectory Optimization, Geometric Planning ๋“ฑ ๋ชจ๋“  ํ•ต์‹ฌ ๋ชจ๋“ˆ์—์„œ ๊ธฐ์กด ์ตœ์ฒจ๋‹จ CPU ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•๋ก  ๋Œ€๋น„ ์••๋„์ ์ธ ๊ณ„์‚ฐ ์‹œ๊ฐ„ ๋‹จ์ถ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Kinematics๋Š” 10๋งŒ ๋ฐฐ์น˜์—์„œ ์ตœ๋Œ€ 891๋ฐฐ, Signed Distance ์ฟผ๋ฆฌ๋Š” 10๋งŒ ๋ฐฐ์น˜์—์„œ ์ตœ๋Œ€ 16,000๋ฐฐ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ „์ฒด ๋ชจ์…˜ ์ƒ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ์€ PC์—์„œ Tesseract ๋Œ€๋น„ ํ‰๊ท  60๋ฐฐ ๋น ๋ฅด๋ฉฐ, Jetson ORIN 15W์—์„œ๋„ Tesseract PC ๋ฒ„์ „๋ณด๋‹ค ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ ์ €์ „๋ ฅ ์—์ง€ ์žฅ์น˜์—์˜ ๋ฐฐํฌ ๊ฐ€๋Šฅ์„ฑ์„ ์ž…์ฆํ•ฉ๋‹ˆ๋‹ค. ๋ชจ์…˜ ํ’ˆ์งˆ ์ธก๋ฉด์—์„œ๋Š” cuRobo๊ฐ€ ๊ธฐ์กด ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋” ์งง์€ ๊ฒฝ๋กœ ๊ธธ์ด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ํŠนํžˆ Jerk๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ถค์ ์„ ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ์กด Trajectory Optimization ๊ธฐ๋ฒ•๋ณด๋‹ค Jerk๊ฐ€ 4๋ฐฐ ๋‚ฎ๊ณ , ๊ธฐ์กด Time Parameterization ๋ฐฉ๋ฒ•๋ณด๋‹ค 12๋ฐฐ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๋ด‡์ด ๋” ๋ถ€๋“œ๋Ÿฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์‹ค์ œ ๋กœ๋ด‡์˜ ์ถ”์  ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ UR5e ๋ฐ UR10 ๋กœ๋ด‡์—์„œ์˜ ๊ฒ€์ฆ์„ ํ†ตํ•ด, cuRobo๊ฐ€ ์ƒ์„ฑํ•œ ์ตœ์†Œ ์ €ํฌ(minimum-jerk) ๊ถค์ ์ด ๋†’์€ ์ •ํ™•๋„๋กœ ์ถ”์ ๋˜๋ฉฐ, ๊ณ„ํš ์‹œ๊ฐ„์ด ์ „์ฒด ์ž‘์—… ์‚ฌ์ดํด ์‹œ๊ฐ„์˜ 6% ๋ฏธ๋งŒ์ž„์„ ๋ณด์—ฌ์ฃผ์–ด ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋งค์šฐ ์ ํ•ฉํ•จ์„ ์ž…์ฆํ•ฉ๋‹ˆ๋‹ค.

์ด ๋…ผ๋ฌธ์€ ๊ณ ํ’ˆ์งˆ์˜ ์ถฉ๋Œ ์—†๋Š” ๋กœ๋ด‡ ๋ชจ์…˜ ์ƒ์„ฑ์„ ์‹ค์‹œ๊ฐ„์— ๊ฐ€๊น๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” GPU ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ์ž ์žฌ๋ ฅ์„ ์™„์ „ํžˆ ๋ณด์—ฌ์ฃผ๋ฉฐ, cuRobo ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต๊ฐœ๋ฅผ ํ†ตํ•ด ๋กœ๋ด‡ ๊ณตํ•™ ์—ฐ๊ตฌ ๋ฐ ์‚ฐ์—… ๋ฐœ์ „์— ํฌ๊ฒŒ ๊ธฐ์—ฌํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค.


2 Detail Review

cuRobo: ๋ณ‘๋ ฌํ™”๋œ ์ถฉ๋Œ ํšŒํ”ผ ์ตœ์†Œ-์ €ํฌ ๋กœ๋ด‡ ๋ชจ์…˜ ์ƒ์„ฑ

2.1 ์†Œ๊ฐœ: GPU๋กœ ๊ฐ€์†ํ•œ ์ฐจ์„ธ๋Œ€ ๋กœ๋ด‡ ๋ชจ์…˜ ํ”Œ๋ž˜๋„ˆ

๋กœ๋ด‡ ํŒ”(Manipulator)์˜ ๋ชจ์…˜ ์ƒ์„ฑ ๋ฌธ์ œ๋Š”, ๋†’์€ ์ž์œ ๋„๋ฅผ ๊ฐ€์ง„ ๋กœ๋ด‡์ด ๋ณต์žกํ•œ ํ™˜๊ฒฝ์—์„œ ์ถฉ๋Œ ์—†์ด ๋ชฉํ‘œ ์ง€์ ๊นŒ์ง€ ์ด๋™ํ•  ๊ฒฝ๋กœ์™€ ์†๋„๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋ชจ์…˜ ํ”Œ๋ž˜๋„ˆ๋“ค์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜, ๊ฒฝ๋กœ๋Š” ์ฐพ์ง€๋งŒ ์›€์ง์ž„์ด ๋ถˆ์•ˆ์ •ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. cuRobo๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋œ ์ƒˆ๋กœ์šด ๋ชจ์…˜ ์ƒ์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, GPU ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์„ ์ ๊ทน ํ™œ์šฉํ•˜์—ฌ ์ „์—ญ ์ตœ์ ํ™” ์ˆ˜์ค€์—์„œ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. cuRobo๋Š” ํŠนํžˆ โ€œ์ตœ์†Œ-์ €ํฌ(minimum-jerk)โ€ ๊ธฐ์ค€์œผ๋กœ ๊ถค์ ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ๋ถ€๋“œ๋Ÿฝ๊ณ  ์•ˆ์ •์ ์ธ ์›€์ง์ž„์„ ์ƒ์„ฑํ•˜๋ฉฐ, ๋กœ๋ด‡๊ณผ ํ™˜๊ฒฝ ๊ฐ„ ์ถฉ๋Œ ํšŒํ”ผ๋ฅผ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ ์ด ๋ชจ๋“  ์ฒ˜๋ฆฌ๋ฅผ ํ‰๊ท  50ms ์ด๋‚ด์— ์ˆ˜ํ–‰ํ•˜์—ฌ, ๊ธฐ์กด ๊ธฐ๋ฒ• ๋Œ€๋น„ ์•ฝ 60๋ฐฐ ์ด์ƒ์˜ ์†๋„ ํ–ฅ์ƒ์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŠธ์—์„œ๋Š” cuRobo์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด์™€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ดํŽด๋ณด๊ณ , ์„ฑ๋Šฅ ํ‰๊ฐ€ ๊ฒฐ๊ณผ์™€ ๊ธฐ์กด ๋ฐฉ๋ฒ•๋“ค๊ณผ์˜ ๋น„๊ต๋ฅผ ํ†ตํ•ด ๊ทธ ์žฅ์ ๊ณผ ํ•œ๊ณ„๋ฅผ ๊นŠ์ด ์žˆ๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

2.2 cuRobo์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด์™€ ๊ตฌ์กฐ

cuRobo๋Š” ๋กœ๋ด‡ ๋ชจ์…˜ ์ƒ์„ฑ์„ ํ•˜๋‚˜์˜ ์ตœ์ ํ™” ๋ฌธ์ œ๋กœ ์ •์‹ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋Š” ๋กœ๋ด‡์˜ ์‹œ์ž‘ ์ž์„ธ์—์„œ ๋ชฉํ‘œ ๊ทธ๋ฆฌํผ ์œ„์น˜/์ž์„ธ์— ๋„๋‹ฌํ•˜๋Š” ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๊ด€์ ˆ ๊ถค์ ์„ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ๊ถค์ ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ (๊ฐ€์†๋„์˜ ์‹œ๊ฐ„ ๋ณ€ํ™”์œจ์ธ ์ €ํฌ(jerk)๋ฅผ ์ตœ์†Œํ™”) ์›€์ง์ด๋ฉด์„œ๋„ ๊ฒฝ๋กœ ์ƒ์˜ ์žฅ์• ๋ฌผ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด cuRobo๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋“ค์„ ํฌํ•จํ•˜๋Š” ๊ตฌ์กฐ์  ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋ชฉํ‘œ ์ž์„ธ IK ๊ณ„์‚ฐ: ๋จผ์ € ๋ชฉํ‘œ ๊ทธ๋ฆฌํผ ์ž์„ธ(์œ„์น˜ ๋ฐ ๋ฐฉํ–ฅ)์— ๋Œ€์‘ํ•˜๋Š” ๋ชฉํ‘œ ๊ด€์ ˆ๊ฐ์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. cuRobo๋Š” ์ž์ฒด ๊ฐœ๋ฐœํ•œ ๋ณ‘๋ ฌํ™”๋œ ์—ญ๊ธฐ๊ตฌํ•™(IK) ์†”๋ฒ„๋ฅผ ์ด์šฉํ•ด ๋‹ค์ˆ˜์˜ IK ํ•ด๋ฅผ ๋™์‹œ์— ์‹œ๋„ํ•˜์—ฌ, ๊ทธ ์ค‘ ์ถฉ๋Œ์ด ์—†๊ณ  ๋กœ๋ด‡ ๊ด€์ ˆ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š” ํ•ด๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ์ด IK ์†”๋ฒ„๋Š” GPU ๋ณ‘๋ ฌํ™”๋ฅผ ํ†ตํ•ด ์ดˆ๋‹น 7000ํšŒ ์ด์ƒ์˜ IK ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ๊ณ ์†์ด๋ฉฐ, ํ•„์š”ํ•˜๋ฉด ์ˆ˜์‹ญ ๊ฐœ์˜ ํ•ด๋ฅผ ์ƒ์„ฑํ•ด ์ดํ›„ ๋‹จ๊ณ„์˜ ํ›„๋ณด๋กœ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค (์‹คํ—˜์ ์œผ๋กœ 1000๊ฐœ์˜ ์ž์„ธ๋ฅผ 131ms๋งŒ์— ๋ชจ๋‘ ์ถฉ๋Œ ๊ฒ€์‚ฌ๊นŒ์ง€ ํฌํ•จ ํ•ด๊ฒฐํ•˜์—ฌ ๊ธฐ์กด TracIK ๊ธฐ๋ฐ˜ ์ ‘๊ทผ๋ณด๋‹ค 80๋ฐฐ ์ด์ƒ ๋น ๋ฆ„).

  • ์—ฌ๋Ÿฌ ์ดˆ๊ธฐ ๊ถค์  ์‹œ๋“œ ์ƒ์„ฑ: IK๋กœ ์–ป์€ ๋ชฉํ‘œ ์ž์„ธ(๊ด€์ ˆ ๊ตฌ์„ฑ)๋กœ๋ถ€ํ„ฐ, ์‹œ์ž‘ ์ž์„ธ์™€ ๋ชฉํ‘œ ์ž์„ธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ดˆ๊ธฐ ๊ฒฝ๋กœ ์‹œ๋‚˜๋ฆฌ์˜ค(์‹œ๋“œ)๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด,

    1. ์ง์„  ์ธํ„ฐํด๋ ˆ์ด์…˜ ๊ฒฝ๋กœ: ์‹œ์ž‘ ๊ด€์ ˆ๊ฐ๊ณผ ๋ชฉํ‘œ ๊ด€์ ˆ๊ฐ์„ ์„ ํ˜• ๋ณด๊ฐ„ํ•˜์—ฌ ์–ป์€ ๊ฒฝ๋กœ,
    2. ํ›„ํ‡ด ๋™์ž‘์„ ํฌํ•จํ•œ ๊ฒฝ๋กœ: ์ดˆ๊ธฐ์— ๋กœ๋ด‡ ํŒ”์„ ์‚ด์ง ๋’ค๋กœ ๋นผ๋Š” ๋“ฑ ํŠน์ • ์ค‘๊ฐ„ ์ž์„ธ(retract configuration)๋ฅผ ๊ฒฝ์œ ํ•˜๋„๋ก ๋งŒ๋“  ๊ฒฝ๋กœ,
    3. ๋ณ‘๋ ฌ ๊ธฐํ•˜ํ•™ ํ”Œ๋ž˜๋„ˆ ๊ธฐ๋ฐ˜ ๊ฒฝ๋กœ: cuRobo์— ๋‚ด์žฅ๋œ GPU ๊ฐ€์† ์ƒ˜ํ”Œ๋ง ํ”Œ๋ž˜๋„ˆ๋ฅผ ์‚ฌ์šฉํ•ด ์–ป์€ ์ถฉ๋Œ ์—†๋Š” ๊ฒฝ๋กœ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ ํ›„๋ณด๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ค€๋น„ํ•˜๋Š” ์ด์œ ๋Š” ์ „์—ญ ์ตœ์ ํ•ด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ๋กœ๋ด‡ ๋ชจ์…˜ ์ตœ์ ํ™” ๋ฌธ์ œ๋Š” ์žฅ์• ๋ฌผ์— ์˜ํ•ด ๋น„์„ ํ˜•์ ์ด๊ณ  ๋‹ค์ค‘ ๊ทน์†Œํ•ด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹จ์ผ ์ดˆ๊ธฐ ๊ฐ’์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์ตœ์ ํ•ด๋ฅผ ๋†“์น˜๊ฑฐ๋‚˜ ์ถฉ๋Œ์„ ํ”ผํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cuRobo๋Š” ๋‹ค์–‘ํ•œ ์‹œ๋“œ๋“ค์„ ๋ณ‘๋ ฌ๋กœ ํƒ์ƒ‰ํ•จ์œผ๋กœ์จ ์ด๋Ÿฌํ•œ ์ง€์—ญ ํ•ด ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ—˜์ ์œผ๋กœ๋„ ๋‹ค์ค‘ ์‹œ๋“œ ๋ฐ ์—ฐ์† ์ถฉ๋Œ ๊ฒ€์‚ฌ๋ฅผ ๋„์ž…ํ•˜๋ฉด ๋‹จ ํ•œ๋ฒˆ์˜ ์ตœ์ ํ™” ์‹œ๋„๋กœ๋„ ๋ฌธ์ œ์˜ 85% ์ด์ƒ์„ ์„ฑ๊ณต์ ์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์„ฑ๊ณต๋ฅ ์ด ๋†’์•„์ง„๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ณ‘๋ ฌ ๊ถค์  ์ตœ์ ํ™” (Minimum-Jerk): ์ค€๋น„๋œ ๋‹ค์ˆ˜์˜ ์‹œ๋“œ ๊ถค์  ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๋™์‹œ์— ์ตœ์ ํ™” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฝ”์ŠคํŠธ ํ•จ์ˆ˜๋Š” ํฌ๊ฒŒ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

    1. ๊ฒฝ๋กœ์˜ ๋ชฉ์ ์ง€ ๋„๋‹ฌ ์˜ค์ฐจ: ์ตœ์ข… ์‹œ์ ์— ์—”๋“œ ์ดํŽ™ํ„ฐ๊ฐ€ ๋ชฉํ‘œ ์ž์„ธ์— ๋„๋‹ฌํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๋น„์šฉ์œผ๋กœ, ์œ„์น˜ ์˜ค์ฐจ์™€ ์ž์„ธ(quaternion) ์˜ค์ฐจ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•ญ์€ ๋ชฉํ‘œ์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก ์„ธ๋ฐ€ํ•˜๊ฒŒ, ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์„ ๋•Œ๋Š” ์•ˆ์ •์ ์œผ๋กœ ์ž‘์šฉํ•˜๋„๋ก ์Šค์ผ€์ผ๋ง๋˜์–ด ์žˆ์–ด, ๋ชฉํ‘œ ๊ทผ์ฒ˜์—์„œ ๋†’์€ ์ •ํ™•๋„๋ฅผ ๋ณด์žฅํ•˜๋ฉด์„œ๋„ ์ดˆ๊ธฐ์—๋Š” ์™„๋งŒํ•œ ๊ฒฝ์‚ฌ๋กœ ํšจ์œจ์  ํƒ์ƒ‰์„ ๋•์Šต๋‹ˆ๋‹ค.
    2. ๊ฒฝ๋กœ์˜ ๊ธธ์ด ๋ฐ ๋งค๋„๋Ÿฌ์›€: ๊ฐ€์†๋„ ๋ฐ ์ €ํฌ(jerk)์— ๋Œ€ํ•œ ํŽ˜๋„ํ‹ฐ๋ฅผ ์คŒ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ตฝ์€ ๊ฒฝ๋กœ๋‚˜ ๊ธ‰๊ฒฉํ•œ ์†๋„ ๋ณ€ํ™”๋ฅผ ์–ต์ œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์†๋„ ์ œ๊ณฑํ•ฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์€ ๊ณง ๋กœ๋ด‡ ๊ด€์ ˆ ์†๋„์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๋ฅผ ์ค„์—ฌ ๊ฒฝ๋กœ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ์งง๊ณ  ํšจ์œจ์ ์ธ ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€, ์ €ํฌ(jerk) ํ•ญ์„ ํ•จ๊ป˜ ์ตœ์†Œํ™”ํ•จ์œผ๋กœ์จ ์†๋„์˜ ๋ณ€ํ™”์œจ๊นŒ์ง€ ์–ต์ œํ•˜๋Š” ์ตœ์†Œ-์ €ํฌ ๊ถค์ ์„ ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ €ํฌ ์ตœ์†Œํ™”๋Š” ํŠนํžˆ ๋กœ๋ด‡์ด ์ •์ง€ ์ƒํƒœ์—์„œ ๊ณ ์†์œผ๋กœ ์›€์ง์ด๊ธฐ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋ฉˆ์ถœ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ถฉ๊ฒฉ์„ ์ค„์—ฌ์ฃผ๋ฉฐ, ์‹ค์ œ ๋กœ๋ด‡ ์ œ์–ด ์‹œ ์ง„๋™ ๊ฐ์†Œ ๋ฐ ์ถ”์ข… ์•ˆ์ •์„ฑ ํ–ฅ์ƒ์— ํฌ๊ฒŒ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

    ์ถ”๊ฐ€๋กœ, ๊ฒฝ๋กœ ์ƒ์—์„œ ๊ด€์ ˆ ๊ฐ๋„ ํ•œ๊ณ„๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ํŽ˜๋„ํ‹ฐ๋ฅผ ๋ถ€๊ณผํ•˜๊ณ  (ํ•˜๋“œ ์ œ์•ฝ์„ ์ผ๋‹จ ํฐ ํŽ˜๋„ํ‹ฐ๋กœ ์™„ํ™”ํ•˜์—ฌ ์ตœ์ ํ™”), ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋กœ๋ด‡ ๋ชจ๋ธ์— ๋”ฐ๋ฅธ ์ž‘์—…๊ณต๊ฐ„ ์ œ์•ฝ(์˜ˆ: ํŠน์ • ๋†’์ด ์œ ์ง€๋‚˜ ๋ง๋‹จ์˜ ๋ฐฉํ–ฅ ์œ ์ง€)๋„ ๋น„์šฉ์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ cuRobo ๋…ผ๋ฌธ์—์„œ๋Š” ์ด๋Ÿฐ ์ž‘์—…-์ œ์•ฝ ๊ฒฝ๋กœ(์˜ˆ: ๋๋‹จ ๊ณต๊ตฌ์˜ ์ผ์ •ํ•œ ์ž์„ธ ์œ ์ง€ ๋“ฑ)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋Š” ์ดˆ๊ธฐ ์‹คํ—˜๋งŒ ํ•ด๋ณด์•˜๊ณ  ์•„์ง ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ†ตํ•ฉํ•˜์ง„ ์•Š์•˜๋‹ค๊ณ  ๋ฐํ˜”์Šต๋‹ˆ๋‹ค.

    ์ถฉ๋Œ ํšŒํ”ผ๋Š” ์ฝ”์ŠคํŠธ ํ•จ์ˆ˜์˜ ํ•„์ˆ˜ ์š”์†Œ์ž…๋‹ˆ๋‹ค. cuRobo๋Š” ๋กœ๋ด‡ ์ž์ฒด ์ถฉ๋Œ(์…€ํ”„-์ฝœ๋ฆฌ์ „)๊ณผ ํ™˜๊ฒฝ ์žฅ์• ๋ฌผ ์ถฉ๋Œ์„ ๋ชจ๋‘ ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•ด, ๋กœ๋ด‡ ๋ฐ ๋ฌผ์ฒด์˜ ๊ธฐํ•˜๋ฅผ ํŠน์ˆ˜ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ถฉ๋Œ ๊ฒ€์ถœ์€ ๋กœ๋ด‡์˜ ๊ฐ ๋งํฌ ํ˜•์ƒ์„ ๋งค๋ฒˆ ์œ„์น˜์‹œ์ผœ ๋ฉ”์‹œ(mesh) ๊ฐ„ ์ถฉ๋Œ ์—ฌ๋ถ€๋‚˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์„ ์ทจํ•˜๋Š”๋ฐ, ์ด๋Š” ๋งค์šฐ ๊ณ„์‚ฐ ์ง‘์•ฝ์ ์ž…๋‹ˆ๋‹ค (์˜ˆ: ROS MoveIt์—์„œ๋Š” ์˜คํ”ˆ์†Œ์Šค FCL(Flexible Collision Library)๋กœ ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์„ CPU์—์„œ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ณต์žกํ•œ ๋กœ๋ด‡-ํ™˜๊ฒฝ ๊ฐ„ ์ถฉ๋Œ ๊ณ„์‚ฐ์ด ๋ณ‘๋ชฉ์ด ๋˜๊ณค ํ•ฉ๋‹ˆ๋‹ค). cuRobo๋Š” ๋กœ๋ด‡์˜ ๊ฐ ๋งํฌ๋ฅผ ๋ณต์ˆ˜์˜ ๊ตฌ(sphere)๋กœ ๊ทผ์‚ฌ ํ‘œํ˜„ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ตฌ์˜ ์ค‘์‹ฌ ์ขŒํ‘œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถฉ๋Œ ๋น„์šฉ ํ•จ์ˆ˜๋ฅผ ์—ฐ์†์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ, ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

    • ํ™˜๊ฒฝ ์ถฉ๋Œ ๋น„์šฉ: ๊ตฌ์™€ ์žฅ์• ๋ฌผ ๊ฐ„ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ, ๋งŒ์•ฝ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ตฌ์˜ ๋ฐ˜์ง€๋ฆ„๋ณด๋‹ค ํฌ๋ฉด (์ถฉ๋Œ ์—ฌ์œ ๊ฐ€ ์ถฉ๋ถ„ํ•˜๋ฉด) ๋น„์šฉ 0, ์–ด๋А ์ž„๊ณ„ ๊ฑฐ๋ฆฌ ์ด๋‚ด๋กœ ๊ฐ€๊นŒ์›Œ์ง€๋ฉด ๋ถ€๋“œ๋Ÿฌ์šด 2์ฐจ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋กœ๋ด‡์ด ์žฅ์• ๋ฌผ์— ๊ทผ์ ‘ํ• ์ˆ˜๋ก ํฐ ํŒจ๋„ํ‹ฐ๋ฅผ ๋ฐ›์•„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฉ€์–ด์ง€๋„๋ก ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค. ์žฅ์• ๋ฌผ์€ ์‚ฌ์ „์— ์ง์œก๋ฉด์ฒด(collaboration box)๋‚˜ ์„œ๋ช…๊ฑฐ๋ฆฌ์žฅ(Signed Distance Field) ๋“ฑ์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ, ๊ฐ ๊ตฌ์˜ ์ค‘์‹ฌ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ๋ณ‘๋ ฌ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. (๋…ผ๋ฌธ์—์„œ๋Š” ์‹คํ—˜ ์‹œ ์›๊ธฐ๋‘ฅ ํ˜•ํƒœ์˜ ์žฅ์• ๋ฌผ์„ ๋™์ผํ•œ ๋ถ€ํ”ผ์˜ ์ง์œก๋ฉด์ฒด๋กœ ๊ทผ์‚ฌํ–ˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทผ์‚ฌ๋Š” ์†๋„๋ฅผ ๋†’์—ฌ์ฃผ์ง€๋งŒ ์•ฝ๊ฐ„์˜ ์˜ค์ฐจ๋ฅผ ์ˆ˜๋ฐ˜ํ•˜์—ฌ, ์ผ๋ถ€ ์—ฃ์ง€ ์ผ€์ด์Šค์—์„  ๋ชฉํ‘œ ์ž์„ธ ์ž์ฒด๊ฐ€ ์žฅ์• ๋ฌผ๊ณผ ๊ฒน์ณ ์œ ํšจ ๊ฒฝ๋กœ๊ฐ€ ์—†๋Š”๋ฐ๋„ ๊ทผ์‚ฌ ์ถฉ๋Œ ๊ฒ€์‚ฌ์ƒ ๊ฐ„๊ณผ๋˜๋Š” ๋“ฑ์˜ ์‚ฌ๋ก€๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.)
    • ์ž๊ธฐ ์ถฉ๋Œ ๋น„์šฉ: ๋กœ๋ด‡ ๋งํฌ๋“ค ๊ฐ„ ์ผ์ • ๊ฑฐ๋ฆฌ ์ด์ƒ ๊ทผ์ ‘ํ•˜์ง€ ์•Š๋„๋ก, ๊ฐ ๋งํฌ๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ๊ตฌ๋“ค ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ๊ณ„์‚ฐํ•ด ๋น„์šฉ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ธ์ ‘ํ•œ ๋งํฌ (์˜ˆ: ๋ฐ”๋กœ ์ด์›ƒ ๊ด€์ ˆ ์‚ฌ์ด)๋Š” ์–ด๋А ์ •๋„ ๊ฐ€๊นŒ์›Œ์ง€๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋˜๋ฏ€๋กœ, ํŠน์ • ๊ตฌ ์Œ๋“ค๋งŒ ์„ ํƒ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์ถฉ๋Œ ๊ณ„์‚ฐ์„ ์ค„์ด๊ณ  ๋กœ๋ด‡์˜ ์ •์ƒ ๋™์ž‘ ๋ฒ”์œ„๋Š” ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

    ํŠนํžˆ cuRobo๋Š” ์—ฐ์†์ (Continuous) ์ถฉ๋Œ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‹œ๊ฐ„์ถ•์„ ๋”ฐ๋ผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์›€์ง์ด๋Š” ๋™์•ˆ์—๋„ ์ค‘๊ฐ„์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋Œ์„ ๋†“์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ ํƒ€์ž„์Šคํ… ๋ณ„ ๋กœ๋ด‡ ์ž์„ธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ธ์ ‘ ์‹œ๊ฐ„ ๊ตฌ๊ฐ„์—์„œ ๋กœ๋ด‡์˜ ๊ถค์ ์ด ์ง€๋‚˜๊ฐ€๋Š” ๊ฒฝ๋กœ๊นŒ์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ด€์ ˆ ๊ฐ๋„ ์‚ฌ์ด๋ฅผ ์„ ํ˜•๋ณด๊ฐ„ํ•œ ์„ธ๋ถ€์ž์„ธ๋“ค๋„ ๋ชจ๋‘ ์œ„ ๊ตฌ-์žฅ์• ๋ฌผ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ์„ ํ†ตํ•ด ์ถฉ๋Œ์ด์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉฐ, ํ•„์š”ํ•˜๋ฉด ์‹œ๊ฐ„ ๋ถ„ํ• ์„ ์กฐ์ •ํ•ด๊ฐ€๋ฉฐ ์™„์ „ํ•œ ์ถฉ๋Œ ํ”„๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

    ๋งˆ์ง€๋ง‰์œผ๋กœ, ์ตœ์ ํ™”๋Š” ๋ณ‘๋ ฌํ™”๋œ L-BFGS ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์‹œ๋“œ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ๊ทธ๋ž˜๋””์–ธํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  L-BFGS ๋ฐฉ์‹์œผ๋กœ ๋™์‹œ์— ๊ฒฝ๋กœ๋ฅผ ์ˆ˜์ •ํ•ด ๋‚˜๊ฐ€๋˜, cuRobo๋Š” ์—ฌ๊ธฐ์— ๋…์ž์ ์ธ ๋ณ‘๋ ฌ ๋…ธ์ด์ฆˆ Line Search ๊ธฐ๋ฒ•์„ ๋”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ L-BFGS ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ƒˆ๋กœ์šด ์Šคํ… ํฌ๊ธฐ๋ฅผ ์ฐพ์„ ๋•Œ ์ง๋ ฌ์ ์œผ๋กœ ํƒ์ƒ‰(line search)์„ ํ•˜์ง€๋งŒ, cuRobo๋Š” ์—ฌ๋Ÿฌ ํ›„๋ณด ์Šคํ…์„ ๋™์‹œ์— ์‹œ๋„ํ•˜๊ณ  ์•ฝ๊ฐ„์˜ ๋ฌด์ž‘์œ„์„ฑ๋„ ๋ถ€์—ฌํ•˜์—ฌ ์ง€์—ญ ์ตœ์ ํ•ด์— ๊ฐ‡ํžˆ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ดˆ๊ธฐ ๋ช‡ ํšŒ์˜ ๋ฐ˜๋ณต(iteration)์€ โ€œํŒŒํ‹ฐํด ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”โ€๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๋“œ ๊ฒฝ๋กœ๋“ค์ด ๋” ์ข‹์€ ์˜์—ญ์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ์œ ๋„ํ•˜๊ณ , ์ดํ›„ L-BFGS๋กœ ๋น ๋ฅด๊ฒŒ ์ˆ˜๋ ด์‹œํ‚ค๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ „๋žต์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํŒŒํ‹ฐํด ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”๋Š” ์‹œ๋“œ๋“ค์„ ์ผ์ข…์˜ ์Šค์›œ(swarm)์œผ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ๊ฐœ๋žต์ ์ธ ์ „์—ญ ํƒ์ƒ‰์„ ํ•˜๋Š” ๋‹จ๊ณ„๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋…ผ๋ฌธ์—์„œ๋Š” ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์œผ๋กœ ์ƒ˜ํ”Œ ๊ธฐ๋ฐ˜ MPPI๋ฒ• ๋“ฑ์„ ํ™œ์šฉํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค). ์š”์•ฝํ•˜๋ฉด, ๋‹ค์ค‘ ์‹œ๋“œ + ํŒŒํ‹ฐํด ํƒ์ƒ‰ + L-BFGS ๋ฏธ์„ธ์กฐ์ •์˜ ์กฐํ•ฉ์œผ๋กœ, ๋†’์€ ์„ฑ๊ณต๋ฅ ๊ณผ ๋น ๋ฅธ ์ˆ˜๋ ด ์†๋„๋ฅผ ๋™์‹œ์— ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์‹œ๊ฐ„ ์ตœ์ ํ™” ๋ฐ ์ตœ์ข… ์ถœ๋ ฅ: ๊ถค์  ์ตœ์ ํ™”๊ฐ€ ๋๋‚˜๋ฉด ๊ฒฐ๊ณผ๋กœ ์–ป์€ ๊ฒฝ๋กœ๋Š” ๊ด€์ ˆ ๊ณต๊ฐ„์—์„œ์˜ ์›€์ง์ž„ ์ˆœ์„œ์ผ ๋ฟ ์•„๋‹ˆ๋ผ, ์‹œ๊ฐ„ ํ”„๋กœํŒŒ์ผ์ด ํ• ๋‹น๋˜์–ด์•ผ ์‹ค์ œ ๋กœ๋ด‡์ด ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cuRobo๋Š” ์ฒ˜์Œ์—๋Š” ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ(dt)์„ ๋†“๊ณ  ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ์ผ๋‹จ ์ถฉ๋Œ ์—†๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ์›€์ง์ผ ๋•Œ ๋กœ๋ด‡์˜ ์†๋„/๊ฐ€์†๋„ ํ•œ๊ณ„๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์–ด๋А ๊ตฌ๊ฐ„์—์„œ ์†๋„๋‚˜ ๊ฐ€์†๋„ ํ•œ๊ณ„๋ฅผ ๋„˜๋Š”๋‹ค๋ฉด ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๊ณ , ์—ฌ์œ ๊ฐ€ ๋งŽ๋‹ค๋ฉด ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๋Š” ์‹์œผ๋กœ ์‹œ๊ฐ„ ์Šค์ผ€์ผ์„ ์žฌ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ทธ ์ƒˆ๋กœ์šด ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์— ๋งž์ถ”์–ด ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ถค์ ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•˜์—ฌ, ์ตœ์ข…์ ์œผ๋กœ ๋กœ๋ด‡์˜ ๋™์ž‘ ํ•œ๊ณ„ ๋‚ด์—์„œ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๋Š” ๊ถค์ ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฐ์ถœ๋œ ๊ฒฐ๊ณผ ๊ถค์  ฮธ[0,T]๋Š” ์‹œ์ž‘๋ถ€ํ„ฐ ๋ชฉํ‘œ๊นŒ์ง€ ๊ฐ ์‹œ์ ๋ณ„ ๊ด€์ ˆ๊ฐ’๊ณผ, ํ•ด๋‹น ์›€์ง์ž„์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ (์†๋„ ํ”„๋กœํŒŒ์ผ)์ด ๋ชจ๋‘ ์ •ํ•ด์ง„ ํ˜•ํƒœ๋กœ, ๋กœ๋ด‡์— ์‹คํ–‰ ๋ช…๋ น์œผ๋กœ ๋ณด๋‚ผ ์ค€๋น„๊ฐ€ ๋œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, cuRobo์˜ ๊ตฌ์กฐ๋Š” (i) ๋ณ‘๋ ฌ IK๋กœ ๋ชฉํ‘œ ์ž์„ธ ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ํ™•์ธ, (ii) ๋‹ค์ˆ˜์˜ ์ดˆ๊ธฐ ๊ฒฝ๋กœ ์ƒ์„ฑ, (iii) ๋ณ‘๋ ฌ ๊ถค์  ์ตœ์ ํ™”๋กœ ์ถฉ๋Œ ์—†๊ณ  ์ตœ์†Œ-์ €ํฌ์ธ ๊ฒฝ๋กœ ํƒ์ƒ‰, (iv) ์‹œ๊ฐ„ ์žฌ์กฐ์ •์œผ๋กœ ๋กœ๋ด‡ ํ•œ๊ณ„ ๋‚ด ์ตœ์  ์†๋„ ๋‹ฌ์„ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณต์žกํ•œ ์ž‘์—…์„ ๋ชจ๋‘ ํฌํ•จํ•จ์—๋„, ๊ฐ•๋ ฅํ•œ GPU ๋ณ‘๋ ฌํ™”๋ฅผ ํ†ตํ•ด ์ˆ˜์‹ญ ๋ฐ€๋ฆฌ์ดˆ ์ˆ˜์ค€์˜ ์†๋„๋ฅผ ์ด๋ฃจ์–ด๋‚ธ ๊ฒƒ์ด cuRobo์˜ ๊ฐ€์žฅ ํฐ ํ˜์‹ ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” cuRobo๊ฐ€ ์–ด๋–ป๊ฒŒ GPU๋ฅผ ํ™œ์šฉํ•ด ์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ์„ ์–ป๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

2.3 GPU ๋ณ‘๋ ฌํ™” ์ „๋žต๊ณผ ์ตœ์ ํ™” ๊ธฐ๋ฒ•

cuRobo์˜ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์˜ ๋น„๊ฒฐ์€ ์ „๋žต์ ์ธ ๋ณ‘๋ ฌํ™”(parallelization)์™€ GPU ์ตœ์ ํ™”์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๋ด‡ ๋ชจ์…˜ ๊ณ„ํš์˜ ๊ฐ ๊ตฌ์„ฑ์š”์†Œ(์˜ˆ: IK ๊ณ„์‚ฐ, ๊ฒฝ๋กœ ์ถฉ๋Œ ๊ฒ€์‚ฌ, ์ตœ์ ํ™” ๋ฐ˜๋ณต ๋“ฑ)๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋˜ ์ž‘์—…์ด์—ˆ์Šต๋‹ˆ๋‹ค. cuRobo๋Š” ์ด๋ฅผ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ๋ณ‘๋ ฌํ™”ํ•˜์—ฌ, GPU์˜ ์ˆ˜์ฒœ ๊ฐœ ์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•จ์œผ๋กœ์จ ๋™์‹œ์— ๋งŽ์€ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค์ค‘ ์‹œ๋“œ ๋ณ‘๋ ฌ ์ตœ์ ํ™”: ์•ž์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด cuRobo๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ดˆ๊ธฐ ๊ฒฝ๋กœ ์‹œ๋“œ๋ฅผ ๋‘ก๋‹ˆ๋‹ค. ์ด ๊ฐ๊ฐ์˜ ์‹œ๋“œ ๊ฒฝ๋กœ ์ตœ์ ํ™”๋Š” ๋…๋ฆฝ์ ์ธ ๊ณ„์‚ฐ์ด๋ฏ€๋กœ, GPU์˜ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ธ”๋ก์— ๋ถ„๋ฐฐํ•˜์—ฌ ๋™์‹œ์— ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” ํ•œ ์‹œ๋“œ๋‹น ํ•˜๋‚˜์˜ CUDA ๋ธ”๋ก์„ ํ• ๋‹นํ•˜๊ณ , ์ˆ˜์‹ญ ๊ฐœ์˜ ์‹œ๋“œ๊ฐ€ ๊ฐ๊ฐ ๋ณ‘๋ ฌ๋กœ ์—…๋ฐ์ดํŠธ๋œ๋‹ค๊ณ  ๋ฐํžˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„ ๋‹น ๋งŽ์€ ํ›„๋ณด ๊ฒฝ๋กœ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์–ด, ๋‹จ์ˆœ ๋‹จ์ผ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์›”๋“ฑํžˆ ๋น ๋ฅด๊ฒŒ ์šฐ์ˆ˜ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šค๋ ˆ๋“œ ๋‹จ์œ„ ์„ธ๋ถ„ํ™”: ๋”์šฑ ํฅ๋ฏธ๋กœ์šด ์ ์€, ํ•œ ๊ฐœ์˜ ์‹œ๋“œ์˜ ์ตœ์ ํ™” ๊ณผ์ • ๋‚ด๋ถ€์—์„œ๋„ ๋ณ‘๋ ฌํ™”๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ๊ถค์ ์˜ ์ถฉ๋Œ ๋น„์šฉ์ด๋‚˜ ๊ทธ๋ž˜๋””์–ธํŠธ๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ, ์‹œ๊ฐ„ ๋‹จ๊ณ„๋ณ„๋กœ ํ˜น์€ ๊ด€์ ˆ๋ณ„๋กœ ๊ณ„์‚ฐ์„ ์ชผ๊ฐœ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๋ถ„๋‹ดํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์— ๋”ฐ๋ฅด๋ฉด, โ€œworkload๊ฐ€ ํฐ ์ปค๋„๋“ค์„ ์‹œ๋“œ๋ณ„๋กœ๋„ ๋‹ค์‹œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ์ชผ๊ฐœ์–ด ์‹คํ–‰(split kernels across many threads per seed)โ€ํ•˜์—ฌ, ์ „ํ†ต์ ์œผ๋กœ ๋ฐ˜๋ณต์ ์ด๊ณ  ์ˆœ์ฐจ์ ์ธ ์ˆ˜์น˜์ตœ์ ํ™” ์ž‘์—…์—์„œ๋„ ํฐ ํญ์˜ ๊ฐ€์†์„ ์–ป์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์‚ฌ๋ก€๋กœ ๋กœ๋ด‡ ์ •๋ฐฉํ–ฅ ๊ธฐ๊ตฌํ•™ (Forward Kinematics) ๊ณ„์‚ฐ์„ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต n-์ž์œ ๋„ ๋กœ๋ด‡์˜ ์ •๊ธฐ๊ตฌํ•™์€ ๊ฐ ๊ด€์ ˆ ๋ณ€ํ™˜์„ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๊ณฑ์ ์šฉํ•˜๋Š” ์™„์ „ํžˆ ์ง๋ ฌ์ ์ธ ๊ณ„์‚ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ cuRobo๋Š” ๋™์ฐจ๋ณ€ํ™˜ ํ–‰๋ ฌ(4x4)์„ ์‚ฌ์šฉํ•ด 4๊ฐœ์˜ ์š”์†Œ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๊ณ , ์—ฌ๋Ÿฌ ๊ด€์ ˆ ๋ณ€ํ™˜๋„ ๋งคํŠธ๋ฆญ์Šค ๊ณฑ์…ˆ์„ 4๊ฐœ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ‘๋ ฌ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹์œผ๋กœ ๋ณ‘๋ ฌํ™”๋ฅผ ๋ถ€๋ถ„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•œ ๊ด€์ ˆ์”ฉ ์ง„ํ–‰ํ•˜๋˜ ๊ธฐ์กด GPU ๊ตฌํ˜„(STORM ๋“ฑ)์ด ๋งŽ์€ ์ปค๋„ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, cuRobo๋Š” ๋‹จ์ผ CUDA ์ปค๋„์—์„œ ๋ชจ๋“  ๋งํฌ ์ขŒํ‘œ๋ฅผ ๊ณ„์‚ฐํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ณ‘๋ชฉ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ ์ • ๋ฐฐ์น˜(batch) ํฌ๊ธฐ ์ด์ƒ์—์„œ๋Š” CPU์˜ ์ตœ๊ณ ์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Pinocchio ๋“ฑ)๋ณด๋‹ค ์ˆ˜๋ฐฑ - ์ˆ˜์ฒœ ๋ฐฐ๊นŒ์ง€๋„ ๋น ๋ฅธ ๊ธฐ๊ตฌํ•™ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ธ๋ฐ€ํ•œ ์ตœ์ ํ™” ๋•๋ถ„์—, cuRobo์˜ ์ •๊ธฐ๊ตฌํ•™์€ 100k๊ฐœ์˜ ์ž์„ธ์— ๋Œ€ํ•ด์„œ๋„ CPU ๋Œ€๋น„ ์ตœ๋Œ€ 891๋ฐฐ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์ด๋ฉฐ, ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ (์ถฉ๋Œ ๊ฒ€์‚ฌ)๋„ ๋Œ€๊ทœ๋ชจ ๋ฐฐ์น˜ ์‹œ PyBullet ๋Œ€๋น„ ์ตœ๋Œ€ 16000๋ฐฐ๊นŒ์ง€ ๋นจ๋ผ์ง€๋Š” ํš๊ธฐ์ ์ธ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค (๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ํฐ ๋ฐฐ์น˜๋Š” ์‹ค์‹œ๊ฐ„ ์ ์šฉ๋ณด๋‹ค๋Š” ๋ณ‘๋ ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ถ„์„ ๋“ฑ์— ๊ฐ€๊น์ง€๋งŒ, 100 - 1000๊ฐœ ์ˆ˜์ค€์˜ ๋ณ‘๋ ฌ ๊ณ„์‚ฐ์—์„œ๋„ ์ด๋ฏธ ์œ ์˜๋ฏธํ•œ ๊ฐ€์†์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค).

  • CUDA ๊ทธ๋ž˜ํ”„(CUDA Graphs) ํ™œ์šฉ: cuRobo๋Š” Python์œผ๋กœ ๊ตฌํ˜„๋œ ์ƒ์œ„ ๋กœ์ง์—์„œ ์—ฌ๋Ÿฌ CUDA ์ปค๋„์„ ํ˜ธ์ถœํ•˜๋Š” ๊ตฌ์กฐ์ธ๋ฐ, ์ด ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ(CPU)-๋””๋ฐ”์ด์Šค(GPU) ๊ฐ„ ์ปค๋„ ํ˜ธ์ถœ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ˆ„์ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ตœ์ ํ™” ๋ฐ˜๋ณต๊ณผ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ ์ค€๋น„ ๊ณผ์ •์„ CUDA Graph ๊ธฐ๋Šฅ์œผ๋กœ ๋ฌถ์–ด ์ผ๊ด„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. CUDA Graph๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ผ๋ จ์˜ GPU ์—ฐ์‚ฐ์„ ํ•œ๊บผ๋ฒˆ์— ์‹คํ–‰ํ•˜๋„๋ก ์Šค์ผ€์ค„๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ๋กœ, cuRobo๋Š” ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ด์ฌ ๋ฃจํ”„์—์„œ ์ปค๋„์„ ๋งค iteration ํ˜ธ์ถœํ•˜๋˜ ๊ฒƒ์„ ๋…นํ™”(record) ํ›„ ์žฌ์‹คํ–‰ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ์–ด ์•ฝ 10๋ฐฐ์˜ ์†๋„ ํ–ฅ์ƒ์„ ์–ป์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ Python ๋ ˆ๋ฒจ์˜ ๋ถ€๋‹ด์„ ์ค„์ธ ๊ฒฐ๊ณผ, cuRobo์˜ ์ „์ฒด ๊ณ„ํš ์‹œ๊ฐ„ ์ค‘ Python ์ƒ์—์„œ ์†Œ๋ชจ๋˜๋Š” ์‹œ๊ฐ„์ด ํ‰๊ท  8ms ์ •๋„์— ๋ถˆ๊ณผํ•˜๋ฉฐ, ์ถ”ํ›„ ํ•ด๋‹น ๋ถ€๋ถ„์„ C++๋กœ ์˜ฎ๊ธฐ๊ณ  ์ปค๋„๋“ค์„ ๋”์šฑ ํ†ตํ•ฉํ•œ๋‹ค๋ฉด ํ˜„์žฌ 60๋ฐฐ์ธ ์†๋„ ํ–ฅ์ƒ์ด ์ตœ๋Œ€ 93๋ฐฐ๊นŒ์ง€๋„ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”์™€ ๊ธฐํƒ€ ๊ธฐ๋ฒ•: GPU ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋„ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๋Š”๋ฐ, cuRobo๋Š” ๋กœ๋ด‡ ๋ฐ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ GPU์— ์ƒ์ฃผ์‹œ์ผœ ๋ฐ˜๋ณต ์‚ฌ์šฉํ•˜๊ณ , ์ถฉ๋Œ ๊ฒ€์‚ฌ์— ํ•„์š”ํ•œ ๊ตฌ ๊ตฌ์„ฑ์ด๋‚˜ ์„œ๋ช… ๊ฑฐ๋ฆฌ์žฅ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋„ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด ํšจ์œจ์ ์œผ๋กœ ์ฝ๋„๋ก ์‹ ๊ฒฝ ์ผ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋กœ๋ด‡์˜ ๋ฉ”์‹œ -> ๊ตฌ ๊ทผ์‚ฌ ๋ณ€ํ™˜ ๋“ฑ์„ ๋„์™€์ฃผ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ์ƒˆ๋กœ์šด ๋กœ๋ด‡์ด๋‚˜ ํ™˜๊ฒฝ์— ์ ์šฉํ•  ๋•Œ ๊ฒช๋Š” ์–ด๋ ค์›€์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค (NVIDIA Isaac Sim๊ณผ ์—ฐ๋™๋œ sphere generation ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋“ฑ์„ ์ œ๊ณต). ์ด๋Ÿฌํ•œ ์‹ค๋ฌด์ ์ธ ์ตœ์ ํ™” ํฌ์ธํŠธ๊นŒ์ง€ ์ฑ™๊ฒจ, cuRobo ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ผ๋ฐ˜ PC์—์„œ๋ฟ ์•„๋‹ˆ๋ผ Jetson๊ณผ ๊ฐ™์€ ์ž„๋ฒ ๋””๋“œ GPU ํ”Œ๋žซํผ์—์„œ๋„ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ด๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

์š”์ปจ๋Œ€ cuRobo๋Š” โ€œ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๋ณ‘๋ ฌ๋กœโ€๋ผ๋Š” ์ฒ ํ•™์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๊ณ , GPU์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ์‚ด๋ฆฐ ๋งž์ถค ๊ตฌํ˜„์„ ํ†ตํ•ด ๊ธฐ์กด CPU ์œ„์ฃผ์˜ ์ ‘๊ทผ์œผ๋กœ๋Š” ์ƒ์ƒํ•˜๊ธฐ ์–ด๋ ค์šด ์†๋„๋ฅผ ์‹คํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, ์‹ค์ œ ์„ฑ๋Šฅ ์ˆซ์ž์™€ ์‹คํ—˜ ๊ฒฐ๊ณผ๋“ค์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

2.4 ์„ฑ๋Šฅ ํ‰๊ฐ€: ์†๋„, ์„ฑ๊ณต๋ฅ  ๊ทธ๋ฆฌ๊ณ  ๋™์ž‘ ์•ˆ์ •์„ฑ

cuRobo์˜ ์„ฑ๋Šฅ์€ ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์—์„œ ๊ธฐ์กด ๊ธฐ์ˆ ๋“ค์„ ํฌ๊ฒŒ ์•ž์„œ๋‚˜๊ฐ‘๋‹ˆ๋‹ค. ์†๋„ ์ธก๋ฉด์—์„œ๋Š”, ๋ณต์žกํ•œ 7์ž์œ ๋„ ๋กœ๋ด‡ ํŒ”์ด ์žฅ์• ๋ฌผ ์‚ฌ์ด๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ‰๊ท  50ms๋งŒ์— ํ’€์–ด๋‚ด์–ด, ๊ธฐ์กด ์ตœ์ ํ™” ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ• ๋Œ€๋น„ ์•ฝ 60๋ฐฐ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์–ด๋ ค์šด ์ƒ์œ„ 10% ๋‚œ์ด๋„ ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ์ˆ˜์‹ญ ๋ฐฐ ์ด์ƒ์˜ ๊ฒฉ์ฐจ๊ฐ€ ๋ฒŒ์–ด์ ธ, ์˜ˆ๋ฅผ ๋“ค์–ด 98๋ฒˆ์งธ ํผ์„ผํƒ€์ผ ๋‚œ์ด๋„ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ cuRobo๋Š” ์•ฝ 0.26์ดˆ, ๊ธฐ์กด ๋ฐฉ์‹(Tesseract)์€ 22์ดˆ๊ฐ€ ๊ฑธ๋ ค 83๋ฐฐ ์†๋„ ์ฐจ์ด๋ฅผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„๊ต๋Š” Omniverse Isaac Sim์˜ Franka Emika Panda ๋กœ๋ด‡ํŒ”๊ณผ ๋‹ค์–‘ํ•œ ์žฅ์• ๋ฌผ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์ด 2600๊ฐœ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ cuRobo์˜ ์†๋„ ํ–ฅ์ƒ์€ ๋ฐ์Šคํฌํƒ‘ ๊ณ ์„ฑ๋Šฅ PC๋ฟ ์•„๋‹ˆ๋ผ ์ž„๋ฒ ๋””๋“œ ํ”Œ๋žซํผ์—์„œ๋„ ์œ ํšจํ–ˆ์Šต๋‹ˆ๋‹ค. ์—”๋น„๋””์•„ Jetson AGX Orin ๋ชจ๋“ˆ(์ง€๋Šฅํ˜• ๋กœ๋ด‡์— ์ž์ฃผ ์“ฐ์ด๋Š” 60W ๋‚ด์™ธ GPU ์ปดํ“จํŒ… ๋ชจ๋“ˆ)์—์„œ ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ, cuRobo๋Š” Jetson์—์„œ 15W ์ €์ „๋ ฅ ๋ชจ๋“œ๋กœ ๋™์ž‘ํ•ด๋„ ๋ฐ์Šคํฌํƒ‘ i7 CPU์—์„œ ๊ตฌ๋™ํ•œ Tesseract๋ณด๋‹ค ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. Jetson 15W ํ™˜๊ฒฝ์—์„œ ์กฐ์ฐจ cuRobo๊ฐ€ Tesseract๋ณด๋‹ค 21๋ฐฐ ๋นจ๋ž๊ณ , Jetson์„ ์ตœ๋Œ€ ์„ฑ๋Šฅ(MAXN)์œผ๋กœ ๊ตฌ๋™ํ•˜๋ฉด 28๋ฐฐ๊นŒ์ง€๋„ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Š” cuRobo์˜ GPU ์ตœ์ ํ™”๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋›ฐ์–ด๋‚œ์ง€๋ฅผ ์ž˜ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ๋กœ, ์ €์ „๋ ฅ ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค์—์„œ๋„ ์‹ค์‹œ๊ฐ„ ๋ชจ์…˜ ๊ณ„ํš์„ ๊ฐ€๋Šฅ์ผ€ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๊ณต๋ฅ (์„ฑ๊ณต ํ™•๋ฅ )๊ณผ ๊ฒฝ๋กœ ํ’ˆ์งˆ ์ธก๋ฉด์—์„œ๋„ cuRobo๋Š” ์šฐ์ˆ˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ•œ 2600๊ฐœ์˜ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ ์„ธํŠธ์—์„œ, cuRobo์˜ ๋ชจ์…˜ ์ƒ์„ฑ์€ 99.8%์˜ ๋งค์šฐ ๋†’์€ ์„ฑ๊ณต๋ฅ ์„ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋™์ผ ์กฐ๊ฑด์—์„œ ์ „ํ†ต์ ์ธ ์กฐํ•ฉ(OMPL RRTConnect + TrajOpt ์ตœ์ ํ™”)์„ ์‚ฌ์šฉํ•œ Tesseract์˜ ์•ฝ 98.5%์™€ ๋น„๊ตํ•ด๋„ ๋†’์€ ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค. Tesseract๋Š” 38๊ฐœ์˜ ์‹คํŒจ ์‚ฌ๋ก€๊ฐ€ ์žˆ์—ˆ๋˜ ๋ฐ˜๋ฉด, cuRobo๋Š” ์˜ค์ง 5๊ฐœ ๋ฌธ์ œ๋งŒ ์‹คํŒจํ–ˆ๋Š”๋ฐ, ๊ทธ๋งˆ์ €๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ƒ์˜ ํ•œ๊ณ„๋ผ๊ธฐ๋ณด๋‹ค ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ œ (๋ชฉํ‘œ ์ž์„ธ ์ž์ฒด๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฅ์• ๋ฌผ๊ณผ ๊ฒน์ณ์žˆ์–ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋“ฑ)์˜€๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์œ ํšจํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ์‚ฌ์‹ค์ƒ ๋ชจ๋‘ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ cuRobo๋Š” ๊ฒฝ๋กœ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์šฐํšŒ๋‚˜ ๋ฉ€๋ฆฌ ๋Œ์•„๊ฐ€๋Š” ๊ฒฝ๋กœ๋ฅผ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์ธก์ • ๊ฒฐ๊ณผ cuRobo๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ๊ฒฝ๋กœ์˜ ๊ด€์ ˆ ์ด๋™๊ฑฐ๋ฆฌ ์ดํ•ฉ(C-space path length)์€ ์ˆœ์ˆ˜ RRT ๊ธฐ๋ฐ˜ ๊ฒฝ๋กœ๋ณด๋‹ค ํ‰๊ท  53% ์งง์•˜๊ณ , ๋™์ผํ•œ TrajOpt ์ ์šฉ ๋Œ€๋น„๋กœ๋„ ์•ฝ 10% ๊ฐ€๋Ÿ‰ ๋” ์งง์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” cuRobo๊ฐ€ ์ตœ์†Œํ•œ์˜ ์›€์ง์ž„์œผ๋กœ ๋ชฉํ‘œ์— ๋„๋‹ฌํ•˜๋Š” ํšจ์œจ์ ์ธ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„๋‚ธ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ญ๋‹ˆ๋ญ๋‹ˆํ•ด๋„ ํ˜„์žฅ์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์‹ค์ œ ๋กœ๋ด‡ ๋™์ž‘์˜ ์•ˆ์ •์„ฑ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. cuRobo์˜ ์ตœ์†Œ-์ €ํฌ ์ตœ์ ํ™”๋Š” ์ด ๋ถ€๋ถ„์—์„œ ํฐ ๊ฐ•์ ์„ ๋ณด์˜€๋Š”๋ฐ, ์ด๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์—ฐ๊ตฌ์ง„์€ ์‹ค์ œ ๋กœ๋ด‡์œผ๋กœ ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹ˆ๋ฒ„์„ค๋กœ๋ด‡(UR5e, UR10 ๋ชจ๋ธ) ๋‘ ๋Œ€๋ฅผ ์ค€๋น„ํ•˜์—ฌ, ๊ฐ๊ฐ์˜ ์ž‘์—…๊ณต๊ฐ„์— ์žฅ์• ๋ฌผ์„ ๋†“๊ณ  7๊ฐœ์˜ ์ž„์˜ ๋ชฉํ‘œ ์ž์„ธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์—ฐ๋‹ฌ์•„ ๋„๋‹ฌํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑ, ๋กœ๋ด‡์—๊ฒŒ ์‹คํ–‰์‹œํ‚ค๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ต๊ตฐ์œผ๋กœ ์ตœ์†Œ-์ €ํฌ ์˜ต์…˜์„ ๋ˆ(min-acc) ๊ฒฝ์šฐ(์ฆ‰ ๊ฐ€์†๋„๋งŒ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ €ํฌ๋Š” ๊ณ ๋ ค ์•ˆ ํ•œ ๊ฒฝ์šฐ)์™€ ์ผ (min-jerk) ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ์‹œํ—˜ํ•˜์—ฌ, ๋กœ๋ด‡์˜ ๊ถค์  ์ถ”์ข… ์˜ค์ฐจ๋ฅผ ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ, ์ €ํฌ ์ตœ์†Œํ™”๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ๋กœ๋ด‡์˜ ์ถ”์ข… ์„ฑ๋Šฅ์ด ๋ˆˆ์— ๋„๊ฒŒ ํ–ฅ์ƒ๋จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋กœ๋ด‡ ๋ชจ๋‘์—์„œ, ๊ด€์ ˆ ์œ„์น˜ ์˜ค์ฐจ์™€ ์†๋„ ์ถ”์ข… ์˜ค์ฐจ๊ฐ€ ์ตœ์†Œ-์ €ํฌ ๊ถค์ ์—์„œ ๋” ๋‚ฎ์•˜๊ณ , ํŠนํžˆ UR10 ๊ฐ™์€ ๋น„๊ต์  ํฌ๊ณ  ๋ฌด๊ฑฐ์šด ๋กœ๋ด‡์—์„œ๋Š” ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. UR10์˜ ๊ฒฝ์šฐ ์ตœ์†Œ-์ €ํฌ ์ ์šฉ ์‹œ ํ‰๊ท  ์œ„์น˜ ์˜ค์ฐจ๊ฐ€ ์•ฝ 0.0013 rad์˜€์ง€๋งŒ, ๋ฏธ์ ์šฉ ์‹œ์—๋Š” 0.0025 rad๋กœ ๋‘ ๋ฐฐ ๊ฐ€๊นŒ์ด ๋Š˜์–ด๋‚˜, ๋กœ๋ด‡ ์—”์ฝ”๋”์˜ ๊ณต์ธ ์ •๋ฐ€๋„(์•ฝ 0.0017 rad)๋ฅผ ๋„˜์–ด์„œ๋Š” ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค, ๊ฐ€์†๋„ ์ตœ์†Œํ™”๋งŒ ํ•œ ๊ฒฝ์šฐ ๊ถค์  ์‹œ์ž‘๋ถ€์— ํฐ ์†๋„ ์˜ค์ฐจ/์œ„์น˜ ์˜ค์ฐจ ์ŠคํŒŒ์ดํฌ๊ฐ€ ๊ด€์ฐฐ๋˜์—ˆ๋Š”๋ฐ, ์ด๋Š” ๋กœ๋ด‡์ด ์ˆœ๊ฐ„์ ์œผ๋กœ ์ตœ๋Œ€ ๊ฐ€์†๋„์— ๋„๋‹ฌํ•˜๋„๋ก ๋ช…๋ น๋ฐ›์•˜์„ ๋•Œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ฆ‰๊ฐ ๋ฐ˜์‘ํ•˜์ง€ ๋ชปํ•ด ์ƒ๊ธฐ๋Š” ์˜ค์ฐจ์˜€์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ €ํฌ๋ฅผ ๊ฐ™์ด ์ตœ์†Œํ™”ํ•œ ๊ถค์ ์€ ์ดˆ๋ฐ˜์— ๊ฐ€์†๋„๋ฅผ ์„œ์„œํžˆ ๋†’์ด๋„๋ก ๊ณ„ํš๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ŠคํŒŒ์ดํฌ๊ฐ€ ์‚ฌ๋ผ์กŒ๊ณ , ์ „๋ฐ˜์ ์œผ๋กœ ๋งค๋„๋Ÿฝ๊ฒŒ ๊ฐ€์†/๊ฐ์†ํ•˜์—ฌ ๋กœ๋ด‡์ด ๋ณด๋‹ค ์ •ํ™•ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹คํ—˜์€, ์ตœ์†Œ-์ €ํฌ ๊ธฐ์ค€์˜ ๊ถค์ ์ด ๊ณ ์† ๋™์ž‘์—์„œ์˜ ์ง„๋™์ด๋‚˜ ์ถ”์ข… ์˜ค์ฐจ๋ฅผ ์ค„์—ฌ ๋กœ๋ด‡ ์›€์ง์ž„์˜ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค๋Š” ๊ฒƒ์„ ์‹ค์ œ๋กœ ์ž…์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํšจ๊ณผ ๋•๋ถ„์—, cuRobo๊ฐ€ ์ƒ์„ฑํ•œ ๊ถค์ ์„ ๋กœ๋ด‡์— ๋ณด๋‚ผ ๋•Œ ์ถ”๊ฐ€์ ์ธ ์†๋„ ๋ณด๊ฐ„ ์—†์ด๋„ (32์‹œ์  ๊ถค์ ์„ 10ms ๊ฐ„๊ฒฉ์œผ๋กœ ์„ ํ˜• ๋ณด๊ฐ„๋งŒ ํ•˜์—ฌ) ๋ฌธ์ œ์—†์ด ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์•ฝ 35ํšŒ ์—ฐ์† ๋™์ž‘ ์ˆ˜ํ–‰์—์„œ๋„ ์•ˆ์ „ํ•˜๊ณ  ์ •ํ™•ํ•œ ์›€์ง์ž„์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ์‹ค์‹œ๊ฐ„์„ฑ ์ธก๋ฉด์„ ์–ธ๊ธ‰ํ•˜๋ฉด, cuRobo๋Š” ์‹ค์ œ ๋กœ๋ด‡์ƒ์—์„œ๋„ ๊ณ„ํš ์‹œ๊ฐ„์€ ํ‰๊ท  100ms ์ด๋‚ด๋กœ ์ธก์ •๋˜์–ด ํ”Œ๋ž˜๋‹ ์ง€์—ฐ์ด ๊ฑฐ์˜ ๋ฌด์‹œํ•  ์ˆ˜์ค€์ž„์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ชฉํ‘œ ์ž์„ธ๋งŒ ์ฃผ์–ด์ง€๋ฉด 0.1์ดˆ ๋‚ด์— ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜ค๊ณ , ๋ฐ”๋กœ ๋กœ๋ด‡์ด ์›€์ง์ด๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ณ„ํš ์ˆ˜๋ฆฝ๋ถ€ํ„ฐ ์‹คํ–‰ ์™„๋ฃŒ๊นŒ์ง€ ๋งค์šฐ ์งง์€ ์‚ฌ์ดํด๋กœ ๋™์ž‘ ๊ฐ€๋Šฅํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฐ์—…์šฉ ๋กœ๋ด‡์˜ ๋นˆ๋ฒˆํ•œ ๊ฒฝ๋กœ ์žฌ๊ณ„ํš์ด๋‚˜, ์ธ๊ฐ„-๋กœ๋ด‡ ์ƒํ˜ธ์ž‘์šฉ์—์„œ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์‘์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์—๋„ ์ถฉ๋ถ„ํžˆ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

2.5 ๊ตฌํ˜„ ๋‚œ์ด๋„์™€ ์˜คํ”ˆ์†Œ์Šค ํ™œ์šฉ

cuRobo๋Š” NVIDIA ์—ฐ๊ตฌ์ง„์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ๋ˆ„๊ตฌ๋‚˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ(NVlabs/curobo)์—๋Š” ์„ค์น˜ ๋ฐฉ๋ฒ•๊ณผ ์˜ˆ์ œ๊ฐ€ ์ œ๊ณต๋˜์–ด ์žˆ๊ณ , 2025๋…„ 4์›” ๊ธฐ์ค€์œผ๋กœ 1.1k ์ด์ƒ์˜ Star๋ฅผ ๋ฐ›์„ ์ •๋„๋กœ ๋งŽ์€ ๊ด€์‹ฌ์„ ๋ชจ์œผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. C++/CUDA๋กœ ์ž‘์„ฑ๋œ ํ•ต์‹ฌ ์—ฐ์‚ฐ ์ปค๋„๋“ค๊ณผ Python ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด, Python ํ™˜๊ฒฝ (์˜ˆ: ROS์˜ Python ๋…ธ๋“œ ๋“ฑ)์—์„œ ์†์‰ฝ๊ฒŒ ๋ถˆ๋Ÿฌ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉด์„œ๋„ ์‹œ๊ฐ„Criticalํ•œ ๋ถ€๋ถ„์€ GPU๋กœ ๋™์ž‘ํ•˜๋„๋ก ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ตฌ์กฐ๋„ ๋ชจ๋“ˆํ™”๋˜์–ด, ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋–ผ์–ด์“ฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ •๋ฐฉํ–ฅ/์—ญ๋ฐฉํ–ฅ ๊ธฐ๊ตฌํ•™, ์ถฉ๋Œ ๊ฒ€์‚ฌ, MPPI ์ตœ์ ํ™” ๋ชจ๋“ˆ ๋“ฑ์„ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ ์“ธ ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ž์ฒด์ ์ธ ๋ชจ์…˜ํ”Œ๋ž˜๋„ˆ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ cuRobo๋Š” MoveIt๊ณผ ๊ฐ™์€ ๊ธฐ์กด ๋กœ๋ด‡ ๋ชจ์…˜ ๊ณ„ํš ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์—ฐ๋™๋„ ๊ณ ๋ ค๋˜์—ˆ๋Š”๋ฐ, Isaac ROS cuMotion์ด๋ผ๋Š” MoveIt ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ๋„ ์ œ๊ณต๋˜์–ด ROS ํ™˜๊ฒฝ์—์„œ cuRobo์˜ ๊ณ„ํš๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด ์ƒ์šฉ ํŒจํ‚ค์ง€๋Š” GPU๊ฐ€ ์—†๋Š” ์‹œ์Šคํ…œ์—์„œ๋Š” ๋™์ž‘์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ (cuRobo ์ž์ฒด๊ฐ€ GPU ๊ฐ€์†์„ ์ „์ œ๋กœ ์„ค๊ณ„), ROS๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ์—๋„ ์—”๋น„๋””์•„ GPU ํ”Œ๋žซํผ์—์„œ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„ ๋‚œ์ด๋„ ์ธก๋ฉด์—์„œ, cuRobo๊ฐ€ ์ž์ฒด ๊ฐœ๋ฐœํ•œ GPU ์ปค๋„๋“ค์€ ๋งค์šฐ ์ „๋ฌธ์ ์ธ ์ตœ์ ํ™” ๊ธฐ๋ฒ•๋“ค์ด ๋™์›๋˜์—ˆ์œผ๋‚˜, ๋‹คํ–‰ํžˆ ์ตœ์ข… ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” API๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋ชฐ๋ผ๋„ ๋  ์ •๋„๋กœ ์ถ”์ƒํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๋กœ๋ด‡ ๋ชจ๋ธ์ด๋‚˜ ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ์žฅ์• ๋ฌผ ํ™˜๊ฒฝ์„ ์ ์šฉํ•˜๋ ค๋ฉด, ํ•ด๋‹น ๋ชจ๋ธ์˜ ๊ตฌ(sphere) ๊ทผ์‚ฌ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋“ฑ์˜ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ ์–ธ๊ธ‰๋œ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด, NVIDIA Isaac Sim ๋“ฑ์˜ ํˆด์„ ์ด์šฉํ•ด ๋กœ๋ด‡์˜ ๋ฉ”์‹œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋‹ค์ค‘ ๊ตฌ๋กœ ์น˜ํ™˜ํ•ด์ฃผ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ๊ฐœ๋ฐœ๋˜์—ˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๋งŽ์€ ๋กœ๋ด‡์— ๊ตฌ ๋ชจ๋ธ์„ ์ž‘์„ฑํ•ด๋‘์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ˜„์‹ค์ ์œผ๋กœ ์—ฐ๊ตฌ์ž๋“ค์ด ์ž์ฃผ ์“ฐ๋Š” ๋กœ๋ด‡(Franka Panda, UR ์‹œ๋ฆฌ์ฆˆ, Kinova Jaco ๋“ฑ)์€ ์ด๋ฏธ sphere ๋ชจ๋ธ์ด ์ค€๋น„๋˜์–ด ์žˆ์–ด ๊ณง๋ฐ”๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ด ๊ณผ์ •์ด ์กฐ๊ธˆ ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผํšŒ์„ฑ ์ž‘์—…์ด๋ฉฐ ์ดํ›„์—๋Š” ์ถฉ๋Œ ๊ฒ€์‚ฌ๊ฐ€ ์›Œ๋‚™ ๋นจ๋ผ์ง€๋Š” ์ด์ ์ด ํฌ๋ฏ€๋กœ ๊ฐ์ˆ˜ํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜๋ฉด, cuRobo๋Š” ์ตœ์‹  GPU ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์œผ๋กœ ๋ฌด์žฅํ•œ ์ „๋ฌธ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด์ง€๋งŒ, ์ด๋ฅผ ์ ‘ํ•˜๋Š” ์—ฐ๊ตฌ์ž๋“ค์€ ์ด๋ฏธ ๊ตฌํ˜„๋œ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์จ์„œ ํšจ๊ณผ๋ฅผ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€ ๊ด€์‹ฌ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ธฐ์—ฌํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜, cuRobo๋ฅผ ์ž์‹ ์˜ ์—ฐ๊ตฌ์— ๋งž๊ฒŒ ํ™•์žฅํ•ด๋ณผ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ cuRobo์˜ ์˜คํ”ˆ์†Œ์Šคํ™”๋กœ ์ธํ•ด ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ฒ˜ ์—ฐ๊ตฌ์ž๋“ค์ด ์ €์ •๋ฐ€ ์—ฐ์‚ฐ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ณ‘๋ชฉ์„ ์ค„์ด๋Š” ์‹คํ—˜์„ ํ–ˆ๋‹ค๊ฑฐ๋‚˜, ๋กœ๋ณดํ‹ฑ์Šค ์™ธ ๋ถ„์•ผ ์ „๋ฌธ๊ฐ€๋“ค์ด ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹œํ—˜ํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๋“ฑ ๊ธ์ •์ ์ธ ํŒŒ๊ธ‰ํšจ๊ณผ๊ฐ€ ๋ณด๊ณ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

2.6 ๊ธฐ์กด ๋ชจ์…˜ ์ƒ์„ฑ ๊ธฐ๋ฒ•๊ณผ์˜ ๋น„๊ต

cuRobo์˜ ์„ฑ๋Šฅ๊ณผ ์ ‘๊ทผ๋ฒ•์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด, ๊ธฐ์กด์˜ ๋Œ€ํ‘œ์ ์ธ ๋กœ๋ด‡ ๋ชจ์…˜ ๊ณ„ํš/์ƒ์„ฑ ๊ธฐ๋ฒ•๋“ค๊ณผ ๋น„๊ตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๋ด‡ ๋ชจ์…˜ ๊ณ„ํš ๋ถ„์•ผ์—์„œ๋Š” ์ƒ˜ํ”Œ๋ง ๊ธฐ๋ฐ˜ ๊ธฐ๋ฒ•(์˜ˆ: RRT, PRM)๊ณผ ์ตœ์ ํ™” ๊ธฐ๋ฐ˜ ๊ธฐ๋ฒ•(์˜ˆ: CHOMP, TrajOpt, STOMP ๋“ฑ), ๊ทธ๋ฆฌ๊ณ  ์‹ค์‹œ๊ฐ„ ํ”„๋กœํŒŒ์ผ ์ƒ์„ฑ๊ธฐ(์˜ˆ: Ruckig) ๋“ฑ์ด ํ˜ผ์žฌํ•˜์—ฌ ์‚ฌ์šฉ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ํŠน์„ฑ๊ณผ ํ•œ๊ณ„๋ฅผ ์งš์–ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ƒ˜ํ”Œ๋ง ๊ธฐ๋ฐ˜ ๊ธฐ๋ฒ• (์˜ˆ: RRT, BiRRT, OMPL ๋“ฑ): ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋กœ๋ด‡์˜ ๊ตฌ์„ฑ๊ณต๊ฐ„(C-space)์„ ๋ฌด์ž‘์œ„๋กœ ์ƒ˜ํ”Œ๋งํ•˜๋ฉฐ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ RRT (Rapidly-exploring Random Tree) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ „์—ญ์ ์ธ ๊ฒฝ๋กœ ํƒ์ƒ‰์— ๊ฐ•์ ์ด ์žˆ์–ด ์ข์€ ๊ณต๊ฐ„์—์„œ๋„ ํƒˆ์ถœ ๊ฒฝ๋กœ๋ฅผ ์ž˜ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒฝ๋กœ ํ’ˆ์งˆ์ด ๋“ค์ญ‰๋‚ ์ญ‰ํ•˜๊ณ , ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํ•œ๋ฒˆ ์ฐพ์€ ๊ฒฝ๋กœ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋‹ค๋“ฌ๋Š” ๋ณ„๋„ ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Tesseract ๋“ฑ์˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ RRT-Connect ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๊ธฐํ•˜ํ•™์  ํ”Œ๋ž˜๋„ˆ(geometric planner)๋กœ ์“ฐ๊ณ , ๊ฒฐ๊ณผ๋ฅผ TrajOpt ์ตœ์ ํ™”๋กœ ๋‹ค๋“ฌ๋Š” ์‹์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, cuRobo ๋˜ํ•œ cuRobo-GP๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ž์ฒด RRT ์œ ์‚ฌ ํ”Œ๋ž˜๋„ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ cuRobo-GP๋Š” GPU ๋ณ‘๋ ฌํ™”๋ฅผ ํ†ตํ•ด ํ•œ ๋ฒˆ์— ๋งŽ์€ ๋…ธ๋“œ ํ™•์žฅ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜ RRT๋ณด๋‹ค 100๋ฐฐ ์ด์ƒ ๋น ๋ฅด๊ฒŒ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ OMPL์˜ RRTConnect์™€ ๋น„๊ต ์‹œ ํ‰๊ท  101๋ฐฐ ์†๋„ ํ–ฅ์ƒ์„ ๋ณด์˜€๊ณ , ํŠนํžˆ ์–ด๋ ค์šด ๋ฌธ์ œ ๊ตฌ๊ฐ„์—์„  580๋ฐฐ๊นŒ์ง€๋„ ์†๋„ ์ฐจ๊ฐ€ ๋ฒŒ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Š” CPU ๊ธฐ๋ฐ˜ ์ƒ˜ํ”Œ๋ง ๊ธฐ๋ฒ•์ด ๊ฐ€์งˆ ์ˆ˜๋ฐ–์— ์—†๋Š” ์„ ํ˜• ์ฆ๊ฐ€(ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ ์ ์”ฉ ๊ฒ€์‚ฌ) ๊ณผ์ •์„, cuRobo๋Š” ๋ณ‘๋ ฌ ๊ทธ๋ž˜ํ”„ ํ™•์žฅ์œผ๋กœ ํš๊ธฐ์ ์œผ๋กœ ๋ฐ”๊พผ ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์ƒ˜ํ”Œ๋ง ๊ฒฝ๋กœ๋Š” ์ตœ์ ํ™”๋œ ๊ฒฝ๋กœ์— ๋น„ํ•ด ๊ธธ๊ณ  ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์–ด, cuRobo์—์„œ๋Š” ์ด ๊ฒฐ๊ณผ๋ฅผ ์ตœ์ข… ์†”๋ฃจ์…˜์œผ๋กœ ๋ฐ”๋กœ ์“ฐ๊ธฐ๋ณด๋‹ค๋Š” ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ดˆ๊ธฐ ์‹œ๋“œ๋กœ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜, ์ตœ์ ํ™”๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋Œ€๋น„์ฑ…์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ตœ์ ํ™” ๊ธฐ๋ฐ˜ ๊ธฐ๋ฒ• (์˜ˆ: CHOMP, TrajOpt ๋“ฑ): ์ดˆ๊ธฐ ๊ฒฝ๋กœ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ทธ ๊ฒฝ๋กœ๋ฅผ ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ํ•˜์—ฌ ์ถฉ๋Œ ์—†๊ณ  ๋งค๋„๋Ÿฌ์šด ๊ฒฝ๋กœ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋“ค์ž…๋‹ˆ๋‹ค. CHOMP(Covariant Hamiltonian Optimization for Motion Planning) ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฒฝ๋กœ๋ฅผ ์ˆ˜๋ฆฌ์ ์œผ๋กœ ๋ฏธ๋ถ„๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๋กœ ๋ณด๊ณ  ๊ฒฝ์‚ฌํ•˜๊ฐ•(gradient descent)์„ ํ†ตํ•ด ๋น„์šฉ์„ ์ค„์ด๋Š” ๋ฐฉ์‹์„ ์ตœ์ดˆ๋กœ ๋ณด์—ฌ์ค€ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ CHOMP๋Š” CPU ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋ณต์žกํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ˆ˜ ์ดˆ ์ด์ƒ์˜ ๊ณ„์‚ฐ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ณ , ์ง€์—ญ ์ตœ์ ํ•ด์— ๋น ์ง€๋ฉด ์‹คํŒจ์œจ์ด ๋†’๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ๋‚˜์˜จ TrajOpt(Trajectory Optimization)์€ CHOMP์™€ ๋น„์Šทํ•œ ๋ชฉ์ ์„ ๊ฐ–๋˜, ์ œ์•ฝ์กฐ๊ฑด์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์ด์ฐจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(QP) ํ’€์ด๋ฅผ ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค ์ˆ˜ํ–‰ํ•˜๋Š” Sequential Convex Optimization ์ ‘๊ทผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. TrajOpt๋Š” CHOMP๋ณด๋‹ค ์ˆ˜๋ ด์ด ๋น ๋ฅด๊ณ  ์ œ์•ฝ ๋‹ค๋ฃจ๊ธฐ๊ฐ€ ์‰ฌ์›Œ ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ์— ํ†ตํ•ฉ๋˜์—ˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ ์ถฉ๋Œ ์ฒดํฌ๋‚˜ ๋ณต์žกํ•œ ํ™˜๊ฒฝ์—์„œ์˜ ์ดˆ๊ธฐ๊ฐ’ ์˜์กด์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. cuRobo๋Š” TrajOpt๊ฐ€ Tesseract์— ํ†ตํ•ฉ๋œ ๋ฒ„์ „๊ณผ ์ง์ ‘ ๋น„๊ต ์‹คํ—˜์„ ํ–ˆ๋Š”๋ฐ, ํ‰๊ท  87๋ฐฐ ๋น ๋ฅด๊ณ , ์ตœ์•…์˜ ๊ฒฝ์šฐ 145๋ฐฐ๊นŒ์ง€ ๋น ๋ฅด๊ฒŒ ๊ฒฝ๋กœ ์ตœ์ ํ™”๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด TrajOpt๊ฐ€ 1.79์ดˆ ๊ฑธ๋ฆฌ๋˜ ๋ฌธ์ œ๋ฅผ cuRobo๋Š” ๋‹จ 0.01์ดˆ(10ms) ๋งŒ์— ํ’€์–ด๋‚ธ ์‚ฌ๋ก€๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ TrajOpt๋Š” ๊ฐ ๋ฌธ์ œ๋ฅผ ๋‹จ์ผ ์‹œ๋“œ๋กœ ํ’€๊ธฐ์— ์‹คํŒจํ•˜๋ฉด ๋‹ค๋ฅธ ์‹œ๋“œ๋กœ ์žฌ์‹œ์ž‘ํ•ด์•ผ ํ•˜์ง€๋งŒ, cuRobo๋Š” ์• ์ดˆ์— ๋‹ค์ค‘ ์‹œ๋“œ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹œ๋„ํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์„ฑ๊ณต ํ™•๋ฅ ์„ ๋†’์ด๋ฏ€๋กœ ๋ฐ˜๋ณต ์žฌ์‹œ๋„ ํšŸ์ˆ˜๋„ ์ ์Šต๋‹ˆ๋‹คใ€‘. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ „์ฒด ๋ชจ์…˜ ํ”Œ๋ž˜๋‹ ํŒŒ์ดํ”„๋ผ์ธ**์œผ๋กœ ๋ณด๋ฉด cuRobo๊ฐ€ TrajOpt ๊ธฐ๋ฐ˜ ํ”Œ๋ž˜๋„ˆ๋ณด๋‹ค ํ›จ์”ฌ ๊ฒฌ๊ณ ํ•˜๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค (์‹คํ—˜์—์„œ TrajOpt+RRT ๋ฐฉ์‹์„ 60์ดˆ๊นŒ์ง€ ๋ฐ˜๋ณต ์žฌ์‹œ๋„ํ•˜๊ฒŒ ํ–ˆ์Œ์—๋„ cuRobo๋ณด๋‹ค ์„ฑ๊ณต๋ฅ ๊ณผ ํ’ˆ์งˆ์ด ๋‚ฎ์•˜์Šต๋‹ˆ๋‹ค).

  • ์‹ค์‹œ๊ฐ„ ์†๋„ ํ”„๋กœํŒŒ์ผ๋Ÿฌ (์˜ˆ: Ruckig): ํ•œํŽธ, Ruckig ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฐ์—… ํ˜„์žฅ์—์„œ ๊ฐ๊ด‘๋ฐ›๋Š” ์‹ค์‹œ๊ฐ„ ๋ชจ์…˜ ํ”„๋กœํŒŒ์ผ ์ƒ์„ฑ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒฝ๋กœ ์ž์ฒด๋ฅผ ์ฐพ๊ธฐ๋ณด๋‹ค๋Š”, ์ด๋ฏธ ์ •ํ•ด์ง„ ๊ฒฝ๋กœ(๋˜๋Š” ๋‹จ์ˆœํžˆ ์‹œ์ž‘-๋ชฉํ‘œ ๋‘ ์  ์‚ฌ์ด)๋ฅผ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ/๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ด๋™ํ• ์ง€ ์†๋„-๊ฐ€์†๋„-์ €ํฌ ํ•œ๊ณ„ ๋‚ด ์ตœ์  ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. Ruckig๋Š” ์ž…๋ ฅ์œผ๋กœ ์‹œ์ž‘ ์ƒํƒœ(์œ„์น˜,์†๋„,๊ฐ€์†๋„)์™€ ๋ชฉํ‘œ ์ƒํƒœ(์œ„์น˜,์†๋„,๊ฐ€์†๋„)๋ฅผ ์ฃผ๋ฉด, ์ด๋™ ์‹œ๊ฐ„ ์ตœ์†Œํ™”๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉด์„œ๋„ ์ง€์ •๋œ ์ตœ๋Œ€ ๊ฐ€์†/์ €ํฌ ์ œ์•ฝ์„ ๋งŒ์กฑํ•˜๋Š” ์†๋„ ํ”„๋กœํŒŒ์ผ์„ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค. cuRobo์™€ Ruckig๋ฅผ ์ง์ ‘ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์• ํ”Œ-์˜ค๋ Œ์ง€ ๊ฒฉ์ด์ง€๋งŒ, โ€œjerk ์ œํ•œโ€์„ ๋‹ค๋ฃฌ๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ์–ด ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Ruckig์˜ ์žฅ์ ์€ ๋งˆ์ดํฌ๋กœ์ดˆ ๋‹จ์œ„์˜ ๋น ๋ฅธ ๊ณ„์‚ฐ์œผ๋กœ ๋กœ๋ด‡ ์ œ์–ด ๋ฃจํ”„์— ๋ฐ”๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด์ง€๋งŒ, ๊ฒฝ๋กœ ์ƒ์˜ ์žฅ์• ๋ฌผ์€ ์ „ํ˜€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ ์ž์ฒด๊ฐ€ ์ถฉ๋Œ ์—†๋Š” ๊ฒƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. cuRobo๋Š” ํ›จ์”ฌ ๋ณต์žกํ•œ ๋ฌธ์ œ(๊ฒฝ๋กœ ํƒ์ƒ‰+์†๋„ ํ”„๋กœํŒŒ์ผ ๋™์‹œ ๊ฒฐ์ •)๋ฅผ ๋‹ค๋ฃจ๋ฏ€๋กœ ์‹œ๊ฐ„์€ ์•ฝ๊ฐ„ ๋” ๋“ค์ง€๋งŒ, ๊ทธ ๋Œ€์‹  ์žฅ์• ๋ฌผ ํšŒํ”ผ๋ฅผ ํฌํ•จํ•œ ์ „์—ญ ๊ณ„ํš์„ ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” Ruckig๊ฐ€ ๋‹ค๋ฃฐ ์ˆ˜ ์—†๋Š” ์ค‘๊ฐ„ ๊ฒฝ์œ ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ(waypoints ์‹œ๋‚˜๋ฆฌ์˜ค)์— ๋Œ€ํ•ด ํ‰๊ฐ€ํ•˜๋ ค ํ–ˆ์œผ๋‚˜, Ruckig ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ๊ณต๊ฐœ ๋ผ์ด์„ ์Šค๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์–ด๋ ค์›Œ ๋น„๊ตํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ ๋„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Ruckig๊ฐ€ ์ฃผ๋กœ 1ํšŒ ๊ตฌ๊ฐ„(point-to-point) ๋ชจ์…˜์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๊ตฌ๊ฐ„์„ ์ž‡๋Š” ๊ฒƒ์€ ์ œํ•œ์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์š”์•ฝํ•˜๋ฉด, Ruckig = ๋™์  ์ œ์•ฝ์„ ๋งŒ์กฑํ•˜๋Š” ์„ธ๋ถ€ ํ”„๋กœํŒŒ์ผ๋Ÿฌ, cuRobo = ์ „์—ญ ๊ฒฝ๋กœ+ํ”„๋กœํŒŒ์ผ ํ†ตํ•ฉ ์†”๋ฃจ์…˜์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์ ์šฉ์—์„œ๋Š”, cuRobo๋กœ ํฐ ๊ทธ๋ฆผ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์€ ๋’ค Ruckig๋กœ ๋งˆ์ง€๋ง‰ ๋ฏธ์„ธ์กฐ์ •์„ ํ•˜๋Š” ์กฐํ•ฉ๋„ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ์œผ๋‚˜, cuRobo ์ž์ฒด๋„ jerk ์ตœ์ ํ™”๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ ๋ณ„๋„ ์กฐ์ • ์—†์ด ๋ฐ”๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์˜ ๊ฒฐ๊ณผ๋ฅผ ์ค๋‹ˆ๋‹ค.

  • ์ถฉ๋Œ ๊ฒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์˜ˆ: FCL ๋“ฑ): ๋กœ๋ด‡ ๊ฒฝ๋กœ ๊ณ„ํš์˜ ํ•œ ์ถ•์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์ถฉ๋Œ ๊ฒ€์‚ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ FCL์€ ๋„๋ฆฌ ์“ฐ์ด๋Š” ์ถฉ๋Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋กœ๋ด‡์˜ ๋งํฌ์™€ ์žฅ์• ๋ฌผ์˜ ๋ฉ”์‹œ ํ˜•์ƒ ๊ฐ„ ์ตœ๊ทผ์ ‘ ๊ฑฐ๋ฆฌ๋‚˜ ์ถฉ๋Œ ์—ฌ๋ถ€๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณต์žกํ•œ ์žฅ๋ฉด์—์„œ๋Š” ์ˆ˜์ฒœ - ์ˆ˜๋งŒ ์Œ์˜ ์‚ผ๊ฐํ˜• ๊ฐ„ ์ถฉ๋Œ์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ GPU ์—†์ด CPU ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ๋Š” ์‹œ๊ฐ„์ด ๊ฝค ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. cuRobo๋Š” FCL ๋Œ€์‹  ์ž์ฒด GPU ์ถฉ๋Œ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋กœ๋ด‡-ํ™˜๊ฒฝ ์ƒํ˜ธ์ž‘์šฉ์„ ์ˆ˜ํ•™์  ํ•จ์ˆ˜(๊ฑฐ๋ฆฌ ํ•จ์ˆ˜) ํ˜•ํƒœ์˜ ๋น„์šฉ์œผ๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋กœ ๊ทผ์‚ฌํ•œ ๋กœ๋ด‡ ๋ชจ๋ธ ๋•๋ถ„์— ์—ฐ์† ์ถฉ๋Œ ๋น„์šฉ์˜ ๊ทธ๋ž˜๋””์–ธํŠธ๊นŒ์ง€ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์ ์€ ๊ธฐ์กด ์ถฉ๋Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์ด์ง„ ์ถฉ๋Œ ์—ฌ๋ถ€๋งŒ ์ฒดํฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋Œ€์กฐ์ ์ž…๋‹ˆ๋‹ค. ๋•๋ถ„์— cuRobo์˜ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ถฉ๋Œ ํšŒํ”ผ ๊ทธ๋ž˜๋””์–ธํŠธ๋ฅผ ๋”ฐ๋ผ ๊ฒฝ๋กœ๋ฅผ ๋ฐ€์–ด๋‚ผ ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” CHOMP ๋“ฑ์˜ ์ฒ ํ•™๊ณผ ์œ ์‚ฌํ•˜๋‚˜ ํ›จ์”ฌ ๋ณ‘๋ ฌํ™”๋˜์–ด ๋นจ๋ผ์ง„ ํ˜•ํƒœ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ cuRobo์˜ ์ถฉ๋Œ ๊ฒ€์‚ฌ๋Š” ๋™์ผํ•œ ์ƒํ™ฉ์—์„œ ๊ธฐ์กด PyBullet ์ถฉ๋Œ ์ฒดํฌ๋ณด๋‹ค ์ตœ๋Œ€ 16000๋ฐฐ ๋น ๋ฅด๋ฉฐ, ์ˆ˜๋งŒ ๊ฐœ์˜ ํ›„๋ณด ์ž์„ธ๋ฅผ ๋™์‹œ์— ํ‰๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์–ด ํ–ฅํ›„ ํ•™์Šต๊ธฐ๋ฐ˜ ๋ชจ์…˜ ์ƒ์„ฑ์ด๋‚˜ ๋ชฌํ…Œ์นด๋ฅผ๋กœ ํŠธ๋ฆฌ ํƒ์ƒ‰ ๋“ฑ์—์„œ ์ถฉ๋Œ ์ฒดํฌ ๋ณ‘๋ชฉ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข…ํ•ฉํ•˜๋ฉด, cuRobo๋Š” ๊ธฐ์กด ๋ฐฉ๋ฒ•๋“ค์˜ ์žฅ์ ์„ ํก์ˆ˜ํ•˜๋˜ ๋‹จ์ ์€ ๊ณผ๊ฐํžˆ ๊ทน๋ณตํ•œ ์ฐจ์„ธ๋Œ€ ์ ‘๊ทผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ๋ง ๊ธฐ๋ฒ•์˜ ์ „์—ญ ํƒ์ƒ‰ ๋Šฅ๋ ฅ์„ ๋„์ž…ํ•˜๋˜ ๋ณ‘๋ ฌํ™”๋กœ ์†๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๊ณ , ์ตœ์ ํ™” ๊ธฐ๋ฒ•์˜ ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝ๋กœ ์ƒ์„ฑ ๋Šฅ๋ ฅ์„ ๋ฐœ์ „์‹œ์ผœ ์ €ํฌ๊นŒ์ง€ ์ตœ์†Œํ™”ํ–ˆ์œผ๋ฉฐ, ์‹ค์‹œ๊ฐ„ ํ”„๋กœํŒŒ์ผ๋Ÿฌ ์ˆ˜์ค€์˜ ์†๋„ ์ œ์•ฝ ๋งŒ์กฑ ๋Šฅ๋ ฅ์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋‘๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•œ ๊ฒƒ์ด ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ํ™œ์šฉ์ด๋ผ๋Š” ์ ์—์„œ, cuRobo๋Š” ๋กœ๋ด‡ ๋ชจ์…˜ ๊ณ„ํš์— ๋ณ‘๋ ฌํ™” ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ด์‹ํ•œ ์‚ฌ๋ก€๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

2.7 ์ฃผ์š” ์‹คํ—˜ ๊ฒฐ๊ณผ ๋ฐ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

cuRobo ๋…ผ๋ฌธ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ์˜ ์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ๊ทธ ์œ ์šฉํ•œ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋“ค์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. MotionBenchMaker๋ผ๋Š” ๋ฒค์น˜๋งˆํฌ ๋ฐ์ดํ„ฐ์…‹์„ ํ™œ์šฉํ•œ ์‹คํ—˜์—์„œ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ณต์žกํ•œ ์žฅ๋ฉด(scene)๋“ค์ด ์‹œํ—˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜‘์†Œํ•œ cage ์•ˆ์—์„œ ํŒ” ๋ป—๊ธฐ, ์„ ๋ฐ˜(shelf) ์‚ฌ์ด๋กœ ๋ฌผ์ฒด ์ง‘๊ธฐ, ํ…Œ์ด๋ธ” ์ฃผ์œ„๋กœ ๋ฌผ์ฒด ์˜ฎ๊ธฐ๊ธฐ ๋“ฑ, ์‚ฐ์—… ๋ฐ ์„œ๋น„์Šค ๋กœ๋ด‡์—์„œ ํ”ํžˆ ๋งˆ์ฃผ์น˜๋Š” ์ƒํ™ฉ๋“ค์ด ํฌํ•จ๋˜์—ˆ์ฃ . ์ด๋Ÿฌํ•œ 12๊ฐ€์ง€ ์œ ํ˜•์˜ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด Franka Panda ๋กœ๋ด‡์ด ์ถฉ๋Œ ์—†์ด ๋ชฉํ‘œ ์œ„์น˜๋กœ ํŒ”์„ ์›€์ง์ด๋Š” ๋ฌธ์ œ๋“ค์ด ์ƒ์„ฑ๋˜์—ˆ๊ณ , cuRobo๋Š” ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ ๊ณ ๋ฅด๊ฒŒ ๋†’์€ ์„ฑ๊ณต๋ฅ ๊ณผ ๋น ๋ฅธ ๊ณ„ํš ์‹œ๊ฐ„์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ๋ณต์žกํ•œ ์žฅ์• ๋ฌผ ๋ฐ€์ง‘ ํ™˜๊ฒฝ์—์„œ cuRobo์˜ ๊ฐ•์ ์ด ๋‘๋“œ๋Ÿฌ์กŒ๋Š”๋ฐ, ์ด๋Š” ๋ณ‘๋ ฌ ๋‹ค์ค‘ ์‹œ๋“œ ์ ‘๊ทผ ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด โ€œ๊ณตโ€ ๋ชจ์–‘ ์žฅ์• ๋ฌผ์ด ๊ฐ€๋“ํ•œ 3์ฐจ์› ๊ณต๊ฐ„์ด๋‚˜ ๋ฏธ๋กœ ํ˜•ํƒœ์˜ ์žฅ๋ฒฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ „ํ†ต์  ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์€ ์ดˆ๊ธฐ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ์‰ฝ๊ฒŒ ์ถฉ๋Œ ์ง€์—ญ์—์„œ ๋ชป ๋น ์ ธ๋‚˜์˜ค๊ณ  ์‹คํŒจํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, cuRobo๋Š” ์ˆ˜์‹ญ ๊ฐœ์˜ ๊ฒฝ๋กœ๋ฅผ ๋™์‹œ์— ์‹œ๋„ํ•˜๋ฉด์„œ ํ•˜๋‚˜๋ผ๋„ ๋šซ๋ฆฌ๋ฉด ๊ณง๋ฐ”๋กœ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฐพ์€ ๊ฒฝ๋กœ๋Š” ๋‹ค์‹œ ์ตœ์ ํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ๋”์šฑ ๋‹ค๋“ฌ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์ฒ˜์Œ์—๋Š” ๊ตฌ๋ถˆ๊ตฌ๋ถˆํ•˜๋˜ ์ƒ˜ํ”Œ๋ง ๊ฒฝ๋กœ๊ฐ€ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งค์šฐ ๋งค๋„๋Ÿฝ๊ณ  ์งง์€ ๊ฒฝ๋กœ๋กœ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.

๋˜ ํ•˜๋‚˜์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์ค‘ ๋ชฉํ‘œ ์ˆœ์ฐจ ๋‹ฌ์„ฑ(Task Sequencing) ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์‚ฐ์—…ํ˜„์žฅ์—์„œ ๋กœ๋ด‡์€ ์ข…์ข… ์—ฌ๋Ÿฌ ์ง€์ ์„ ์ˆœ์„œ ์—†์ด ์ฃผ์–ด์ง€๊ณ  ์ตœ์  ๊ฒฝ๋กœ๋กœ ์ˆœํšŒํ•ด์•ผ ํ•˜๋Š”๋ฐ, cuRobo๋Š” ๊ทธ๋Ÿฐ ๋ฌธ์ œ์˜ ๋ถ€๋ถ„ ๊ฒฝ๋กœ(point-to-point)๋“ค์„ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ปจ๋Œ€ 10๊ฐœ์˜ ํ”ฝ์—… ํฌ์ธํŠธ๋ฅผ ์ตœ์  ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ, ๊ธฐ์กด์—๋Š” ๊ฐ ๊ตฌ๊ฐ„ ๊ฒฝ๋กœ๋ฅผ ๋А๋ฆฐ ๋ชจ์…˜ ํ”Œ๋ž˜๋„ˆ๋กœ ํ’€์–ด์•ผ ํ–ˆ์ง€๋งŒ, cuRobo๋ฅผ ์“ฐ๋ฉด ๋ชจ๋“  ๊ตฌ๊ฐ„ ๊ฒฝ๋กœ ๋น„์šฉ์„ ์‹ ์†ํžˆ ๊ณ„์‚ฐํ•ด๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ์ตœ์  ์ˆœ์„œ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ˆ˜์›”ํ•ด์ง‘๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋„ ์ด๋Ÿฌํ•œ ์ž‘์—… ์Šค์ผ€์ค„๋ง์ด๋‚˜ ๊ฒฝ๋กœ ์ตœ์ ํ™”(์˜ˆ: Traveling Salesman Problem ๋ณ€ํ˜•)์— cuRobo๊ฐ€ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Œ์„ ์ œ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„ ์‹ค์‹œ๊ฐ„ ์ œ์–ด ์ชฝ ํ™œ์šฉ์œผ๋กœ๋Š”, ์„ผ์„œ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•œ ๋™์  ์žฌ๊ณ„ํš์—์˜ ์‘์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ํ˜„์žฌ cuRobo ์ž์ฒด๋Š” ๋ถ€๋ถ„ ๊ด€์ฐฐ ๋ฌธ์ œ(์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๋€Œ๋Š” ํ™˜๊ฒฝ ์ธ์‹)์— ๋Œ€์‘ํ•˜๋Š” ๋กœ์ง์€ ์—†์ง€๋งŒ, ๊ทธ ๊ณ ์†์„ฑ ๋•๋ถ„์— ์„ผ์„œ๋กœ ์ƒˆ๋กœ์šด ์žฅ์• ๋ฌผ์„ ๊ฐ์ง€ํ•  ๋•Œ๋งˆ๋‹ค ๋น ๋ฅด๊ฒŒ ์žฌ๊ณ„ํš์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ˜์‘ํ˜• ํšŒํ”ผ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๋ด‡ ํŒ” ์ž‘์—… ์ค‘ ์‚ฌ๋žŒ์ด ์†์„ ๋„ฃ๋Š” ๋“ฑ ๋Œ๋ฐœ ์ƒํ™ฉ์ด ์ƒ๊ธฐ๋ฉด, cuRobo๋กœ 50ms ๋‚ด ์ƒˆ ์•ˆ์ „ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„ ์ฆ‰๊ฐ ๋กœ๋ด‡ ์›€์ง์ž„์„ ์ˆ˜์ •ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™„์ „ํ•œ Reactive Planning์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ์ „ํžˆ ํ•™์ˆ ์ ์œผ๋กœ ๋„์ „์ด ๋‚จ์•„์žˆ์ง€๋งŒ (cuRobo๋„ 98% ๋‚œ์ด๋„ ์ผ€์ด์Šค๊ฐ€ 0.26์ดˆ ๊ฑธ๋ ธ๋“ฏ ์ตœ์•… ๊ฒฝ์šฐ ์ˆ˜๋ฐฑ ms - 1์ดˆ ์ˆ˜์ค€๊นŒ์ง€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์—„๊ฒฉํ•œ ์‹ค์‹œ๊ฐ„ ๊ณ ์ •์ฃผ๊ธฐ์—๋Š” ์ถ”๊ฐ€ ์—ฐ๊ตฌ ํ•„์š”), ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ํ•˜์—ฌ ํ–ฅํ›„ ์ˆ˜ ๋ฐ€๋ฆฌ์ดˆ ๋‚ด ๊ฒฝ๋กœ ์—…๋ฐ์ดํŠธ๋„ ๊ฟˆ๊ฟ”๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฐ–์— cuRobo์˜ ๋ณ‘๋ ฌ IK๋Š” ๋กœ๋ด‡ ๊ฐ€์‹œ์„ฑ ์˜์—ญ ๋ถ„์„ ๋“ฑ์— ๋ฐ”๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” 3D ๊ณต๊ฐ„ ๊ฒฉ์ž์ƒ์˜ ์ž„์˜ ์ž์„ธ 500๊ฐœ์— ๋Œ€ํ•ด cuRobo IK๋ฅผ ๋ณ‘๋ ฌ ์‹คํ–‰ํ•˜์—ฌ, ํ•ด๋‹น ์ž์„ธ์— ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€(์ดˆ๋ก์ƒ‰/๋นจ๊ฐ„์ƒ‰ ๊ตฌ์ฒด๋กœ ํ‘œ์‹œ)๋ฅผ 15Hz๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๋ด‡์˜ ์ž‘์—…๋ฒ”์œ„๋‚˜ ํŠน์ • ์œ„์น˜ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ cuRobo์˜ ๋น ๋ฅธ ์ถฉ๋Œ IK๋Š” ๊ธฐ์กด์— ์ˆ˜ ์ดˆ ๊ฑธ๋ฆฌ๋˜ ์ƒ˜ํ”Œ ๊ธฐ๋ฐ˜ ์ถฉ๋ŒํšŒํ”ผ IK๋ฅผ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๊ฐ€์†ํ•˜์˜€๊ธฐ์—, ์•ž์œผ๋กœ ๋‹ค๊ด€์ ˆ ๋กœ๋ด‡์˜ ์ž์„ธ ์ œ์•ฝ ๋ฌธ์ œ(์˜ˆ: ๋™์‹œ์— ์—ฌ๋Ÿฌ ๋กœ๋ด‡ ๋ฐฐ์น˜ ์ตœ์ ํ™”) ๋“ฑ์—๋„ ์ ์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, cuRobo๊ฐ€ ์—ฌ๋Ÿฌ ๋กœ๋ด‡ ํ”Œ๋žซํผ์— ์ด์‹๋œ ์‚ฌ๋ก€๋„ ์†Œ๊ฐœ๋ฉ๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์ง„์€ cuRobo๋ฅผ Franka, UR ๋“ฑ ์™ธ์—๋„ Nvidia Isaac ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ƒ์˜ Kinova Jaco ๋กœ๋ด‡ํŒ”, Allegro ์† ๋“ฑ์—๋„ ์ ์šฉํ•ด๋ณด์•˜๊ณ , ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋กœ๋ด‡ ๊ธฐ๊ตฌํ•™๋งŒ ๋งž์ถฐ์ฃผ๋ฉด ๊ณตํ†ต์œผ๋กœ ๋™์ž‘ํ•จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ๋กœ๋ด‡์— ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์†”๋ฃจ์…˜์ด ์•„๋‹ˆ๋ฉฐ, ๋ฒ”์šฉ ๋กœ๋ด‡ ๋ชจ์…˜ ๊ณ„ํš ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

2.8 ๊ฒฐ๋ก : cuRobo์˜ ์žฅ์ ๊ณผ ํ•œ๊ณ„, ํ–ฅํ›„ ๋ฐœ์ „ ๋ฐฉํ–ฅ

cuRobo๋Š” ๋กœ๋ด‡ ๋ชจ์…˜ ์ƒ์„ฑ ๋ฌธ์ œ์— ๋ณ‘๋ ฌํ™”์™€ GPU ๊ฐ€์†์ด๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ๋ฌด๊ธฐ๋ฅผ ๋„์ž…ํ•จ์œผ๋กœ์จ, ์†๋„, ์„ฑ๊ณต๋ฅ , ๊ฒฝ๋กœ ํ’ˆ์งˆ ๋ชจ๋“  ๋ฉด์—์„œ ์ƒˆ๋กœ์šด ํ‘œ์ค€์„ ์ œ์‹œํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์š”์•ฝํ•˜๋ฉด, cuRobo์˜ ์ฃผ์š” ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ํš๊ธฐ์ ์ธ ์†๋„: ๋ณต์žกํ•œ ์ถฉ๋ŒํšŒํ”ผ ๊ฒฝ๋กœ๋„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„์— ์ฐพ์•„๋‚ด๋ฉฐ, ๊ธฐ์กด SOTA ๋ฐฉ๋ฒ• ๋Œ€๋น„ ์ˆ˜์‹ญ ๋ฐฐ - ์ˆ˜๋ฐฑ ๋ฐฐ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๊ณ ๋นˆ๋„ ์žฌ๊ณ„ํš์— ํ•„์ˆ˜์ ์ธ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋†’์€ ์‹ ๋ขฐ๋„: ๋‹ค์ค‘ ์‹œ๋“œ ๋ณ‘๋ ฌ ์ตœ์ ํ™” ๋•๋ถ„์— ์‚ฌ์‹ค์ƒ 100%์— ๊ทผ์ ‘ํ•˜๋Š” ์„ฑ๊ณต๋ฅ ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ์ง€์—ญํ•ด ๋ฌธ์ œ๋ฅผ ํฌ๊ฒŒ ์™„ํ™”ํ•˜์—ฌ, ๊นŒ๋‹ค๋กœ์šด ํ™˜๊ฒฝ์—์„œ๋„ ์ธ๊ฐ„ ์ˆ˜์ค€์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ๊ฒฝ๋กœ๋ฅผ ๊ฒฌ์ฃผ์–ด ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ๋ถ€๋“œ๋Ÿฝ๊ณ  ์•ˆ์ „ํ•œ ๊ฒฝ๋กœ: ๊ฐ€์†๋„-์ €ํฌ ์ตœ์†Œํ™”๋ฅผ ํ†ตํ•ด ๋กœ๋ด‡์ด ์‹คํ–‰ํ•˜๊ธฐ์— ๋งค์šฐ ๋งค๋„๋Ÿฌ์šด ์›€์ง์ž„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๋ด‡ ๊ด€์ ˆ์˜ ๊ธฐ๊ณ„์  ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์ค„์ด๊ณ , ๊ณ ์†๋™์ž‘ ์‹œ์—๋„ ์ง„๋™์ด๋‚˜ ์˜ค์ฐจ๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๊ฒฐ๊ตญ ์ž‘์—… ํ’ˆ์งˆ๊ณผ ๋กœ๋ด‡ ์ˆ˜๋ช… ํ–ฅ์ƒ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆํ™”์™€ ํ™•์žฅ์„ฑ: IK, ๊ธฐํ•˜ํ•™ ํ”Œ๋ž˜๋„ˆ, ์ตœ์ ํ™” ๋ชจ๋“ˆ ๋“ฑ ๊ตฌ์„ฑ์š”์†Œ๋ณ„ ๋ชจ๋“ˆํ™”๋กœ ํ•„์š”์— ๋”ฐ๋ผ ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์—ฐ๊ตฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ฐธ์—ฌ์™€ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋กœ๋ด‡์— ์‰ฝ๊ฒŒ ์ด์‹ ๊ฐ€๋Šฅํ•˜๋ฉฐ, MoveIt ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ ๊ธฐ์กด ์‹œ์Šคํ…œ๊ณผ ์—ฐ๊ณ„๋„ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
  • ์ž„๋ฒ ๋””๋“œ ์นœํ™”์„ฑ: GPU๊ฐ€ ํ•„์š”ํ•˜๊ธด ํ•˜์ง€๋งŒ, Jetson๊ณผ ๊ฐ™์€ ์ž„๋ฒ ๋””๋“œ ํ”Œ๋žซํผ์—์„œ๋„ ๊ตฌ๋™๋  ๋งŒํผ ๊ฒฝ๋Ÿ‰ ์ตœ์ ํ™”๊ฐ€ ๋˜์–ด ์žˆ์–ด, ํ˜„์žฅ ๋กœ๋ด‡์— ์ง์ ‘ ํƒ‘์žฌํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด, ํ•œ๊ณ„ ๋ฐ ํ–ฅํ›„ ๊ณผ์ œ๋กœ ์ง€์ ๋˜๋Š” ๋ถ€๋ถ„๋„ ๋ช‡ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋™์ /๋ฐ˜์‘ํ˜• ๊ณ„ํš์˜ ํ•œ๊ณ„: ํ˜„์žฌ cuRobo๋Š” ์ •์ง€๋œ ์ƒํƒœ์˜ ๋กœ๋ด‡์ด ์ •์ ์ธ ํ™˜๊ฒฝ์—์„œ ๋ชฉํ‘œ๊นŒ์ง€ ๊ฐ€๋Š” ์™„์ „ํ•œ ๋ชจ์…˜์„ ๊ณ„ํšํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋กœ๋ด‡์ด ์›€์ง์ด๋Š” ์ค‘๊ฐ„์— ์ƒˆ๋กœ์šด ์žฅ์• ๋ฌผ์ด ๋‚˜ํƒ€๋‚˜๊ฑฐ๋‚˜ ๋ชฉํ‘œ๊ฐ€ ๋ณ€ํ•œ๋‹ค๋ฉด, ์ด๋ฅผ ์ง€์†์ ์œผ๋กœ ์žฌ๊ณ„ํšํ•˜๋Š” ๊ธฐ๋Šฅ(reactive planning)์€ ์•„์ง ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ตœ์•… ๊ฒฝ์šฐ ์ˆ˜๋ฐฑ ms ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด, ํ•˜๋“œ ์‹ค์‹œ๊ฐ„ ์ œ์–ด ์ฃผ๊ธฐ(์˜ˆ: 1kHz)์—๋Š” ์ถ”๊ฐ€ ์—ฐ๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ์ž‘์—… ์ œ์•ฝ: cuRobo๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ง๋‹จ-ํฌ์ฆˆ ๋„๋‹ฌ ๋ฌธ์ œ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๊ฐ„์— ๋„๊ตฌ์˜ ์ž์„ธ๋ฅผ ์œ ์ง€ํ•œ๋‹ค๊ฑฐ๋‚˜ ํŠน์ • ๊ฒฝ๋กœ ์ œ์•ฝ(์˜ˆ: ์ปต์„ ๊ธฐ์šธ์ด์ง€ ์•Š๊ฒŒ ์šด๋ฐ˜) ๋“ฑ์˜ ๊ณผ์—… ์ œ์•ฝ์ด ์žˆ๋Š” ๊ฒฝ๋กœ ๊ณ„ํš์— ๋Œ€ํ•ด์„œ๋Š” ์•„์ง ์ผ๋ฐ˜์ ์ธ ํ•ด๋ฒ•์„ ํ†ตํ•ฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ Orientation constraint ๋“ฑ์„ ํฐ ๊ฐ€์ค‘์น˜๋กœ ๋„ฃ๋Š” ์‹คํ—˜์€ ํ•ด๋ณด์•˜์œผ๋‚˜, ์ด๋ฅผ ์—„๋ฐ€ํ•˜๊ฒŒ ๋‹ค๋ฃจ๋Š” ์ „์šฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: ์ œ์•ฝ๋œ ํƒ์ƒ‰๊ณต๊ฐ„์—์„œ์˜ RRT ๋“ฑ)์€ ํ–ฅํ›„ ๊ณผ์ œ๋กœ ๋‚จ๊ฒจ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋™์—ญํ•™ ๋ฐ ์ ‘์ด‰ ๊ณ ๋ ค ๋ถ€์กฑ: ํ˜„์žฌ ๋น„์šฉ ํ•จ์ˆ˜๋Š” ๋กœ๋ด‡์˜ ๊ธฐ๊ตฌํ•™์  ์›€์ง์ž„(๊ด€์ ˆ ์œ„์น˜/์†๋„/๊ฐ€์†๋„)์— ๊ด€ํ•œ ํ•ญ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌผ์ฒด๋ฅผ ๋ฐ€๊ฑฐ๋‚˜ ์žก๋Š” ๋“ฑ ์ ‘์ด‰์ด ์žˆ๋Š” ๊ณ„ํš, ํ˜น์€ ํ† ํฌ ์ตœ์ ํ™”๋‚˜ ์—๋„ˆ์ง€ ์ตœ์ ํ™” ๊ฐ™์€ ๋™์  ์š”์†Œ๋Š” ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ๋‹ค๋ฃจ๋ ค๋ฉด ๋กœ๋ด‡์˜ ๋™์—ญํ•™ ๋ชจ๋ธ๊นŒ์ง€ ํฌํ•จํ•œ ์ตœ์ ํ™”(์˜ˆ: ํ† ํฌ ์ตœ์†Œํ™”, ์ž„ํ”ผ๋˜์Šค ์ตœ์ ํ™” ๋“ฑ)๋‚˜ contact-implicit trajectory optimization ๊ธฐ๋ฒ•์„ ์ ‘๋ชฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์—ฐ๊ตฌ์ ์œผ๋กœ ๋‚œ์ด๋„๊ฐ€ ๋†’์ง€๋งŒ ํ–ฅํ›„ ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ์œผ๋กœ ์ œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ€๋ถ„์ ์ธ ํ™˜๊ฒฝ ์ธ์‹: cuRobo๋Š” ํ™˜๊ฒฝ ๋ชจ๋ธ์ด ์™„์ „ํžˆ ์ฃผ์–ด์ ธ ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ผ์„œ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™˜๊ฒฝ ์ง€๋„๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ๋ณด์ด์ง€ ์•Š๋Š” ์˜์—ญ์˜ ์žฅ์• ๋ฌผ์„ ์ถ”์ •ํ•˜๋Š” ๋“ฑ์˜ ํผ์…‰์…˜ ๋ถˆํ™•์‹ค์„ฑ ํ•˜์—์„œ๋Š” ๋ณ„๋„์˜ ๋Œ€์ฑ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” ํ•™์Šต ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฏธ์ง€ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ถฉ๋Œ ๋น„์šฉ์ถ”์ •์„ ํ†ตํ•ฉํ•˜๋Š” ๋“ฑ ์•„์ด๋””์–ด๋ฅผ ์ œ์‹œํ•˜์ง€๋งŒ, ์•„์ง ๊ตฌํ˜„๋œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ์ „๋ฌธ ์ง€์‹ ์š”๊ตฌ: ๋น„๋ก ์˜คํ”ˆ์†Œ์Šค๋กœ ์ œ๊ณต๋˜์ง€๋งŒ, cuRobo์˜ ์ตœ์  ์„ฑ๋Šฅ์„ ๋Œ์–ด๋‚ด๊ฑฐ๋‚˜ ๋‚ด๋ถ€๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด GPU ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์ˆ˜์น˜ ์ตœ์ ํ™” ๋“ฑ ์ƒ๋‹นํ•œ ์ „๋ฌธ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ์™ธ๋ถ€ ์—ฐ๊ตฌ์ž๋“ค์ด ๊ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด๋‘์—ˆ๊ณ , ์‹ค์ œ๋กœ ํ•™๊ณ„ ๋‹ค๋ฅธ ์—ฐ๊ตฌ์ž๋“ค์ด cuRobo ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•ด ๋กœ๋ด‡ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ „์šฉ ์†”๋ฒ„๋ฅผ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜, ํ•˜๋“œ ์ œ์•ฝ์„ ์ง์ ‘ ํ’€์–ด๋‚ด๋Š” ๊ธฐ๋ฒ•์„ ์ ‘๋ชฉํ•˜๋Š” ๋“ฑ์˜ ์‹œ๋„๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํ˜‘์—…์„ ํ†ตํ•ด ์ ์ฐจ ์ง„์ž…์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”๊ณ  ํ™œ์šฉ์„ฑ์„ ๋†’์—ฌ๊ฐ€๋Š” ๊ฒƒ์ด ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ, cuRobo๋Š” ๋กœ๋ด‡ ๋ชจ์…˜ ๊ณ„ํš ๋ถ„์•ผ์— ์ƒˆ๋กœ์šด ์†๋„์™€ ํ’ˆ์งˆ์˜ ์ง€ํ‰์„ ์—ฐ ๋งค์šฐ ์ธ์ƒ์ ์ธ ์—ฐ๊ตฌๆˆๆžœ์ž…๋‹ˆ๋‹ค. GPU ๋ณ‘๋ ฌํ™”์˜ ์ด์ ์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ, ์ด์ „๊นŒ์ง€ ์ˆ˜ ์ดˆ ๊ฑธ๋ฆฌ๋˜ ๋ฌธ์ œ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ , ๊ฒฐ๊ณผ ๊ถค์ ์˜ ์‹ค์šฉ์  ์•ˆ์ •์„ฑ๊นŒ์ง€ ํ™•๋ณดํ–ˆ๋‹ค๋Š” ์ ์—์„œ, ์•ž์œผ๋กœ ๋‹ค์–‘ํ•œ ๋กœ๋ด‡ ์‹œ์Šคํ…œ์— ์‘์šฉ๋  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํ–ฅํ›„ ์‹ค์‹œ๊ฐ„ ๋Œ€์‘์„ฑ ๊ฐ•ํ™”, ๋ณด๋‹ค ๋ณต์žกํ•œ ์ œ์•ฝ ์กฐ๊ฑด ์ง€์›, ๋™์—ญํ•™ ํ†ตํ•ฉ ๋“ฑ ๋‚จ์€ ๊ณผ์ œ๋“ค์„ ํ•ด๊ฒฐํ•œ๋‹ค๋ฉด, cuRobo ํ˜น์€ ๊ทธ ํŒŒ์ƒ ๊ธฐ์ˆ ์€ ๋ฒ”์šฉ ๋กœ๋ด‡ ๋ชจ์…˜ ํ”Œ๋ž˜๋‹์˜ ํ‘œ์ค€ ํˆด๋กœ ์ž๋ฆฌ๋งค๊น€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ๋กœ๋ด‡๊ณตํ•™ ์—ฐ๊ตฌ์ž๋“ค์€ ์ด ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๋”์šฑ ๋น ๋ฅด๊ณ  ๋˜‘๋˜‘ํ•œ ๋กœ๋ด‡์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ฉฐ, ๋™์‹œ์— ๋‚จ์€ ๋„์ „๊ณผ์ œ๋ฅผ ํ•จ๊ป˜ ํ’€์–ด๋‚˜๊ฐ์œผ๋กœ์จ ๋กœ๋ด‡์˜ ์›€์ง์ž„์— ๋Œ€ํ•œ ์ดํ•ด์™€ ์ œ์–ด ๋Šฅ๋ ฅ์„ ํ•œ์ธต ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ (๋…ผ๋ฌธ ๋ฐ ๊ด€๋ จ ์ž๋ฃŒ)

  • Sundaralingam, B., et al. โ€œcuRobo: Parallelized Collision-Free Minimum-Jerk Robot Motion Generation.โ€ arXiv preprint arXiv:2310.17274 (2023) ๋“ฑ.
  • Github Repository: NVlabs/curobo (https://github.com/NVlabs/curobo) .
  • NVIDIA Developer Blog: โ€œCUDA-Accelerated Robot Motion Generation in Milliseconds with cuRoboโ€ (2023).
  • MoveIt Plugin: Isaac ROS cuMotion.
  • ๊ธฐํƒ€ ๋น„๊ต ๊ธฐ๋ฒ•: OMPL, TrajOpt, Ruckig, TracIK, PyBullet ๋“ฑ ๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ ๋ฐ ๋…ผ๋ฌธ.

Copyright 2024, Jung Yeon Lee