Jump to content

Vive Focus 3 with Tracker 3.0 as head tracker


OneBonsai

Recommended Posts

Hi there,

I'm looking to integrate the HTC Vive Focus 3 business streaming solution with multiple (15) reliable Vive 3.0 trackers, as the Focus 3 supports only up to 2 controllers/wrist trackers.

I've tested the OpenVR Space Calibrator but found it inconsistent, experiencing visible lag between the two systems. I've noticed that others have managed to set the trackers as TrackingOverrides for "/user/head" and got that to work as well.

However, I'm currently facing an issue where my image is slightly skewed, even though the tracker is aligned and set as the camera. I haven't figured out how to set a permanent offset for the headset tracker. At the moment, I'm adjusting the position in the head section of the tracker config by uploading it with the lighthouse_console.exe, which looks as follows:

 

Quote

    "head": {
        "plus_x": [
            1,
            0,
            0
        ],
        "plus_z": [
            0,
            0,
            -1
        ],
        "position": [
            0,
            0,
            0.13150000001303852
        ]
    },

This without success so far. If you have any clues on which parameters to tweak please let me know.

Thank you!

Link to comment
Share on other sites

@OneBonsai

Howdy!

I think i'm missing the question here -- if i understand correctly, you're overriding the output of /user/head and then getting an unexpected head position in the headset. This sounds like the desired output. I'm not sure what causes the lag that required one to use such a workaround though, so I can't comment fully on the wisdom of trying to use the head as an output position.  

Trying to interpret this another way - if you're using a tracker as a proxy for the head position, then the geometry/orientation of the puck would be different than that of an actual headset. "forward"/etc might not be what you would expect and would require some fiddling. 

Link to comment
Share on other sites

We build training simulators for police, when they notice a slight lag or de-sync they lose immersion and blame the software. We have a fully working setup with Vive Pro 2 wireless and 3 accessories per person and the tracking hasn't let us down ever so far. I tested the htc vive focus 3 with openvr space cal about a year ago and found it wasn't good enough for our use case compared to our existing setup. Still we like the Wifi 6E streaming possibilities and the easier setup that the focus 3 offers and want to combine all the good stuff of both worlds.

So yes, I'd like to fiddle, if you have more information on how to solve/fiddle this I'd be glad to hear it.

Link to comment
Share on other sites

 @OneBonsai

Howdy! 🙂

 

Thank you for sharing the specifics of your setup and the challenges you're facing. It's clear that maintaining a high level of immersion is crucial for your training simulators, and every detail counts.

Regarding the use of the head position as the position of the puck, I understand that this approach is intended to optimize tracking accuracy and reduce latency. This decision appears to be driven by the need for precise, real-time tracking, which is essential in your use case. The differences between the head and puck in terms of tracking behavior, such as default polling frequency and interpolation settings, could indeed play a significant role in the performance you're observing.

To delve deeper into this, it would be helpful to know more about the technical environment of your setup:

Engine and SDK Details:

  • What game engine are you using, and which version is it?
  • Are you utilizing our native 'Wave' SDK, OpenXR, or another SDK? Knowing the version of the SDK and, if applicable, the version of the XR interaction system in Unity, will be crucial.
  • These details are important as the solution might involve tweaking engine settings or modifying how data is polled from the input system.

Physical Environment Considerations:

  • Reflective surfaces and physical obstructions in the tracking environment can affect tracking quality. Evaluating these factors could provide insights into the discrepancies you're experiencing.

Firmware of the Trackers:

  • Ensuring that all trackers are updated to the latest firmware is essential. Here's a link for reference and guidance on updating the firmware: Vive Tracker Firmware Update.

OpenXR Backend:

Finally, revisiting the initial configuration and recalibration of devices could be a necessary step. In some cases, recalibration can significantly improve tracking performance and accuracy.

We're always excited to hear about more great realistic training simulations, and your persistence is commendable. I'm eager to assist in resolving these challenges. Any additional information you can provide regarding the above points will be instrumental in finding a suitable solution.

Thanks,
Alex

Link to comment
Share on other sites

@OneBonsaiI'd be remiss if i iddn't mention the developer guidelines which may help with some of the orientation/etc questions https://developer.vive.com/resources/hardware-guides/vive-tracker-developer-guidelines/

Along with another great overview here:



And perhaps some other ways to offset position and set the role using other mechanisms

https://forum.htc.com/topic/9821-tracked-object-orientation-problem-htc-vive-tracker/#comment-41135 


https://forum.unity.com/threads/how-to-flip-vive-tracker-from-horizontal-to-vertical-zero-position.879517/

 

Link to comment
Share on other sites

@OneBonsai

Another line of thinking -- configuration other than just firmware and environment:

If unity:
Don't forget to check the 'move deadzone' and 'drag threshold multiplier' settings here and tune as appropriate
https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.5/manual/ui-setup.html

and if using interactables, then there are a number of smoothing/damping options that would cause this as well
https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.5/manual/general-setup.html

Other folks seem to report having general success at getting updates from these at 90hz as well (and are able to swing this on a rope around their head at high speed and get reliable updates)
So another approach would be to look at the debugger and log the behavior
https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.5/manual/debugger-window.html

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...