diff options
-rw-r--r-- | ftnoir_tracker_rift/ftnoir_tracker_rift.cpp | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp index 4e9dd7a3..eb05d5f9 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp @@ -19,6 +19,7 @@ Rift_Tracker::Rift_Tracker() bEnableY = true; bEnableZ = true; #endif + isCalibrated = false; should_quit = false; for (int i = 0; i < 6; i++) newHeadPose[i] = 0; @@ -68,7 +69,7 @@ void Rift_Tracker::StartTracker(QFrame* videoFrame) } isCalibrated = false; MagCal.BeginAutoCalibration(SFusion); - SFusion.SetMagReference(SFusion.GetOrientation()); + } } @@ -76,22 +77,25 @@ void Rift_Tracker::StartTracker(QFrame* videoFrame) bool Rift_Tracker::GiveHeadPoseData(double *data) { if (pHMD.GetPtr() != NULL) { -#if 0 - if (SFusion.IsMagReady() && !isCalibrated ){ - SFusion.SetYawCorrectionEnabled(true); - QMessageBox::warning(0,"OpenTrack Info", "Calibrated magnetic sensor",QMessageBox::Ok,QMessageBox::NoButton); - isCalibrated = true; - }else{ - if(isCalibrated){ - isCalibrated = false; - QMessageBox::warning(0,"OpenTrack Info", "Lost magnetic calibration",QMessageBox::Ok,QMessageBox::NoButton); + + if (MagCal.IsAutoCalibrating()) + { + MagCal.UpdateAutoCalibration(SFusion); + if (MagCal.IsCalibrated()) + { + if(isCalibrated == false){ + //QMessageBox::warning(0,"OpenTrack Info", "Calibrated magnetic sensor",QMessageBox::Ok,QMessageBox::NoButton); + //fprintf(stderr,"magnetic calibration complete\n"); + isCalibrated = true; + } + //Vector3f mc = MagCal.GetMagCenter(); + //SetAdjustMessage("Magnetometer Calibration Complete\nCenter: %f %f %f",mc.x,mc.y,mc.z); } - } + //SetAdjustMessage("Mag has been successfully calibrated"); + } - // Magnetometer calibration procedure - MagCal.UpdateAutoCalibration(SFusion); -#endif Quatf hmdOrient = SFusion.GetOrientation(); + float yaw = 0.0f; float pitch = 0.0f; float roll = 0.0f; |