Oculus Rift - modulabs/gazebo-tutorial GitHub Wiki

Introduction

Gazebo 6 ์ด์ƒ์€ Oculus Rift VR ํ—ค๋“œ์…‹ DK1 ๋ฐ DK2๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž์Šต์„œ๋ฅผ ๋งˆ์น˜๋ฉด ๋ชจ๋ธ์˜ ์‹œ๊ฐ์  ๋งํฌ ์ค‘ ํ•˜๋‚˜์— ๊ฐ€์ƒ Oculus ์นด๋ฉ”๋ผ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. After this tutorial, you will be able to attach a virtual Oculus Camera to one of the visual links of your model.

OculusVR SDK installation.

Gazebo๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ Oculus SDK ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

sudo apt-get install libusb-dev libudev-dev libxinerama-dev libxrandr-dev
hg clone https://bitbucket.org/osrf/oculussdk
cd oculussdk
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make
sudo make install
sudo cp ../LibOVR/90-oculus.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules

Gazebo compilation with OculusVR support.

Oculus VR SDK๊ฐ€ ์„ค์น˜๋˜๋ฉด Oculus Rift๋ฅผ ์ง€์›ํ•˜๋Š” ์†Œ์Šค์—์„œ Gazebo๋ฅผ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Gazebo๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. cmake ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜ Oculus SDK๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

-- checking for module 'OculusVR' -- found OculusVR, version 0.4.4

Configuration

Gazebo๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Oculus ํ—ค๋“œ์…‹์—์„œ ๋ Œ๋”๋ง ํ•  ์ƒˆ ์ฐฝ์„ ์ƒ์„ฑํ•˜๋„๋ก ์•Œ๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค.

1.Oculus ํ—ค๋“œ์…‹์„ ์ผœ๊ธฐ ์ „์— ์šฐ๋ถ„ํˆฌ์—์„œ Applications > System Tools > Preferences > Displays .

2.Oculus Rift ํ—ค๋“œ์…‹์„ ์—ฐ๊ฒฐํ•˜๊ณ  ์ผญ๋‹ˆ๋‹ค. ์ฃผ ๋ฐœ์‚ฌ๊ธฐ๊ฐ€ ํ—ค๋“œ์…‹์œผ๋กœ ์˜ฎ๊ฒจ ์กŒ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Oculus ์ฐฝ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐฐ์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 1.Oculus ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ๋ฉ”์ธ ๋ชจ๋‹ˆํ„ฐ์˜ ์˜ค๋ฅธ์ชฝ ์œ„์— ๋“œ๋ž˜๊ทธํ•˜์‹ญ์‹œ์˜ค. 2.Oculus ๋””์Šคํ”Œ๋ ˆ์ด๊ฐ€ ๋˜‘๋ฐ”๋กœ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. Rotation ์„ Counterclockwise ๋กœ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 3.์šฐ๋ฆฌ๋Š” Gazebo์—๊ฒŒ ์šฐ๋ฆฌ๊ฐ€ Oculus ์Šคํฌ๋ฆฐ์„ ์–ด๋””์— ๋†“์•˜๋Š”์ง€, ์ฆ‰ ๋ฉ”์ธ ๋””์Šคํ”Œ๋ ˆ์ด์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ๋งํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ‰ ์ขŒํ‘œ๋Š” ์ฃผ ๋ชจ๋‹ˆํ„ฐ์˜ ๋ ( x = ๋ชจ๋‹ˆํ„ฐ ๋„ˆ๋น„)์ด๊ณ  ์ˆ˜์ง ์ขŒํ‘œ๋Š” ํ™”๋ฉด์˜ ์ƒ๋‹จ ( y = 0)์ž…๋‹ˆ๋‹ค.

์ข‹์•„ํ•˜๋Š” ํŽธ์ง‘๊ธฐ๋ฅผ ์—ด๊ณ  ~/.gazebo/gui.ini ํŒŒ์ผ์„ ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ ํŽธ์ง‘ํ•˜์‹ญ์‹œ์˜ค.

[geometry]
x=0
y=0

[oculus]
x=<REPLACE_BY_YOUR_HORIZONTAL_RESOLUTION>
y=0
visual=<REPLACE_BY_THE_VISUAL_LINK_ATTACHED_TO_OCULUS>
autolaunch=0

x ๋ฅผ ๋ชจ๋‹ˆํ„ฐ์˜ ์ˆ˜ํ‰ ํ•ด์ƒ๋„ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๊ณ  Oculus Rift๊ฐ€ ๋ถ€์ฐฉ ๋  ๋น„์ฃผ์–ผ ์ด๋ฆ„์œผ๋กœ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ gui.ini ํŒŒ์ผ์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

As an example, this is the content of our gui.ini file:

[geometry]
x=0
y=0

[oculus]
x=2560
y=0
visual=camera::link::visual
autolaunch=0

Running

1.ํ„ฐ๋ฏธ๋„์—์„œ oculusd daemon์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. cd ~/oculussdk ./oculusd

2.๋‘ ๋ฒˆ์งธ ํ„ฐ๋ฏธ๋„์—์„œ ๊ฐ€์ œ๋ณด๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

gazebo worlds/camera.world

3.๊ฐ€์ œ๋ณด๊ฐ€ ์‹คํ–‰๋˜๋ฉด Window-> Oculus Rift๋ฅผ ํด๋ฆญํ•˜๋ฉด Oculus ํ—ค๋“œ์…‹์—์„œ ์„ธ๊ณ„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gazebo๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ Oculus ์ฐฝ์„ ํ™œ์„ฑํ™” ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. gui.ini ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  gui.ini autolaunch=1 ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. ์ด์ œ ์ „๋ง๋Œ€๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  Oculus Rift๋Š” ๊ฐœ์ž…์—†์ด ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 gazebo worlds/camera.world