HAPTIX Optitrack Control - modulabs/gazebo-tutorial GitHub Wiki

Overview

์ด ํŠœํ† ๋ฆฌ์–ผ์€ HAPTIX ๊ฐ€์ œ๋ณด ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ Optitrack ๋ชจ์…˜ ์ถ”์ ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•œ๋‹ค. ์žฅ๋น„์˜ ๊ฐ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ  ์‹ถ๊ฑฐ๋‚˜ ๊ฐ ์š”์†Œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•œ ๋งˆ์ปค ๋ณด์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ๋ฐฐ์šด๋‹ค.

What you'll need

๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ํ•„์ˆ˜ ํ•ญ๋ชฉ๋“ค์€ HAPTIX์— ์ œ๊ณต๋œ๋‹ค. ์ž์‹ ์˜ ํ‚คํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋งํฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  1. ๊ฐ€์ œ๋ณด ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์„ค์น˜๋œ ๋ฆฌ๋ˆ…์Šค ์ปดํ“จํ„ฐ (์„ค๋ช…์€ ์—ฌ๊ธฐ์—)
  2. Motive ๋ชจ์…˜ ์ถ”์ ๊ธฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์„ค์น˜๋œ ์œˆ๋„์šฐ ์ปดํ“จํ„ฐ ๋˜๋Š” ์œˆ๋„์šฐ ๊ฐ€์ƒ๋จธ์‹  (VM). HAPTIX ํŒ€์€ ์‹œ์ž‘์‹œ ์ดˆ๊ธฐํ™”๋˜๋Š” ์œˆ๋„์šฐ VM์ด ์‚ฌ์ „ ์„ค์น˜๋˜์–ด์žˆ๋‹ค. (Motive ์†Œํ”„ํŠธ ์›จ์–ด ์„ค์น˜ ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์—)
  3. Optitrack V120 Trio 3D ์นด๋ฉ”๋ผ ๋ฐ ๋™๋ด‰๋œ ์™€์ด์–ด, ํ—ˆ๋ธŒ ๋“ฑ (์—ฌ๊ธฐ์—์„œ ๊ตฌ๋งค)
  4. 1~2 ๋†’์ด์˜ ์นด๋ฉ”๋ผ ์‚ผ๊ฐ๋Œ€
  5. ๋ชจ์…˜ ์ถ”์  ๋Œ€์ƒ ์„ธํŠธ (DIY ์‚ฌ์šฉ์ž๋Š” ์—ฌ๊ธฐ์—์„œ ๋ชจ์…˜ ์ถ”์  ์•…์„ธ์„œ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค: ๋ฐ˜์‚ฌ ๋งˆ์ปค 9๊ฐœ, 9๊ฐœ ์งง์€ ๋ฒ ์ด์Šค ๋ฐ ๊ฐ•์ฒด ๋ฒ ์ด์Šค 2๊ฐœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.)

Camera setup

Optitrack์„ ์‚ผ๊ฐ๋Œ€์— ์žฅ์ฐฉํ•œ๋‹ค.

Optitrack ํ‚คํŠธ์—๋Š” ๊ธด USB ์ผ€์ด๋ธ”๊ณผ ์ „์› ์ผ€์ด๋ธ” ๋ฐ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํฌํŠธ๊ฐ€ ์žˆ๋Š” ํ—ˆ๋ธŒ๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋œ๋‹ค. ์ „์› ์ผ€์ด๋ธ”์„ ๋ฒฝ๋ฉด๊ณผ ํ—ˆ๋ธŒ์— ์—ฐ๊ฒฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  USB ํ‚ค์—๋ธ”์„ ํ—ˆ๋ธŒ์— ์—ฐ๊ฒฐํ•œ๋‹ค. ๋‚˜์ค‘์— ์ด ์ผ€์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ Motive (๋˜๋Š” ๋‹ค๋ฅธ ์ถ”์  ํ”„๋กœ๊ทธ๋žจ)์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๊ณ„์— ์—ฐ๊ฒฐํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํ—ˆ๋ธŒ์—์„œ ๋‚˜์˜ค๋Š” ์™€์ด์–ด๋ฅผ Optitrack์˜ ๋’ท๋ฉด์— ๊ฝ‚๋Š”๋‹ค. ์นด๋ฉ”๋ผ ์„ค์ •์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด V120 Trio Quick Start Guide๋ฅผ ์ฐธ์กฐํ•˜์—ฌ๋ผ.

Optitrack์„ ์ปดํ“จํ„ฐ์˜ ์˜ค๋ฅธ์ชฝ 1~2 ๋ฏธํ„ฐ ์ง€์ ์— ์„ค์น˜ํ•˜๊ณ  ์นด๋ฉ”๋ผ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ฉด์—์„œ 90๋„ ํšŒ์ „์‹œ์ผœ ์‚ฌ์šฉ์ž๊ฐ€ ์•‰์•„์žˆ๋Š” ์›Œํฌ์Šคํ…Œ์ด์…˜/์˜์ž๋ฅผ ํ–ฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์ปค๋ฉ”๋ผ๋Š” ์–ด๊ป˜ ๋„ˆ๋จธ์—์„œ ์‚ฌ์šฉ์ž์˜ ์˜ค๋ฅธ์ชฝ์„ ๋ณด์•„์•ผ ํ•œ๋‹ค. Optitrack์„ ์œˆ๋„์šฐ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•˜๋Š” ์ผ€์ด๋ธ”์€ ์ถฉ๋ถ„ํžˆ ๊ธธ์–ด์•ผ ํ•˜๊ณ , ์•„๋ฌด๊ฒƒ๋„ ์žกํžˆ๊ฑฐ๋‚˜ ์žก์•„๋‹น๊ธฐ์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

Note: ์™ผ์ชฝ ํŒ”์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฌผ๋ฆฌ์  ์„ค์ •์„ ๋’ค์ง‘์–ด์•ผ ํ•œ๋‹ค: ์นด๋ฉ”๋ผ๋ฅผ ์›Œํฌ์Šคํ…Œ์ด์…˜ ์™ผ์ชฝ์— ๋†“๊ณ  ๋ชจ์…˜ ์ถ”์  ๋Œ€์ƒ์ด ์™ผ์ชฝ์— ์ฐฉ์šฉ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

Motion tracking target setup

Arm and head trackers

HAPTIX teams์€ ํŒ”๊ณผ ๋จธ๋ฆฌ์— ์— ์ฐฐ ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๋ชจ์…˜ ์ถ”์  ํƒ€ํ‚ท์ด ์ œ๊ณต๋œ๋‹ค. ๋งŒ์•ฝ ํŒ”๊ณผ ๋จธ๋ฆฌ ์ถ”์ ๊ธฐ๋ฅผ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, monitor tracker placement ํ•ญ๋ชฉ์„ ์ƒ๋žตํ•˜์—ฌ๋ผ.

์ž์‹ ์˜ ๋ชจ์…˜ ์ถ”์  ํƒ€๊นƒ์„ ๋งŒ๋“ค๋ ค๋ฉด, ๋Œ€์ƒ ๋‹น ์ตœ์†Œ 3๊ฐœ์˜ ์€์ƒ‰ ๋™์ž‘ ์ถ”์ ๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

HAPTIX ํ”„๋กœ์ ํŠธ์—์„œ Optitrack์€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋œ ๋กœ๋ด‡ ํŒ”์˜ ์ž์„ธ๋ฅผ ์ง์ ‘ ์ œ์–ดํ•˜๋Š” ์‚ฌ์šฉ์ž ํŒ”์˜ ํฌ์ฆˆ๋ฅผ ์ถ”์ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž์˜ ๋ชจ๋ฆฌ ํฌ์ฆˆ๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์˜ ๊ด€์ธก์  ์ œ์–ด๋ฅผ ์œ„ํ•ด ์ถ”์ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ํŒ”์— ๋ฌถ์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ์…˜ ์ถ”์  ๋Œ€์ƒ์„ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ , ๋จธ๋ฆฌ์— ์ฐฉ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ์…˜ ์ถ”์  ๋Œ€์ƒ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

pinch์—์„œ๋Š” ๋ชจ์…˜ ์ถ”์  ์˜์—ญ์„ ํŒ์ž ๋˜๋Š” ๋‹จ๋‹จํ•œ ํ”Œ๋ผ์Šคํ‹ฑ์œผ๋กœ ํ…Œ์ดํ•‘ ํ•˜๊ฑฐ๋‚˜ ๋ถ™์—ฌ ์ถ”์  ๋ชฉํ‘œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
์ด ํƒ€๊นƒ์€ ์ฒœ์ด๋‚˜ ๋ฐธํฌ๋กœ๋กœ ์™„์žฅ์— ๋ถ€์ฐฉํ•˜์—ฌ ํŒ” ์ถ”์ ๊ธฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋จธ๋ฆฌ ์ถ”์  ์žฅ์น˜๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด, ๋Œ€์ƒ์„ ๋จธ๋ฆฌ๋ ์— ๋ถ€์ฐฉํ•œ๋‹ค. ๋˜๋Š” Nvidia 3D glasses๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์•ˆ๊ฒฝ์˜ ์˜ค๋ฅธ์ชฝ ๋‹ค๋ฆฌ์— ๋ถ€์ฐฉํ•œ๋‹ค.

Monitor tracker placement

HAPTIX ํŒ€์€ ํ•œ๋ฉด์— ์–‘๋ฉดํ…Œ์ดํ”„๊ฐ€ ์žˆ๋Š” ๋‘ฅ๊ทผ ๋ฐ”๋‹ฅ์— ๋ถ€์ฐฉ๋œ ์„ธ๊ฐœ์˜ ๋™์  ๊ตฌ์ฒด๋ฅผ ์ œ๊ณต๋œ๋‹ค. ~[][(https://bitbucket.org/osrf/gazebo_tutorials/raw/default/haptix_optitrack/files/spheres.png) ์ด ๊ตฌ๋“ค์„ ๊ฐ€์ œ๋ณด ๋จธ์‹ ๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ์˜ ์ฝ”๋„ˆ์— ๋ถ€์ฐฉํ•œ๋‹ค. ํ•˜๋‚˜๋Š” ๋ชจ๋‹ˆํ„ฐ์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์—, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์™ผ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์—, ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” ์˜ค๋ฅธ์ชฝ ๋ชจ์„œ๋ฆฌ ์ค‘๊ฐ„์— ๋ถ€์ฐฉํ•œ๋‹ค.

Configuring the Motive Project File

๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ์ถ”์  ๋Œ€์ƒ ์…‹์„ ๋ฐ›์€ ๊ฒฝ์šฐ, Motive ํ”„๋กœ์ ํŠธ ํŒŒ์ผ haptix_osrf.ttp ์„ ์œˆ๋„์šฐ ๋ฐ”ํƒ•ํ™”๋ฉด์— ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค. ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ต์ •ํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ์ˆ˜์ •์„ ํ•œ๋‹ค.

Tracking rigid bodies

๋ฆฌ๋ˆ…์Šค์—์„œ ๊ฐ€์ œ๋ณด๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์œˆ๋„์šฐ ์ปดํ“จํ„ฐ์—์„œ USB๋ฅผ ํ†ตํ•ด Optitrack๊ฐ€ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ฐ”ํƒ•ํ™”๋ฉด์—์„œ Motive ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ํŒ์—…์ฐฝ์ด ๋œฌ๋‹ค: ๋งŒ์•ฝ Motive ํ™”๋ฉด์—์„œ "๋ผ์ด์„ผ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ"์ด๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค๋ฉด, Optitrack๋ฅผ ์˜ฌ๋ฐ”๋กœ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค. ์›จ์˜ Camera Setup์žฅ์„ ํ™•์ธํ•˜๊ณ  Optitrack๋ฅผ USB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์›๊ณผ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ–ˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ์œˆ๋„์šฐ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, "Natural Point Optitrack" USB ์žฅ์น˜๊ฐ€ VM window ์šฐ์ธก ํ•˜๋‹จ ๊ตฌ์„์— ์ผœ์ ธ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

์‹œ์ž‘ ๋ฉ”๋‰ด๋ฅผ ๋‹ซ๋Š”๋‹ค.

์ƒ๋‹จ ํˆด๋ฐ”์—์„œ "View" ์•„๋ž˜ "Data Streaming" ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜๊ณ  "Broadcast Frame Data" ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ด์ œ "File", "Open"์„ ์„ ํƒํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•œ haptix_osrf.ttp ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์„ ํƒํ•œ๋‹ค.

** Motive์˜ ์•Œ๋ ค์ง„ ๋ฒ„๊ทธ: ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ Motive์„ ์‹คํ–‰ํ•œ๋‹ค๋ฉด, ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์—ด๊ธฐ ์ „์— "Broadcast Frame Data"๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค! ๋งŒ์•ฝ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ”๋กœ ์—ด์–ด๋ฒ„๋ฆฌ๋ฉด Motive์ด ์ถฉ๋Œ์„ ์ผ์œผํ‚จ๋‹ค.**

์•„์ง ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ƒ๋‹จ ํˆด๋ฐ”์—์„œ "Views" ์•„๋ž˜ Rigid Body Properties view๋ฅผ ์—ฐ๋‹ค.

์นด๋ฉ”๋ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—์„œ ์„ธ๊ฐœ์˜ ์ž‘์€ ํฐ์ƒ‰์ ์ด ์ด๋ฏธ์ง€์— ํ‘œ์‹œ๋œ๋‹ค. ์ ๋“ค์€ ์นด๋ฉ”๋ผ ํ”„๋ ˆ์ž„์—์„œ ๋ชจ์…˜ ์ถ”์ ๊ธฐ ๊ตฌ์ฒด์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค (Optitrack Trio์—๋Š” 3๊ฐœ์˜ ์นด๋ฉ”๋ผ๊ฐ€ ์žˆ๋‹ค). 3D ๋ณด๊ธฐ์—์„œ ๊ฐ ๊ตฌ์ฒด์˜ 3D ๊ณต๊ฐ„ ๋‚ด ์œ„์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ๋™์ž‘ ์ถ”์  ๊ฐ์ฒด์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ์ ์ด๋‚˜ ํฐ ์›์ด ํ‘œ์‹œ๋˜๋ฉด ์ ์™ธ์„ ์— ๊ฐ„์„ญ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ธˆ์†์„ฑ/๋ฐ˜์ž‘์ด๋Š” ๋ฌผ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ˆจ๊ธฐ๊ณ  ๊ทผ์ฒ˜์˜ ์ž์—ฐ๊ด‘์„ ์ฐจ๋‹จํ•œ๋‹ค.

์›๊ทผ ๋ทฐ์—์„œ ์–ด๋–ค ๊ตฌ์ฒด๊ฐ€ ๋ชจ๋‹ˆํ„ฐ ์•ž์— ๋†“์ธ ๊ตฌ์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋จธ๋ฆฌ ๋ฐ ํŒ” ์ถ”์ ๊ธฐ๋ฅผ ํ™”๋ฉด ์™ธ๋ถ€๋กœ ๊ฐ€์ ธ๊ฐ€๋ฉด ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. selection rectangle์„ ํด๋ฆญํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์„ธ๊ฐœ์˜ ๋งˆ์ปค๋ฅผ ๊ฐ•์กฐ์‹œํ‚จ๋‹ค.

๊ฐ•์ฒด ์†์„ฑ์—์„œ "Create From Selection" ์„ ๋ˆ„๋ฅธ๋‹ค. ์„ ํƒํ•œ ์ ๊ณผ ๋ ˆ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋Š” ์‚ผ๊ฐํ˜•์ด 3D ๋ณด๊ธฐ์— ๋‚˜ํƒ€๋‚œ๋‹ค. ์ƒˆ๋กœ์šด ๊ฐ•์ฒด์— "MonitorTracker"๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์ธ๋‹ค. ๊ฐ•์ฒด ์†์„ฑ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ฑฐ๋‚˜, ๊ฐ•์ฒด ์œ„์—์„œ ์šฐํด๋ฆญํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ํƒญ์˜ ํ•˜์œ„์— "Rename Asset"๋ฅผ ์„ ํƒํ•˜์—ฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒ”๊ณผ ๋จธ๋ฆฌ ํŠธ๋ ‰์ปค๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค๋ฉด: ์ด์ „ ๊ฐ•์ฒด์˜ ๊ตฌ์ฒด๊ฐ€ ์„ ํƒ ํ•ด์ œ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ํŒ” ํƒ€๊ฒŸ์„ ๋“ค๊ณ  ํด๋ฆญํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•˜์—ฌ ํŒ” ํƒ€๊ฒŸ์˜ ๊ตฌ์ฒด๋ฅผ ์„ ํƒํ•œ๋‹ค. ํŒ” ์ถ”์ ๊ธฐ๋ฅผ ์ฐฉ์šฉํ•˜๊ณ  ์†๋ฐ”๋‹ฅ์— ๋Œ€๊ณ  ํŒ”์„ ๋˜‘๋ฐ”๋กœ ์žก๋Š”๋‹ค. ๋งˆ์ปค์— ์ˆ˜์ง์œผ๋กœ ๋ถ€์ฐฉ ๋œ ๊ตฌ๊ฐ€ ๋˜‘๋ฐ”๋กœ ํ–ฅํ•˜๋„๋ก ๋‘ ๊ฐœ์˜ diagonal prongs๊ฐ€ ๊ฐ€๋ฉ”๋ผ๋ฅผ ํ–ฅํ•˜๋„๋ก ์ถ”์ ๊ธฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. (์ฐธ๊ณ ์šฉ ํŒ” ์ž์„ธ๋Š” "Starting Gazebo" ํ•˜๋‹จ ๊ทธ๋ฆผ์„ ํ™•์ธํ•œ๋‹ค)

ํŒ”์„ ์žก๊ณ  "Create From Selection"์„ ํด๋ฆญํ•œ๋‹ค. ์ƒˆ ๊ฐ•์ฒด์— "ArmTracker"๋ผ๋Š” ์ด๋ฆ„์„ ๋ถ™์ธ๋‹ค.

๋จธ๋ฆฌ ํ‘œ์ ์— ๋Œ€ํ•ด์„œ๋„, ์„ํƒ๋œ ๋จธ๋ฆฌ ์ถ”์ ๊ธฐ ๊ตฌ์ฒด๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ด€๋ จ ๊ตฌ์ฒด๋ฅผ ์„ ํƒํ•œ๋‹ค. Nvidia 3D ์•ˆ๊ฒฝ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋จธ๋ฆฌ ์ถ”์ ๊ธฐ๋ฅผ ์ผœ๊ณ  ๊ฐ€๋Šฅํ•œ ๋˜‘๋ฐ”๋กœ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ํ–ฅํ•˜๊ฒŒ ํ•œ๋‹ค. ํ‘œ์ ์ด ์ž‘์šฉ ์œ„์น˜ (์˜ˆ: ๊ท€ ์œ„์ชฝ)์™€ ์ผ์น˜ํ•˜๋Š” ์œ„์น˜์— ๋†“์—ฌ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๊ฐ€๋Šฅํ•œ ์ถ”์ ๊ธฐ๋ฅผ ์žก๊ณ  "Create from Selection"์„ ํด๋ฆญํ•œ๋‹ค. ๊ฐ•์ฒด์˜ ์ด๋ฆ„์„ "HeadTracker"๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

์ค‘์š”: ๊ฐ•์ฒด์˜ ์ด๋ฆ„์„ ์ •ํ™•ํ•œ์ง€ ํ™•์ธํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฐ€์ œ๋ณด๊ฐ€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ๋ชจ์…˜ ์ถ”์  ๋Œ€์ƒ์„ ํ•ด๋‹น ๊ฐ์ฒด์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๋Š”๋‹ค!

Motive์˜ 3D ๋ทฐ์—์„œ ํŒ”๊ณผ ๋จธ๋ฆฌ ์ถ”์ ๊ธฐ๋ฅผ ๋”ฐ๋ผ ์ด๋™ํ•˜๊ณ  ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

Check the result

์ด์ œ ์„ค์ •์„ ์œ„ํ•ด Motive์„ ๊ตฌ์„ฑํ•˜์˜€๋‹ค. ๋ชจ๋“  ๋งˆ์ปค๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”์ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ์— ์ข‹์€ ํƒ€์ด๋ฐ์ด๋‹ค. ํŒ” ๋ฐ ๋จธ๋ฆฌ ์ถ”์ ๊ธฐ๋ฅผ ๋‹ค์‹œ scene์œผ๋กœ ๊ฐ€์ ธ์™€์„œ ์นด๋ฉ”๋ผ ๋ฐ ์›๊ทผ ๋ทฐ์—์„œ ์›€์ง์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ๋‹ค.

Save the result

์ƒ๋‹จ ํˆด๋ฐ”์—์„œ "ํŒŒ์ผ" ์•„๋ž˜ "ํ”„๋กœ์ ํŠธ ์ €์žฅ"์„ ๋ˆ„๋ฅธ๋‹ค. ๋ฐ”ํƒ•ํ™”๋ฉด์— haptix_osrf.ttp์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

์ถ”์ ๊ธฐ์—์„œ ๊ฐœ๋ณ„ ๋งˆ์ปค์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์นด๋ฉ”๋ผ ๊ฐ๋„๋ฅผ ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ตฌ์„ฑ์„ ๋‚˜์ค‘์— ์ˆ˜์ •ํ•  ํ•„์š”๋Š” ์—†๋‹ค.

Starting Gazebo

Optitrack๊ฐ€ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ฆฌ๋ˆ…์Šค ์ปดํ“จํ„ฐ์—์„œ haptixStart ๋ฐ”ํƒ•ํ™”๋ฉด ์•„์ด์ฝ˜์„ ๋‘๋ฒˆ ํด๋ฆญํ•˜์—ฌ ๊ฐ€์ œ๋ณด๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

ํŒ” ์ถ”์ ๊ธฐ ๋ฐ ๋จธ๋ฆฌ ์ถ”์ ๊ธฐ๋ฅผ ์ฐฉ์šฉํ•œ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ๋กœ๋ด‡ ํŒ”๊ณผ ๊ฐ™์ด ํŒ”์„ ๋“ค๊ณ  ๋จธ๋ฆฌ๋ฅผ ๋ฐ”๋กœ ์„ธ์šด๋‹ค. ๋‹ค๋ฅธ ์†์„ ์‚ฌ์šฉํ•˜์—ฌ v, b, ๋˜๋Š” n์„ ๋ˆŒ๋Ÿฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ผ์‹œ ์ค‘์ง€๋ฅผ ํ•ด์ œํ•œ๋‹ค. ํŒ”์„ ํ”๋“ค๋ฉด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.