Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spine Yaw Compensation to keep spine trackers from drifting #1243

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

jabberrock
Copy link

@jabberrock jabberrock commented Nov 16, 2024

Prevents the spine trackers from drifting, by nudging them to stay aligned to the headset.

Players are usually standing facing forwards or walking forwards, where the spine trackers are aligned to the yaw of the headset. However due to yaw drift, the spine trackers will eventually rotate to the side, requiring a reset. This feature adds a small centering rotation to compensate for the yaw drift. (For now, this compensation only activates when your trackers are pointing "up", e.g. when you're standing or sitting straight up.)

The correction amount should be approximately the maximum yaw drift of your gyroscope (0.3 degrees/sec is a good default).

image

SlimeVR/SolarXR-Protocol#154
SlimeVR/SolarXR-Protocol#155

@github-actions github-actions bot added Area: Skeletal Model Deals with the model of the skeleton and its pose Area: Application Protocol Related to communication with apps like the GUI, overlay, games Area: Translation Improvements or additions to translations Area: Server Related to the server labels Nov 16, 2024
@Eirenliel
Copy link
Member

Please rebase SolarXR, it was merged.

@Eirenliel
Copy link
Member

I think this can be enabled for legs too since it only works when standing up! Ideally, the setting would be part of Drift compensation setting that's now with 3 selectors: Off, Static/Simple (Old one), Dynamic/Advanced (this one). Then for this to have a setting of compensation speed, maybe a slider in 0.05deg/min intervals, and a selector for which parts to apply it: Upper body, Legs, Arms, Feet. There also needs to be an infomation that Dynamic only works with HMD and Static can work without it.

But this can be merged after review already, and settings can be added in the future. Very excited to RC this!

@jabberrock
Copy link
Author

jabberrock commented Nov 16, 2024

@Eirenliel thanks taking a look! Definitely can look into putting this into the drift compensation setting later. (Or do you think I should just update it now?)

If this works well, I was going to add alignment between upper leg and lower leg. Maybe even foot?

But I'm not sure if upper leg can be aligned to the spine. For example, when I stand straight, I notice that my legs are twisted slightly away from my body. I was thinking maybe "balancing" the left and right legs so that they're at the same angle away from the spine...

@Eirenliel
Copy link
Member

If this works well, I was going to add alignment between upper leg and lower leg. Maybe even foot?

Upper and lower leg should have the same yaw, so they're already averaged.

But I'm not sure if upper leg can be aligned to the spine. For example, when I stand straight, I notice that my legs are twisted slightly away from my body. I was thinking maybe "balancing" the left and right legs so that they're at the same angle away from the spine...

It shouldn't matter if you reset the same way too. Also since it's a setting people can turn it off if it doesn't work for them and we can improve it in the future.

(Or do you think I should just update it now?)

If you want, we're not merging util Monday anyway.

Also pelase fix build errors (lint)

@Eirenliel
Copy link
Member

This needs to be Beta'd before it can be merged.

@jabberrock
Copy link
Author

@Eirenliel How do I get the build system to rebuild, and how does the beta process work? Sorry, it's my first PR. Thanks!

@Erimelowo
Copy link
Member

Since you're a first-time contributor, someone else needs to add their approval for the CI to run.

@jabberrock
Copy link
Author

Sigh oops I didn't realize there was a Java linter too

@Eirenliel
Copy link
Member

For Beta you need to create a post in beta-testing-forum on Discord! If you can't, ask some contributors

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Application Protocol Related to communication with apps like the GUI, overlay, games Area: Server Related to the server Area: Skeletal Model Deals with the model of the skeleton and its pose Area: Translation Improvements or additions to translations Type: Enhancement Adds or improves a feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants