Jump to content

SpaceNoid78

Members
  • Posts

    1
  • Joined

  • Last visited

Posts posted by SpaceNoid78

  1. Hello folks,

    I am running into a problem interfacing with the OpenVR SDK when using two trackers with one controller. Specifically, the IVRCompositor::WaitGetPoses( ) function will sometimes return incorrectly transformed matrices to my C++ application. I was wondering if anyone has experienced a problem like this before, or if there is a known solution.

    The scenario: I place two VIVE trackers about 1 foot apart from one another, facing the same direction. I would expected that the matrices of each tracker (stored in TrackedDevicePose_t -> mDeviceToAbsoluteTracking) will be very similar. If I power up in this order - Tracker 1 On, Tracker 2 On, Controller On - the matrices of both trackers are indeed almost identical.

    However, if I power on in a different order - Controller On, Tracker 1 On, Tracker 2 On - The matrices of one of the trackers will be rotated exactly 90 degrees from what I would expect. The other tracker still retains the correct values/orientation as before. So now, even though both physical trackers are sitting in similar positions and orientations in the real world, their matrices returned by the VIVE SDK's WaitGetPoses( ) are different.

    In the same session, I can power on/off the controllers in different orders to change whether I get the correct or incorrect matrix values from the tracker.

     

    I am certain this is not a problem with my tracked device indices, nor a problem with overflowing array bounds, because the XYZ Position of the "Bad" Tracker is always correct - it is only the rotation of the tracker about that position in space that changes. So at least one value in every row in the matrix is what I expect.

     

    The correct Tracker[index == 3]  4x4 matrix (left) vs. the incorrect Tracker[index == 3]  matrix (right)

    [ -0.99,  0.00, -0.17, -0.20 ]                       [ 0.99,  -0.05, -0.12, -0.20 ]

    [ 0.00,  1.00,  0.00,  0.72  ]                       [ -0.01,  0.00, -0.990.72  ]

    [ 0.01,  0.00, -0.99,  1.38  ]                       [ 0.05,  0.99,  0.00,  1.38  ]

    [ 0.00,  0.00,  0.00,  0.00  ]                       [ 0.00,  0.00,  0.00,  0.00  ]

     

    To specify the configuration I am using, my OpenVR SDK is version 1.0.10, my VIVE trackers are the newer model with the blue triangle, and my base stations are the older model.

     

    If anyone knows of a fix, workaround, or simply something to try, I would be very grateful for the help! Right now I am thoroughly stumped!

     

    Thanks!

     

    @chengnay

     

×
×
  • Create New...