OSVR / SteamVR-OSVR

An OSVR plugin for SteamVR, providing SteamVR support for OSVR HMDs.
Apache License 2.0
138 stars 57 forks source link

Multi Vendor VR Device SteamVR Setup Issues #126

Closed Balderick closed 7 years ago

Balderick commented 7 years ago

Description of issue

Bad pose, bad tracked device positioning, bad translation and basically unusuable pose in steamvr.

Screenshot of SteamVR Room Layout with steamvr-osvr driver.

002capture

Screenshot of SteamVR Room Layout without steamvr-osvr driver.

003capture

both screenshots were taken without moving any tracked devices and the osvr hmd was located nearer the tracked devices than what is shown in first screenshot. i.e. it was nowhere near the lighthouse base station.

Describe the issue you've encountered. What is the exepected and actual behavior? What steps have you tried to fix the problem?

Trying to setup osvr hdk, two vive controllers, two lighthouse base stations and a vive tracker for steamvr using the vive tracker to use as head tracker using the instructions described at https://github.com/OSVR/OSVR-Docs/blob/master/Extending-OSVR/ConfiguringHDKViveTracking.md for guidance.

Have removed all ir tracking components from osvr hdk setup including ir array, ir board and ir camera.
OSVR server is started with

{
"description": "This configuration supports orientation-only tracking, with the OSVR HDK. It is configured for SteamVR applications in direct mode (landscape) on HDK 1.3 optics.",
"display": "displays/OSVR_HDK_1_3_with_mesh.json",
"renderManagerConfig": "sample-configs/renderManager.direct.landscape.json",
"drivers": [],
"aliases": {
"/me/head": {
        "posttranslate": [0.0, -0.1143, -0.0635],
           "rotate": {
                  "axis": "x",
                  "degrees": -90
                     },
             "child": "/me/puck"
            }
    }    
 }

and steamvr.vrsettings looks like

 {
"collisionbounds" : {
      "CollisionBoundsCenterMarkerOn" : false
 },
 "steamvr" : {
  "activateMultipleDrivers": true,
  "enableHomeApp" : false,
  "mirrorViewGeometry" : "1666 986 1776 999",
  "showMirrorView" : true
   }
}

but steamvr room layout gives a rediciously bad pose.

Using OpenVR-InputEmulator to fix orientation and position of tracked devices greatly helps but is really a remedy and not a solution or cure for all the issues that i am seeing.

Here is how Tracker Viewer sees osvr hdk-steamvr tracked setup.

004capture

Steps to reproduce the problem

How can the problem be reproduced? To be honest, not very easily due to the array of and the amount of steamvr startup errors currently. Every time I turn on a steamvr tracked device it causes another instance of steamvr to try and run. Every time a tracked device is turned off it causes a new instance of steamvr to try and run. Steamvr crashes. I just spent eight hours trying to reproduce the same thing twice but steamvr only started thrice without error out of scores and scores of attempts.

Ironically trying to reproduce similar issues with osvr apps has proven that the devices are tracking and can work as expected with vive tracker as head tracker when everything is run through osvr runtime thanks to osvr-vive. I tested with Parabolic which is a seated position osvr game but it proves the vive tracker can be used for head tracking in osvr apps and openvr apps using an osvr hdk for display.

System configuration

Please specify any relevant system configuration information.

Attached files

Please attach the following files:

WIP

Balderick commented 7 years ago

The hmd being placed onto base station in first screen shot is caused by not specifying requireHmd : false in server config file. When that option is specified it causes IPC connection error 308 which basically blocks all input and tracking info from vr devices being seen by vr apps and SteamVR though steamvr room layout confirms devices are definitely being tracked.

The expected behaviour of requireHmd : false is to allow steamvr to start up without any hdm connected or ignore any connected hmds. One user case scenario of this is too allow tracked devices to send input and tracking data to vr capable apps when those apps are launched as a desktop app.

This an openvr issue. https://github.com/ValveSoftware/openvr/issues/383

Could https://github.com/ValveSoftware/openvr/issues/565#issuecomment-310731334 be used along with the replies made to that comment give us a reason to ask;

~~Should or could we be using null_driver to create a dedicated openvr driver for this type of multi vendor setup too appease requirements for steamvr runtime to run as expected with requireHmd : false?, ~~ No because we already have openvr drivers for all our hardware.

Balderick commented 7 years ago

Getting there.

Enabling the null_driver by setting true in C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\null\resources\settings\default.vrsettings and editing the contents of that file to reflect your osvr hdk display lets steamvr think a hmd that it can use is connected when requireHmd : false is set. This allows steamvr to fully start up when everything is configured exactly as described in https://github.com/OSVR/OSVR-Docs/blob/master/Extending-OSVR/ConfiguringHDKViveTracking.md which then lets steamvr apps run on desktop (2D) main monitor using vive tracker for head tracker along with vive controllers.

005capture 006capture
Balderick commented 7 years ago

I think we can close this because of https://github.com/ValveSoftware/openvr/issues/605#issuecomment-321961939

Balderick commented 7 years ago

Can not reproduce what is described in penultimate post. Can get all steamvr tracked devices green but vive tracker is being used as a controller and not a global camera for head tarcking.

I am finding using "forcedDriver" : "null" instead of "requireHmd" : false to be more reliable and allows steamvr to start up much quicker.

Have had to add "powerOffOnExit" : false, to steamvr.vrsettings to try and keep all devices poweeed so that i can start osvr server with them on before starting steamvr. Every time a device is switched on or off it causes another instance of steamvvrr to be launched.

Vive Tracker needs to be set to winIndex 2 and 0xB3 usb hid featureset for micro usb to be used for tracking data instead of using dongle. Which i am struggling to apply permanently.

Balderick commented 7 years ago

Actually, i can reproduce what is described in third to last post.

osvr-vive needs to be in place for the aliass for vive tracker set to /me/head to be applied in steamvr.!