SteamVR Developer Hardware

SteamVR Developer Hardware

MMSGVR May 23, 2018 @ 2:12am
Persistent SteamVR Setup/coordinates
Hello all,

I am in the middle of developing a VR experience for a specific environment. I've re-modeled this environment in detail. I use some simple linear algebra[nghiaho.com] to align the virtual room with the physical room by placing 3 markers in the room and measuring their corresponding SteamVR coordinates. I've done these things before on other VR platforms (Google Tango, and custom VR hardware, etc), so I'm confident my alignment process is done correctly. As soon as I hit the align button, my room snaps right in place where I want it to. I finished doing this yesterday.

Today I continued developing the experience when something unexpected occurred. After I cleaned the lenses of my Vive HMD (the experience had been running correctly already for 3 minutes), and I put the HMD back on again, the room had flipped. I thought it could've been a tracking issue since I had obscured the HMD from the lighthouses while cleaning it, but walking around or a reset of the app didn't resolve the problem immediately. Only a hardware reboot "kinda" resolved the issue. My alignment was off by about a meter after the hardware reboot.

This is extremely odd to me. The math doesn't really allow for a meter-off misalignment. It either aligns (correct), or it's off by a ridiculous transformation (incorrect). I usually place the SteamVR Controller/PlayArea hundreds of meters away from the scene, and have it reposition itself correctly through the alignment. Only by remeasuring the markers in space did I managed to fix the alignment. This has never happened to me in coordinate systems of which I know persist through time.

To most plausible explanation to me is: SteamVR changed its coordinate system in some way while running (due to it having difficulties tracking the HMD? or due to how it is being used?). Can anyone confirm that this actually happens? If so I need a way to turn this off, because it poses a huge problem for me. We sold a project to run for a good amount of time, and we can't re-calibrate the room every other day.

Any insights is greatly appreciated :)
< >
Showing 1-15 of 15 comments
bendotcom  [developer] May 23, 2018 @ 10:15am 
The 1m offset is probably a bug or glitch of some kind. But slight changes in the alignment between virtual and physical coordinates is expected. The system prioritizes the virtual experience over maintaining alignment to physical world coordinates.

Right now we don't have any method to offer you to repeat those physical coordinates better than what you are already seeing.

If you need to be able to achieve this right now, your best bet is probably to build a system which includes a fixed tracking puck and make your coordinates relative to that puck (which will enable you to compensate for virtual-physical coordinate system shifts).
MMSGVR May 24, 2018 @ 1:53am 
Thank you for this bendotcom!

If you don't mind I'd like to understand a little more about this.

I understand the desire to prioritize the virtual experience over maintaining alignment. But is this a temporary measure to deal with certain conditions? Or does the system permanently overwrite the old parameters and will never return to these again?

Thank you for the suggested solution; it will definitely be our fall back solution. Having said that I don't need this to work this month or the next. It actually only has to work at the end of September. Is an option to disable this automatic correction something SteamVR would consider pushing into a release before September? It doesn't have to be as fancy or prominent as a checkbox in the Settings menu. A simple value in a .json file somewhere works equally well for us.

Thank you!
MMSGVR May 25, 2018 @ 1:32am 
After working out the idea you've suggested bendotcom, we've come to the conclusion it is very unpractical in our particular case.

We are looking to develop 4 HTC Vive Pro systems to work in the same room all using the same SteamVR Tracker 2.0 system (4 basestations). They all need ±5mm alignment with the physical room. These installations will run for 8~12 hours every day for two years. The problems we face with using a stationary puck to achieve alignment:
* We would require 4 pucks. 1 for each installation.
* It requires continuous power.
* The only place we can mount the puck would be on a rod that is coming down from the ceiling (4m above the floor). This becomes unpractical when it comes to syncing, turning it on/off and stuff like that.

Before we found out that these misalignments can occur by the system adjusting itself, we were confident that we could make an installation using SteamVR that needed no ushering or operating from dedicated staff, however now we're looking at a system that requires quite a bit of operating to stay functional.

Is there a process I can follow to push for a feature request in SteamVR? Namely the option to turn the adjustments off? We still have a few weeks before we reach a point of no return in our project. We don't necessarily need the feature by then, but some insight on what's coming in the near future can help us make a weighed decision.

Thank you!
jason May 25, 2018 @ 3:18pm 
We would also very much appreciate an option to turn off the automatic correction. In our case, it will be essential of matching virtual objects to physical objects (some tracked props, some objects, e.g., a table since it won't move) and to have two users interact in the same physical space. I would think this this would be essential for a good number of professional applications.
bendotcom  [developer] May 25, 2018 @ 4:09pm 
Unfortunately it's not as simple as "turn off the automatic correction". Matching physical and virtual objects (essentially AR) requires additional features which we don't have at this time.
MMSGVR May 27, 2018 @ 6:11am 
Thanks for replying and providing this insight bendotcom.

I'll take your answer for final, but for the off chance that I was being misunderstood (which is the impression I get from your answer), I'll rephrase it simpler:

If I glue a tracked object to the wall, and cement my lighthouses into the building's structure; all I want is that under normal conditions, the tracked object's coordinates/orientation report the same values (allowing some margin of error of course). The coordinates are allowed to be off if someone walks in front of it, or if glitter dusts is thrown around, but once conditions return to normal, I expect the same reported coordinates.
This essentially allows us to store coordinates between sessions without the need of a reference tracked object, which is what we're really after.

To be honest, I'm surprised this isn't an option already. I realize SteamVR makes no promises about AR, so I'll leave it at that.

I noticed OpenVR is open source, so I'm going to explore my options. Not sure if OpenVR even takes care of this, but I gotta start somewhere :) I don't mind writing and building it myself if that's a possibility. I'll post whatever I find out in this thread.
MMSGVR May 29, 2018 @ 1:09am 
Originally posted by jason:
We would also very much appreciate an option to turn off the automatic correction. In our case, it will be essential of matching virtual objects to physical objects (some tracked props, some objects, e.g., a table since it won't move) and to have two users interact in the same physical space. I would think this this would be essential for a good number of professional applications.

Hi jason.

If you have a setup with 3 or 4 base stations using SteamVR Tracking 2.0, drop me a line. I can try and help you out. If I had access/budget to the hardware I'd have bought it myself, but I don't.

If SteamVR Tracking 2.0 works similar to the old lighthouse system, then the SteamVR scene should see 3 or 4. We can use these as the markers for the alignment process. This effectively allows us to not need to calibrate the room anymore.
bendotcom  [developer] May 29, 2018 @ 9:31am 
Actually that's an interesting idea. I had not thought the API leaked any information currently that would let you do what you want, but if you store physical positions as coordinates relative to the basestation closest to 0,0,0, it might work.
MMSGVR May 30, 2018 @ 5:36am 
Well I decided to bite the bullet and just purchase two complete HTC Vive Pro sets (which includes two base stations 2.0 each).

Hopefully I can pick them up tomorrow, and have it all up and running before the weekend. Will let you go know about how it goes.
jason May 31, 2018 @ 10:49am 
We are in the process of ordering and should receive them next week.

Is there not a way to order extra 2.0 lighthouses by themselves? I see what Vive is calling a 2.0 accessories kit but the hardware in the picture looks like 1.0.



MMSGVR Jun 2, 2018 @ 7:51pm 
You need to be careful there. Here are the things I've seen what you can order now:

HTC Vive Pro standalone HMD
HTC Vive Pro HMD + 1.0 base stations and controllers
HTC Vive Pro HMD + 2.0 base stations and controllers

It's the last one you're interested in.

In a few months the 2.0 base stations should be available separately. But that doesn't work for our timeline, so I had to purchase 2 of the last option.

I received mine last Friday. I'll set them up and test them next Monday.
MMSGVR Jun 5, 2018 @ 8:53pm 
Alright. I can confirm that this works.

The coordinates are not persistent, so storing them makes no sense, but you can at least continuously realign the virtual to the physical based on the basestations (I use 3). I do this every frame, but I think it'll work just as well if you do it once a second, and maybe interpolate a little bit to smoothen things out. The responsiveness of alignment here is not so important, since from my experience it changes only occasionally.

Thanks for all the help guys.

On another note, setting up a system with 4x 2.0 basestations is not as smooth and easy as setting up 2x 1.0 basestations. SteamVR is wonky as hell. Doesn't always boot well, crashes sometimes, and I get jittery tracking. One of my basestations is not picked up anymore at all after about 3 hours of use.

I guess now all I can do is report bugs, find out what causes errors and help the team steady this ship as fast as possible.
jason Jun 10, 2018 @ 1:16pm 
We demoed at a conference last week with the Vive Pro. We ended up using only two 2.0 lighthouses even though we had four 2.0 lighthouses (i.e., we purchased two full Vive Pro sets) as we did not want to risk any unknowns. That sounds like we made a good decision based on your experience with four 2.0 lighthouses. Interestingly we had almost no interference issues with others in the same room who were having interference problems with 1.0 lighthouses. Others with 1.0 lighthouses were having problems, likely due to the conference center only having thin curtains (albeit we may have been more lucky by just being in a part of the room that wasn't seeing other lighthouses).

We planned on using the Pro with the HP Z Pro VR Backpacks. Unfortunately the HP Z Pro backpacks are not compatible with the Vive Pro due to cabling inconsistencies. We did not experiment with trying different adapters and just went with the standard wiring option with a standard desktop, but cable adapters may have worked. We returned the HP Z Pro backpack and will now try the HP Omen VR backpack. That might have the same cable connectivity problems, but the decision was also based on the NVidia 1080 graphics card in the Omen vs Quadro P5200 in the HP Z Pro as we figured it will be better to have more consistent hardware between machines (we are using 1080s in our development machines).
@MMSGVR
We are building a system with similar requirements and currently working out our alignment issues. Would you mind sharing more details about your algorithm to continuously realign the virtual to the physical based on the basestations?

Has this continued to provide you with the stable multi user aligned environment you were building?
dslnc May 2, 2019 @ 11:43am 
Originally posted by bendotcom:
If you need to be able to achieve this right now, your best bet is probably to build a system which includes a fixed tracking puck and make your coordinates relative to that puck (which will enable you to compensate for virtual-physical coordinate system shifts).


I have been suffering similar issues as @MMSGVR describes and it has been haunting me since I never have managed to detect a pattern to when it when it was provoked. However having a basestation put low an another one high I would most certainly need a recalibration each time I would close and reopen my app.

I am doing exactly what @bendotcom suggests with a calibration tracker to calibrate physical, tracked and Unreal 3d space ( in my case) and it works rather fine. However I have quite some issues with the tracked space(steam vr) being slightly rotated on the z axis (unreal coordinarte system) which makes the calibration less precise the longer you move away from the calibration point. It has to be said that it mainly happens when not having a hmd attached (I dont need it for my setup)

What would be the best way to work around that issue?

The best thing I can think of is generating 8 reference points making a 3d cube (the size of my tracked space) to compensate tracked coordinates interpolated relative to the position in my 3d cube (not sure what is the right math term for that)

Cheers
Søren


< >
Showing 1-15 of 15 comments
Per page: 1530 50

Date Posted: May 23, 2018 @ 2:12am
Posts: 15