...
ALVR requires SteamVR to be set up on the host computer. If you haven’t installed it on your computer yet, please refer to the instructions here: https://store.steampowered.com/app/250820/SteamVR/
Preparation of Headset
...
Info |
---|
Make sure you turn the guardian (i.e. the automatic tracking boundary detection for the Quest’s internal tracking) is turned off in the developer settings of the HMD. For VIVE Focus use the equivalent setting in the Focus' configuration. |
Optional adjustments for Meta Quest:
If inside-out tracking is not being used, we recommend to switch headset tracking off i.e. switch to 3DOF tracking in the Quest system settings. This will free additional CPU performance for the decoding of the video stream and therefore improve image quality.
When powering-up or re-starting the HMD, it will automatically turn headset tracking to ON. If not needed, turn headset tracking to OFF to save computing resources.
For some older Meta Quest firmware versions, when powering-up or re-starting the HMD, it will not automatically connect to a previously saved network, if the network is not connected to the internet. In this case manually connect to the designated access point after start-up. Internet is not needed for operation, this is a bug in Meta’s firmware. This is an issue that might be solved by a software update from Meta.
To reduce impact of latency and jitter from optical tracking, turn on some smoothing and prediction in the ART DTrack or Optitrack Motive settings. Try different amounts of prediction and smoothing until you feel comfortable with the result.
If needed, cover the proximity sensor in the center between the lenses of the HMD with a piece of dark tape to prevent the HMD from going to sleep. Generally LPVR-AIR is able to deal with the HMD going to sleep and waking up, but in case you discover any issues the tape will help.
Start-up
FusionHub
Start FusionHub on the HMD. A window showing the FusionHub console output should open.
Start the FusionHub GUI client on the host computer
Connect the GUI client to FusionHub on the HMD. Make sure HMD and host are in the same subnet. Enter the the correct IP of the HMD in the client before pressing connect.
Adjust parameter blocks as needed. Refer to the description of FusionHub BASE for configuration options. Note the following input and output ports that are hard-coded in the ALVR FusionHub API layer. These are already correctly set in the default configuration file installed with the FusionHub APK, so usually there is no need to change them.
...
Endpoint
...
Direction
...
Purpose
...
tcp://*:8799
...
Output
...
Fused pose data
...
tcp://localhost:8898
...
Input
...
IMU data
If it’s not running yet make sure to start and configure your optical tracking system. Once optical data is streamed to FusionHub, the
nOptical
counter in the GUI should be increasing.
ALVR
Start the ALVR server on the host. While the ALVR server starts up, it will automatically run SteamVR.
Start the ALVR client on the HMD. The HMD should be shown in the list of ALVR clients in the ALVR server application. In some cases you need to click the
Trust
button in the application to start streaming.You can now use and calibrate the system as described in the FusionHub BASE section.
Here is a video tutorial how to perform the initial startup procedure:
https://vimeo.com/1024128202?share=copy
Info |
---|
Once streaming starts, you should see the SteamVR default environment through the headset. Check if the nIMU counter in the FusionHub GUI is increasing. If both nOptical and nIMU are increasing then the communication between ALVR, optical tracking and FusionHub is working. |
Optical tracking systems
Configuration options
Advanced Realtime Tracking (ART) DTrack
FusionHub works with all ART tracking systems, based on their DTrack tracking software.
...
Start-up
FusionHub
Start FusionHub on the HMD. A window showing the FusionHub console output should open.
Start the FusionHub GUI client on the host computer
Connect the GUI client to FusionHub on the HMD. Make sure HMD and host are in the same subnet. Enter the the correct IP of the HMD in the client before pressing connect.
...
Once connected the FusionHub on the headset select base configuration to see the current configuration of FusionHub:
...
Adjust parameter blocks as needed. Refer to the description of FusionHub BASE for configuration options:
...
Note the following input and output ports that are hard-coded in the ALVR FusionHub API layer. These are already correctly set in the default configuration file installed with the FusionHub APK, so usually there is no need to change them.
Endpoint | Direction | Purpose |
---|---|---|
| Output | Fused pose data |
| Input | IMU data |
If it’s not running yet make sure to start and configure your optical tracking system. Once optical data is streamed to FusionHub, the
nOptical
counter in the GUI should be increasing.
ALVR
Start the ALVR server on the host. While the ALVR server starts up, it will automatically run SteamVR.
Start the ALVR client on the HMD. The HMD should be shown in the list of ALVR clients in the ALVR server application. In some cases you need to click the
Trust
button in the application to start streaming.You can now use and calibrate the system as described in the FusionHub BASE section.
Here is a video tutorial how to perform the initial startup procedure:
https://vimeo.com/1024128202?share=copy
Info |
---|
Once streaming starts, you should see the SteamVR default environment through the headset. Check if the nIMU counter in the FusionHub GUI is increasing. If both nOptical and nIMU are increasing then the communication between ALVR, optical tracking and FusionHub is working. |
Optical tracking systems
Configuration options
Advanced Realtime Tracking (ART) DTrack
FusionHub works with all ART tracking systems, based on their DTrack tracking software.
Code Block |
---|
"optical": {
"type": "DTrack",
"settings": {
"port": 5000,
"bodyIDs": [
1,
2,
3
],
"endpoints": [
"inproc://optical_data_source_1",
"tcp://*:8500",
"tcp://*:8501"
],
"objectNameMapping": {
"1": "QuestPro",
"2": "leftController",
"3": "rightController"
}
}
}
} |
Info |
Make sure to set the output target for DTrack in the DTrack output settings to the IP address of your HMD. Avoid activating output to any IP addresses that are not present in the network as this might slow down communication. Select “Act as router” if your PC is connected to different subnets |
Adjust the body IDs as configured in DTrack. If you don’t plan to use hand controllers ignore the body IDs for the hand controllers (2 and 3 in the example above). Leave the endpoints and objectNameMapping blocks as shown above.
See this guide for further information about how to configure DTrack. Also, refer to this page for more information on ART.
Optitrack
FusionHub works with all Optitrack tracking systems based on their Motive tracking software.
Code Block |
---|
"optical": { "type": "Optitrack", "settings": { "connectionType": "Multicast", "localAddress": "192.168.0.99", "remoteAddress": "192.168.0.100", "bodyIDs": [ 1, 2, 3 ], "endpoints": [ "inproc://optical_data_source_1", "tcp://*:8500", "tcp://*:8501" ], "objectNameMapping": { "1": "QuestPro", "2objectNameMapping": "leftController",{ "31": "rightControllerQuestPro", } } } |
Marker adjustment
The optical system is the tracking reference, its pose is what is received by the visualization backend. The orientation of the IMU sensor is calibrated relative to the optical markers on the HMD. Therefore it is important to set up the tracking body or rigid body in the optical tracking software (DTrack, Motive etc.) in a way that its axes align with the optical axes of the head mounted display.
...
Refer to this page for more information on ART and this page for Optitrack setups from the LPVR documentation.
Note |
---|
Note that if you have a pre-configured target from ART or Optitrack, you don’t need to do a manual adjustment. You only need to do this if you have a custom target attached to your HMD. The axis alignment might not be correct for pre-defined. Please check that the axis alignment corresponds to what is shown in the SteamVR coordinate system image above. |
The table below shows further possible marker configurations for a Quest Pro HMD.
...
Output Settings in DTrack
Create an output channel in the DTrack output settings dialog and point the UDP stream to the IP address of the HMD. In the example below the HMD has the address 192.68.4.27. We’re transmitting data on port 5000. The output port should be set to the same value as defined in your configuration script.
...
Optitrack notes
In order to avoid excessive buffering and data loss, make sure to reduce the amount of data being streamed from Motive. We recommend the streaming settings below. Make sure to set the local interface IP to the IP of the network connection that is being used for communicating with the HMD. It is a common mistake to not set this IP correctly. If the correct IP doesn’t show up, restart Motive.
...
Advanced troubleshooting
The best way to diagnose what is going wrong with the system if something doesn’t work as expected is to look at the log output of FusionHubLauncher. The log can be recorded by connecting your HMD to a PC using a USB (most likely USB-C) cable.
For this purpose download the Android platform tools for Windows from here: https://developer.android.com/studio/releases/platform-tools
Copy the platform tools files to a folder and open a command prompt in that folder.
Check if the HMD is detected by your computer by entering adb devices
. If your devices is not detected or marked as unauthorized make sure you have the correct USB driver for your HMD installed and acknowledged USB access from the host computer in the Android GUI on the HMD.
...
"2": "leftController",
"3": "rightController"
}
}
} |
Adjust the body IDs as configured in Motive. If you don’t plan to use hand controllers ignore the body IDs for the hand controllers (2 and 3 in the example above). Leave the endpoints and objectNameMapping blocks as shown above. Local address needs to be set to the address of your headset, remote address is the address of the Motive machine.
Refer to this page for Optitrack setup from the LPVR documentation.
Advanced troubleshooting
The best way to diagnose what is going wrong with the system if something doesn’t work as expected is to look at the log output of FusionHubLauncher. The log can be recorded by connecting your HMD to a PC using a USB (most likely USB-C) cable.
For this purpose download the Android platform tools for Windows from here: https://developer.android.com/studio/releases/platform-tools
Copy the platform tools files to a folder and open a command prompt in that folder.
Check if the HMD is detected by your computer by entering adb devices
. If your devices is not detected or marked as unauthorized make sure you have the correct USB driver for your HMD installed and acknowledged USB access from the host computer in the Android GUI on the HMD.
Enter adb logcat | findstr fusionhub
to stream log data from the device to your command line. Only data from the FusionHubLauncher application will be displayed. The initialization log will be displayed when FusionHubLauncher is first started and every time you restart it using the Restart
button in the GUI.
Network setup
Router
In order to establish high bandwidth communication between the host and Quest 2 / Pro we recommend setting up a 5GHz or for optimum performance a 6GHz (WIFI 6e) WIFI router with 2 channels per HMD. We recommend the Eero WIFI 6E router.
Network topography
We recommend to set up a simple network structure, to minimize potential error sources in the installation process as shown in the image below.
...
Network performance
A WIFI 6E connection is recommended to achieve optimum performance:
...
Transmission speeds are expected to be around 2 Gbps for a stable 6 GHz connection.
...
Typical ALVR performance graph:
...
In SteamVR check Advanced Frame Timing for performance problems:
...
In case of a sufficient rendering performance the advanced frame timing window should look like the output below:
...
Challenges and limitations of using Meta Quest HMDs
...
Example configurations
Example configurations for the outside-in / inside-out filter:
...
Characteristic
...
Parameter setting
...
Mainly inside-out, outside-in for global referencing: Tracking is based mainly on the built-in inside-out tracking. Outside-in tracking is used for global referencing.
Note: Turn headset tracking to ON in Quest settings. Room needs to be suitable for inside-out tracking.
...
Code Block |
---|
"ioHpWeight": 0,
"ioLpWeight": 0.9995,
"optLpWeight": 0.9995,
"useIOHeight": false,
"useIOHorizontal": true |
...
for the outside-in / inside-out filter:
Characteristic | Parameter setting | ||
---|---|---|---|
Mainly inside-out, outside-in for global referencing: Tracking is based mainly on the built-in inside-out tracking. Outside-in tracking is used for global referencing. Note: Turn headset tracking to ON in Quest settings. Room needs to be suitable for inside-out tracking. |
| ||
Outside-in tracking only : Tracking + height from inside-out: Horizontal tracking is based on outside-in tracking only. Only height (global y-axis) values are taken directly from inside-out tracking. Note: To maximize performance, make sure to turn : Turn headset tracking to OFF ON in Quest settings. Room needs to be suitable for inside-out tracking. |
|
Network setup
Router
In order to establish high bandwidth communication between the host and Quest 2 / Pro we recommend setting up a 5GHz or for optimum performance a 6GHz (wifi 6e) wifi router with 2 channels per HMD. We recommend the tp-link AXE16000 quad-band 16-stream wi-fi 6e router.
Network topography
We recommend to set up a simple network structure, to minimze potential error sources in the installation process as shown in the image below.
...
| |||
Outside-in tracking only: Tracking is based on outside-in tracking only. Note: To maximize performance, make sure to turn headset tracking to OFF in Quest settings. |
|
Advanced intercalibration (only on Meta Quest)
...
On the headset, go to settings → system → Quest Link. Pairing with the PC and click the launch icon. This would start the Oculus software on the PC.
Then on the headset, start SteamVR. This will start the SteamVR on your PC, also in your headset you will enter into SteamVR’s default scene automatically.
...
Start the ART tracking by clicking “start” in DTrack software.
In the command line please go to the directory of
lh_opt_calib
and execute the following:Code Block lh_opt_calib.exe --opticalSystem dtrack --port 5012 --bodyId 6 --bodyFile "C:\Users\lpresearch\Desktop\Quest2TestBodyFile\standard b06.txt"
set port to DTrack’s port (can be found in DTrack’s Tracking → Output)
bodyId to your headset’s tracking ID in DTrack
bodyFile to the file path (from section 1 step 3)Rotate the headset in front of the tracking camera to collect 10 poses. If in the end all 5 outputs looks close, this section is considered finished. Otherwise please retry step 4 and 5.
Exit the SteamVR on PC. Exit the Oculus software on your headset by clicking “Quit” in the menu for Quest AirLink.
IV - Load the calibrated body file to the optical tracking software
...