From 5368b98cd09f61a1e3344efed9ad90ac9989726e Mon Sep 17 00:00:00 2001 From: mm0zct Date: Sat, 29 Jun 2013 19:26:59 +0100 Subject: Merged in fixes to hydra and rift code, along with a bug in the pitch inversion of FTNoIR itself. Also added an include directory the Rift needs which was absent before. --- ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui | 165 ++++++++++++---------- ftnoir_tracker_rift/ftnoir_tracker_rift.cpp | 20 ++- ftnoir_tracker_rift/ftnoir_tracker_rift.h | 5 + 3 files changed, 105 insertions(+), 85 deletions(-) (limited to 'ftnoir_tracker_rift') diff --git a/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui b/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui index 789d2d25..eaf5b9d6 100644 --- a/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui +++ b/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui @@ -1,7 +1,7 @@ UIRiftControls - + 0 @@ -45,78 +45,97 @@ - - - - Roll: - - - - - - - Yaw: - - - - - - - - 20 - 16777215 - - - - Qt::LeftToRight - - - - - - - - - - Pitch: - - - - - - - - 20 - 16777215 - - - - Qt::LeftToRight - - - - - - - - - - - - - - 20 - 16777215 - - - - Qt::LeftToRight - - - - - - + + + + + + + Pitch: + + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + + + + Yaw: + + + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + + + Roll: + + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + + + + diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp index 367ab389..4e9dd7a3 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp @@ -66,7 +66,8 @@ void Rift_Tracker::StartTracker(QFrame* videoFrame) }else{ QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); } - //MagCal.BeginAutoCalibration(SFusion); + isCalibrated = false; + MagCal.BeginAutoCalibration(SFusion); SFusion.SetMagReference(SFusion.GetOrientation()); } } @@ -79,32 +80,27 @@ bool Rift_Tracker::GiveHeadPoseData(double *data) 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); } } -#endif // Magnetometer calibration procedure - //MagCal.UpdateAutoCalibration(SFusion); + MagCal.UpdateAutoCalibration(SFusion); +#endif Quatf hmdOrient = SFusion.GetOrientation(); float yaw = 0.0f; float pitch = 0.0f; float roll = 0.0f; - //hmdOrient.GetEulerAngles< Axis_X, Axis_Y, Axis_Z>(&pitch, &yaw, &roll); - //hmdOrient.GetEulerAngles< Axis_X, Axis_Z, Axis_Y>(&pitch, &roll, &yaw); hmdOrient.GetEulerAngles(&yaw, &pitch , &roll); - //hmdOrient.GetEulerAngles< Axis_Y, Axis_Z, Axis_X>(&yaw, &roll, &pitch); - //hmdOrient.GetEulerAngles< Axis_Z, Axis_X, Axis_Y>(&roll, &pitch, &yaw); - //hmdOrient.GetEulerAngles< Axis_Z, Axis_Y, Axis_X>(&roll, &yaw, &pitch); - newHeadPose[Pitch] = pitch; - newHeadPose[Roll] = roll; - newHeadPose[Yaw] = yaw; + newHeadPose[Yaw] = yaw; + newHeadPose[Pitch] =pitch; + newHeadPose[Roll] = roll; #if 0 - sixenseControllerData cd; newHeadPose[TX] = acd.controllers[0].pos[0]/50.0f; newHeadPose[TY] = acd.controllers[0].pos[1]/50.0f; diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.h b/ftnoir_tracker_rift/ftnoir_tracker_rift.h index 0f3bc099..7bacb91c 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.h +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.h @@ -6,6 +6,7 @@ #include #include "facetracknoir/global-settings.h" #include "OVR.h" +#include "Util/Util_MagCalibration.h" class Rift_Tracker : public ITracker { public: @@ -26,6 +27,10 @@ private: OVR::Ptr pHMD; OVR::Ptr pSensor; OVR::SensorFusion SFusion; + // Magnetometer calibration and yaw correction + OVR::Util::MagCalibration MagCal; + bool isCalibrated; + double newHeadPose[6]; // Structure with new headpose bool bEnableRoll; bool bEnablePitch; -- cgit v1.2.3