HipsterSloth / PSMoveSteamVRBridge

PSMoveSteamVRBridge is a client for PSMoveService that computes the pose and button data of PSMove/DualShock4/PSNavi controllers and routes it into SteamVR.
Apache License 2.0
144 stars 47 forks source link

PSEye in wrong position in SteamVR using DK2 #67

Open HipsterSloth opened 5 years ago

HipsterSloth commented 5 years ago

Moving this issue here from PSMoveService for @MovablePizza Hi there!

Currently running a DK2 headset with 2 PSeyes and 1 move controller (just using the one while I get it set up). My issue is that through calibration everything works great and the motion control tracking is incredible, but once I go into SteamVR the PSEyes appear several feet above my head and to my left, taking the controller with it.

I have no idea what I could be doing wrong, it was working fine yesterday but for whatever reason I cannot get this to go back to normal.

I've tried recalibrating several times, moving the cameras to new positions etc.

For reference this is where it thinks my cameras are: image

This is where they actually are: image

In the actual calibration area with the cameras they are perfectly in the correct position, it's only when I open SteamVR that it changes.

More Photos: image

HipsterSloth commented 5 years ago

So just to be clear, you are seeing the calibration pop-up in steamvr:

image

And after you hold the controller to your face and then to the SELECT+START button combo the cameras aren't lining up? You might try the button combo multiple times to see if it rights itself.

This issue seems familar...

I get the "raw" tracking space position of of the oculus headset using IVRServerDriverHost::GetRawTrackedDevicePoses(). I'm wondering if there is something specific about the Oculus headset that giving SteamVR bridge an offset HMD transform. Like if the Oculus headset is calibrated for a seated position it causes an issue?

FWIW you can manually edit the tracking space alignment in %appdata%\PSMoveSteamVRBridge\PSMoveSteamVRBridgeConfig.json. Check out the "world_from_driver_pose" values.

The position offset is in meters.

The orientation is a quaternion, which isn't exactly a user friendly value to edit. A long time ago someone made a small tool for PSMoveService that given a facing angle would spit out the quaternion values: https://github.com/cboulay/PSMoveService/tree/master/misc/PS_Move_Angle/PS_Move_Angle

I've pre-build that here: Rotate_Y_axis.zip

It looks like this: image

I think this is yet another reason I need to replace the HMD alignment gesture with a proper HMD alignment tool like I used to have in PSMoveService. That'll take a bit though. In the mean time let me know if any of this works.

MovablePizza commented 5 years ago

I'm not even getting the prompt, although holding start+select seems to make some sort of difference.

I'll keep you updated, currently trying to recalibrate everything and hoping that works.

On Sat, Dec 8, 2018 at 6:38 PM Guido Sanchez notifications@github.com wrote:

So just to be clear, you are seeing the calibration pop-up in steamvr:

[image: image] https://user-images.githubusercontent.com/16793853/49683809-88571880-fa7f-11e8-9e51-6fe9114c0766.png

And after you hold the controller to your face and then to the SELECT+START button combo the cameras aren't lining up? You might try the button combo multiple times to see if it rights itself.

This issue seems familar...

I get the "raw" tracking space position of of the oculus headset using IVRServerDriverHost::GetRawTrackedDevicePoses(). I'm wondering if there is something specific about the Oculus headset that giving SteamVR bridge an offset HMD transform. Like if the Oculus headset is calibrated for a seated position it causes an issue?

FWIW you can manually edit the tracking space alignment in %appdata%\PSMoveSteamVRBridge\PSMoveSteamVRBridgeConfig.json. Check out the "world_from_driver_pose" values.

The position offset is in meters.

The orientation is a quaternion, which isn't exactly a user friendly value to edit. A long time ago someone made a small tool for PSMoveService that given a facing angle would spit out the quaternion values:

https://github.com/cboulay/PSMoveService/tree/master/misc/PS_Move_Angle/PS_Move_Angle

I've pre-build that here: Rotate_Y_axis.zip https://github.com/cboulay/PSMoveService/files/2659510/Rotate_Y_axis.zip

It looks like this: [image: image] https://user-images.githubusercontent.com/16793853/49683941-5a72d380-fa81-11e8-9372-b27ecea4610a.png

I think this is yet another reason I need to replace the HMD alignment gesture with a proper HMD alignment tool like I used to have in PSMoveService. That'll take a bit though. In the mean time let me know if any of this works.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/HipsterSloth/PSMoveSteamVRBridge/issues/67#issuecomment-445442829, or mute the thread https://github.com/notifications/unsubscribe-auth/ArkAkWR82i7rb0yPxv_Ry1h0bgbUErxCks5u23qigaJpZM4ZJh4O .

MovablePizza commented 5 years ago

Currently I'm getting a compositor error, so I'll try and get that fixed first.

MovablePizza commented 5 years ago

Managed to fix it by using recalibrating and doing SELECT+START.

Something changed but I'm not sure what.

Tollanador commented 5 years ago

Do you remember if you changed USB ports for any of the cameras or anything?

I've also had this problem where the HMD is offset from everything else using ALVR and ping pong ball based HMD. What I do to make sure it works as expected I always turn the HMD Light on, start PsMoveService, then start the PsMoveFreepieBridge and select appropriate options, then I make sure my HMD is positioned in a place where all cameras can see it properly, facing the 'front' direction (not that it should matter at this stage, as I use GearVr. However if IMU's are running and giving orientation it may make a difference, I really don't know it's pretty complicated using all these different systems). I then fire up FreePie and select appropriate script and run it, making sure it is giving continuously updated position feedback in the diagnostic watch window. THEN I start ALVR on PC and at a similar time I start ALVR on phone and insert it into gear. I am then super careful to make sure that I'm roughly in the middle of the play-space facing the front when I put the headset on, if I am facing the wrong direction at this point it seems to cause misalignment issues in SteamVR, I suspect this is a GearVr issue in my case.

I do not use the calibration popup, and instead use ALVR to offset my HMD to match the controllers, it's usually out by a small amount, mostly in the Z axis (too far forward) and a little in the X (too far to right, just a little).

Doing that alignment calibration with start-select seems to cause more problems than it solves, and I'm not sure why that is.