Skip to content
wngjs3 edited this page Mar 16, 2018 · 3 revisions

Status of HTC Vive + Gazebo:

Work is underway to get the HTC Vive working with Gazebo 7 under ROS kinetic and Ubuntu 16.04 LTS on a VR-capable system. This is currently a side project for the AS4SR lab, though.

It looks like there are a couple possible paths forward. Currently the two most-promising are:

Just trying to set up Gazebo to stream visuals from a stereo camera feed to an application made from Doc-ok's Vrui for the HTC Vive (since that's been tested-working under Ubuntu 16.04 with the new hardware stack enabled (4.10 kernels beyond 16.04's 4.4 kernels) via sudo apt-get install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04 and with an AMD card of the newest AMDGPU-PRO drivers (though install the vulcan SDK first! (old link)) -- ***NOT*** fglrx!).
    Vrui links: main blog with explanation and Vrui main site (with generic/non-Vive-specific download and quick-install pages)
    reddit thread with help on the libraries: link (though pay attention specifically to this part on down to the solution, which involves modding the libraries+paths referenced in the RunViveTracker.sh file)
    Note that you do need to install SteamVR (and Steam) under Linux also, since Vrui depends on their half-working VR for Linux support. This is discussed (and done) as part of the Vrui installation instructions (see above).
Actually editing the current Gazebo plugin to connect to the HTC Vive instead of the Oculus Rift DK1/DK2
    This would still involve looking at the Vrui toolkit to get the headset parameters to figure out the windowing, and potentially also involve using parts of Vrui to connect to the Lighthouse sensors to get the relative position and orientation of the headset to update the stereo camera position and orientation in the Gazebo sim; it may be less work though, and could potentially update far more quickly/efficiently than the 'first path forward' given above. It could potentially take more work, though, since the code will have to be far more closely integrated with Gazebo via the modified plugin.

Note that we are currently NOT attempting to get the Oculus Rift CV1 working with Gazebo. This is because Oculus has (1) closed out their Linux SDK libraries before supporting the CV1, and (2) the CV1 has much better hardware.

(2) may be counterintuitive, but the difficulty presented is this: the CV1 has two separate hardware displays internal to the headset, one for each eye. This requires compiling programs specifically for the CV1 for things to display properly.
    Oculus used to have dual-monitor support for the DK1 and DK2 headsets, because those headsets have a single display; thus, they could be easily treated as a second monitor screen by a video card / computer system when plugged in via an HDMI port.
    Oculus discontinued "dual-monitor" support for the CV1 headset for this reason -- it's not one display that can be "extended" easily -- it's actually two displays, and trying to treat two displays like one display is a horrible kludge.
        In other words, Oculus would rather "force" developers to create VR programs that work properly, so that the update framerates and display resolutions are kept up to snuff / won't make people sick.
...and yes, this is why it's likely easier to get the HTC Vive working with Gazebo's Oculus plugin than Oculus' own CV1 -- the Vive has a single hardware display like the DK1 and DK2

Source code and files all-in-one-place:

http://gazebosim.org/tutorials?tut=oculus -- ( ~/.gazebo.gui.ini , etc. )
https://bitbucket.org/osrf/gazebo -- ( worlds/camera.world )
https://bitbucket.org/osrf/oculussdk -- ( check against original SDK (0.4? 0.4.4?) for gazebo-needed mods )
https://developer.oculus.com/documentation/pcsdk/0.4/concepts/dg-sdk-setup/
https://web.archive.org/web/20141207011331/https://developer.oculus.com/downloads/ -- ( Wayback Machine, download 0.4.4(!!) )
http://gazebosim.org/tutorials?tut=gui_overlay -- ( other plugins/overlays )

Other VR-related resources:

MohitShridhar/oculus_gazebo_navigator: github page and Installation and Setup
indoor localization using HTC Vive: news article and github page
short discussion on current VR devices supported by ROS/Gazebo: link
oculus_rviz_plugins: github network diagram and OSUrobotics github repo, FAQ says support is for Oculus DK2 (https://github.com/OSUrobotics/oculus_rviz_plugins/wiki/FAQlink)

ROS Indigo:

VR and Gazebo with Android (online textbook, good resource): link 

Some newer Vive-ROS projects to look at

https://github.com/ishiguroJSK/vive_image_view
https://github.com/robosavvy/vive_ros
http://www.ros.org/news/2016/08/03mm-indoor-localization-with-ros-and-htc-vive.html

ROS + VR with Android phone-headsets

http://proquest.safaribooksonline.com/book/hardware/9781783554713/11dot-teleoperating-a-robot-using-a-vr-headset-and-leap-motion/ch11s07_html

Going at this sideways -- ROS + Unity and Microsoft HoloLens:

It looks like there's some VR support for Microsoft HoloLens and Unity (from the Unity side) plus ROS via rosbridge. This requires a Windows computer running Unity and supporting the Microsoft HoloLens, and an Ubuntu Linux computer running ROS and rosbridge.

See holoROS project:

https://github.com/soliagabriel/holoROS
https://forums.hololens.com/discussion/1757/project-hololens-integration-with-ros
https://tams.informatik.uni-hamburg.de/lehre/2016ws/seminar/tams/doc/krupke-TAMSOS-WS1617.pdf

Potential alternate path for Oculus Rift CV1

Once Microsoft HoloLens is working with Unity, could maybe get Oculus Rift CV1 also working in a similar way:

https://developer.oculus.com/downloads/unity/

Table of Contents




Clone this wiki locally