pushrax / OpenVR-SpaceCalibrator

Use tracked VR devices from one company with any other.
MIT License
627 stars 103 forks source link

Feature: Track Quest with an extra Vive Sensor #30

Open ironsalsa opened 3 years ago

ironsalsa commented 3 years ago

It would be great to add an extra Vive Tracker to an Oculus Quest to keep the spaces connected better in VirtualDesktop wireless mode. This feature idea was mentioned https://github.com/pushrax/OpenVR-SpaceCalibrator/issues/15#issuecomment-672171217 and https://github.com/pushrax/OpenVR-SpaceCalibrator/issues/6#issuecomment-678332234 .

Creating an issue so we can track interest - I'm re calibrating in VRChat with this setup every 10 minutes or so while dancing, and I would love to skip buying a Cosmos+wireless+etc just to make it smoother.

This software rocks so hard! Fingers crossed that this would improve the wireless Quest experience.

ironsalsa commented 3 years ago

Sidenote: I've ordered the longer Oculus Link cable, and will report back whether that stays in calibration better than VD.

pushrax commented 3 years ago

I definitely think this is doable and would work. It would still be an automatic calibration, and would allow any HMD to be used, regardless of drifting reference frames. I'd like to use this setup as well, though I've been extremely busy at work and haven't used VR much recently. It's possible I will implement this late Nov. or Dec. when work will settle down.

derpaufler commented 3 years ago

This would be really nice! I had a Quest 1 and had this issue too. Now I am waiting for my HP Reverb G2 (WMR) and have a Quest 2 as well, so this solution would be very nice to completely "disable" the inside-out tracking and for preventing HMD shift. I would be really appreciate your work into this!

derpaufler commented 3 years ago

I just bought a Vive Tracker 2018 and I look forward to see this feature soon! Thanks for your work! :-)

AtomicFall commented 3 years ago

I have the Oculus Q2 with the pro strap, so I was trying to figure out where best to mount a tracker. After taking some time, I think the top headstrap was the place to put it, or front top of the HMD.

The best place I thought it would be would be the top headstrap as with the pro strap, its hard and curved in the back as well as the tightening knob which makes mounting the tracker difficult. I chose the top headstrap as no matter what headset you use, there is almost always a headstrap of some type to mount to.

Another viable spot is the top of the HMD itself. As this would work well, especially in terms of accurate head tracking, it does add extra weight to the front of the HMD which could add discomfort during long play.

Thoughts?

derpaufler commented 3 years ago

The extra weight on the HMD has to be tested by myself, could be a bummer. At the end the position is not important for the tracking I guess, when it's at least visible for the Lighthouses? But it's important to mount it very tight as every movement will cause movement within VR. Therefore a velcro strap onto the HMD would be the best, but as described by you it could be too heavy.

pushrax commented 3 years ago

The only issue with mounting to the head strap is that it could move slightly during play, and move slightly more between sessions. However, that may not be too much of an issue in practise, especially if it's placed close to the HMD on the strap. I printed a bunch of these years ago https://www.thingiverse.com/thing:2706598, and tried one on the Quest 1 strap last time I started implementing this. When the HMD is on your head, the tracker seems very stable.

For between-session drift (where you take the HMD off your head, allowing the tracker to move more), a quick recalibration might be fine, since it should be super easy as you don't need to hold several things in one hand. It will just require pressing the Calibrate button and walking around a bit.

The top of the HMD could still be a good option, avoiding the extra torque from mounting on the front of the HMD, and if mounted securely could avoid recalibration forever.

AtomicFall commented 3 years ago

Guess Ill need to order another tracker soon but till be worth it

AtomicFall commented 3 years ago

I realized something today. Wouldnt it better to calibrate one tracker and just mount it somewhere stationary in a room where the basestations can see it? That way you dont ever have to worry about your own movement or that tracker moving. Just plug it set it on a shelf and let it stay powered indefinitely and the stations have a constant and consistent point of reference.

derpaufler commented 3 years ago

I think this would be good as well and additionally, but that would not make the drifting better, would it?

pushrax commented 3 years ago

An additional tracker in the room only helps to reduce lighthouse system drift, which is already negligible when set up correctly.

To determine the relative frame of reference between the lighthouse and quest systems, we need a lighthouse tracked device and a quest tracked device to be physically fixed together. If the two systems are stable, that can be done once (i.e. the current calibration process), but if one system is unstable, like the quest, the only way to correct for the instability is to track the unstable device with a stable tracker.

monstermac77 commented 3 years ago

To determine the relative frame of reference between the lighthouse and quest systems, we need a lighthouse tracked device and a quest tracked device to be physically fixed together.

Do they have to be both physically linked together and moving in space? Because if not, would it not be sufficient to just leave an Oculus/WMR controller powered on and affixed to a Vive tracker somewhere in the room?

Adil3tr commented 3 years ago

I definitely think this is doable and would work. It would still be an automatic calibration, and would allow any HMD to be used, regardless of drifting reference frames. I'd like to use this setup as well, though I've been extremely busy at work and haven't used VR much recently. It's possible I will implement this late Nov. or Dec. when work will settle down.

Do you have any other contact info, maybe through discord? I’d like to ask a couple question about the entire project of making SteamVR tracking work on non SteamVR headsets like the reverb.

mdovgialo commented 3 years ago

As far as I know Trackers have generally lower tracking precision than HMDs. You could already redirect Vive Tracker position to HMD using OpenVR Input Emu (one of the updated forks). But it results in a bit shaky head position.

Just mounting Vive puck on unstable HMD maybe could allow to remove initial calibration step, and make calibration continuous. The continuously working calibration, would smooth out tracker imprecisions, and would continuously, but slowly, update transformation matrix between tracked universes. In the end HMD and it's controllers would track normally, but alignment would slowly compensate any drifts, because normally during gameplay you move your head a lot and in different ways.

pushrax commented 3 years ago

@mdovgialo exactly, I want to use the tracker for the low frequency component and the HMD's built in tracking for the high frequency component.

pushrax commented 3 years ago

Do they have to be both physically linked together and moving in space? Because if not, would it not be sufficient to just leave an Oculus/WMR controller powered on and affixed to a Vive tracker somewhere in the room?

That would indeed work! However, many controllers these days are tracked by cameras on the HMDs (Rift 2, Quest, all WMR that I know of), so it wouldn't be robust in those cases. Though it would make recalibrating easy (just look at this pair of devices for long enough for the controller to start tracking).

monstermac77 commented 3 years ago

Do they have to be both physically linked together and moving in space? Because if not, would it not be sufficient to just leave an Oculus/WMR controller powered on and affixed to a Vive tracker somewhere in the room?

That would indeed work! However, many controllers these days are tracked by cameras on the HMDs (Rift 2, Quest, all WMR that I know of), so it wouldn't be robust in those cases. Though it would make recalibrating easy (just look at this pair of devices for long enough for the controller to start tracking).

Ah, brilliant! Well then, looks like there are plenty of options for making recalibration even easier (as you and I discussed at length a couple months ago here as well). Looking forward to the next OpenVR-SpaceCalibrator update, I ordered a Vive tracker today so I'll be ready :)

anonmon commented 3 years ago

Wanted to add, this could be an absolute boon for anyone wanting to homebrew their own headset, or use a 3DoF headset like the Oculus Go or anything else supported by RiftCat / Trinus PSVR and wanted to have them lighthouse tracked with relative ease. The thing though is, for those use cases, there is no native high frequency positional tracking to fall back on, at all. There's basically always an IMU even in the most basic of headsets, but no positional tracking to speak of. Would any hypothetical "Vive Tracker for HMD tracking" functionality be able to work just as well for the aforementioned more edge-case uses too?

guillefix commented 3 years ago

On the topic of easy callibration, and to avoid having to wait till the SLAM HMD re-detects a controller you look at. What if you could just touch the two sides of your HMD with your lighthouse-tracked controllers? This could be relatively accurate if you touch your headset in the same two spots everytime. Plus because it's two spots you can correct rotational drift two? (ehm at least on two axis I think)

monstermac77 commented 3 years ago

On the topic of easy callibration, and to avoid having to wait till the SLAM HMD re-detects a controller you look at. What if you could just touch the two sides of your HMD with your lighthouse-tracked controllers? This could be relatively accurate if you touch your headset in the same two spots everytime. Plus because it's two spots you can correct rotational drift two? (ehm at least on two axis I think)

I like this idea as well, at least exploring its feasibility!

Activusto commented 3 years ago

As someone who uses an additional 2 pucks to turn the WMR controllers from Inside Out to Outside in Tracking, this would be fantastic to clear off drifting. I only get severe drifting when using those 2 pucks alongside 3 for FBT thankfully

monstermac77 commented 3 years ago

Another motivation for this feature: https://www.reddit.com/r/MixedVR/comments/kltbz8/controller_shift_sometimes_after_restart/ghb1eyp/

Rather regularly at the start of play sessions, my Reverb G2 isn't able to determine its location in my room using physical light (measuring its distance from the corner of my TV, the edge of a carpet, etc) and so everything in SteamVR home moves with the HMD rather than the HMD moving within SteamVR home (very nausea inducing). This requires taking the headset off, and walking around/spinning it around for 5-10 seconds so that it can get its bearings on where it is in physical space. By using a Vive tracker, it'd be relying on the IR light from the basestations to orient itself in space, which (as we know from the superior tracking of the knuckles controllers and Vive trackers) is significantly more reliable and accurate.

derpaufler commented 3 years ago

Are there any news of your work in December @pushrax ? :-) would be great and thankful to hear about your progress as my vive tracker is waiting in it's box to help out soon! :-)

thehhmdb commented 3 years ago

Are there any news of your work in December @pushrax ? :-) would be great and thankful to hear about your progress as my vive tracker is waiting in it's box to help out soon! :-)

I'm looking forward to trying this out

kyleo1234 commented 3 years ago

I have the Oculus Q2 with the pro strap, so I was trying to figure out where best to mount a tracker. After taking some time, I think the top headstrap was the place to put it, or front top of the HMD.

The best place I thought it would be would be the top headstrap as with the pro strap, its hard and curved in the back as well as the tightening knob which makes mounting the tracker difficult. I chose the top headstrap as no matter what headset you use, there is almost always a headstrap of some type to mount to.

Another viable spot is the top of the HMD itself. As this would work well, especially in terms of accurate head tracking, it does add extra weight to the front of the HMD which could add discomfort during long play.

Thoughts?

i made a bracket for my puck that slides onto the q2 i personlay dont have a problem with it being off balance or anything but others might just what i came up with for esey atachment and removal

1611582183748

thehhmdb commented 3 years ago

I placed it at the back as a bit of a counter weight like this: Quest Index

derpaufler commented 3 years ago

@thehhmdb this looks good. Are you using this right now? I am waiting for the update of SpaceCal and my Vive Tracker is laying around since November without a use...

thehhmdb commented 3 years ago

@derpaufler I'm in the same situation as you. Whilst waiting, I've been essentially trying to make a wireless Index with those additional headphones, custom face gasket and the SpaceCal tracking will hopefully be the last part of the puzzle

derpaufler commented 3 years ago

Where are these Headphones from?

thehhmdb commented 3 years ago

They are custom made 3d printed case with Tectonic TEBM35C10-4 BMRs inside. I slightly modified the idea from here: https://prettygood3d.com/post/999028410814/quest-2-off-ear-bmr-v01

derpaufler commented 3 years ago

Nice. Would love to have a first party or buyable version of headphones for the Quest 2.

kyleo1234 commented 3 years ago

im also waiting for the space call update to bring this feature but was testing out using other programs such as openinput emulator but becasue its bugy and broken and not being updated any more my atempt failed

Yersi88 commented 3 years ago

Any updates on this amazing feature? Seems like it's opened for ages and would be a game changer for a lot of people!

virtualmisterl commented 3 years ago

I am also very interested in this feature & following this. As someone who has a yawvr motion simulator & a reverb g2, having the headset use steam tracking really is the only decent way I'll be able to have motion compensation for the simulator movement.

Any update is eagerly awaited & very much appreciated. If this is something that is still a work in progress & not abandoned, then I will design a good solid 3d printable mount for the vive tracker to fit on the g2 & share the design

virtualmisterl commented 3 years ago

So I've completed a 3d printable design for vive tracker mount on reverb g2. Tracker seems to mount solid

20210301_222528

https://www.thingiverse.com/thing:4780501

Hopefully this feature is still in the works for the future 🤞🙏 Otherwise, does anyone know any other solutions to make the hmd track from a vive tracker

derpaufler commented 3 years ago

Nice job, nice design, thanks! But I think we will never get an update :-(

Am 02.03.2021 um 00:22 schrieb virtualmisterl notifications@github.com:

 So I've completed a 3d printable design for vive tracker mount on reverb g2. Tracker seems to mount solid https://www.thingiverse.com/thing:4780501 Hopefully this feature is still in the works for the future. Otherwise, does anyone know any other solutions to make the hmd track from a vive tracker

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

virtualmisterl commented 3 years ago

Thanks I hope i get to use it lol. I think/hope we will from what I've read. people get busy with lots of other things & im hoping its just a matter of priorities for now

botekastel commented 3 years ago

Any updates for this request?

byancey commented 3 years ago

@pushrax Haven't seen you here in a while. I realize you are probably busy with other life priorities, etc., but I thought you had mentioned somewhere that you started some development work on the feature to use a Vive tracker to keep play spaces in sync before you got pulled in other directions. Any chance your work-in-progress is available on a branch somewhere to take a close look at? Perhaps others in the community could use any work you've done to date to move this forward in your absence. Thanks!

ironsalsa commented 2 years ago

I'll put this here too - is anyone interested in getting paid to implement this? My company would absolutely pay for the work to get this coded in, and I'd prefer to pay someone than have to learn C++ myself. @pushrax I'm betting it's more a time issue than a money issue for you, but if you're interested that would be ideal.

botekastel commented 1 year ago

A fork with this feature can be found here: https://github.com/bdunderscore/OpenVR-SpaceCalibrator/releases/tag/v1.4-bd_-r0

monstermac77 commented 1 year ago

A fork with this feature can be found here: https://github.com/bdunderscore/OpenVR-SpaceCalibrator/releases/tag/v1.4-bd_-r0

Could you announce this on https://www.reddit.com/r/MixedVR/? There would certainly be a lot of community interest who would also be happy to help debug.

pushrax commented 1 year ago

@bdunderscore's work on this will be included in the next release of Space Calibrator. They posted their roadmap to the next release

ajlennon commented 1 year ago

We're trying to get this built up here now for testing with the Oculus..

[Edit: Just realised @bdunderscore has kindly created a release of the fork! Yay we'll try here]

ajlennon commented 1 year ago

The lad says it's working for him! Nicely done! Thanks will leave him testing and feed back anything we find. Great work!

ironsalsa commented 1 year ago

Holy moly, I never thought this would come! I'll test it too and report back. You're a hero, @bdunderscore !

ajlennon commented 1 year ago

Feedback is "this is absolutely brilliant" totally works well. He says he doesn't have to keep recalbrating all the time and it works very very well and makes a HUGE difference. Couple of points

All of that said WOW - BRILLIANT WORK @bdunderscore and all - THANKS VERY MUCH - You have given me one very happy 13 year old!

ironsalsa commented 1 year ago

Yep this absolutely works and is a game changer! I just taped on the insides of a busted foot strap to the top and away I went. Now when calibration gets wonky in VRChat you just recalibrate in game no problem. Seems to necessarily add a little wobbliness to tracking as it's autofixing Quest's errors, but that's a huge win over totally losing tracking on any issue.

TL;DR @bdunderscore I would very much put something in a tip jar for your work!

koshisan commented 1 year ago

Idea: Wouldn't that work without an extra tracker, at least to get an initial estimate on startup? The idea would be that my hip tracker (vive) and my headset (quest, but should not matter) are always the same distance from another/ same orientation. At least when standing and looking forward while starting up. It isn't perfect of course, but might be good enough in some situations... Of course this cannot be used for continuous calibration, since you will want to move around eventually...

Yersi88 commented 1 year ago

I'm afraid this would not work. You cannot base calibration on single point in space, even if fixed distance, you would need to move the two devices together to accomplish any kind of meaningful calibration. Simple explanation: if you do such single point calibration and then apply it and move the devices to different position in real space (together) they will end up in different position in their shared tracking space. They will move by different amounts, that's why you need to move the two device together through many points while doing the calibration.