Example #1
0
 public void loadTranslationsToSensors(TrackingPositionsData data)
 {
     for (int i = 0; i < TrackingManager.instance.KinectSensors.Length; i++)
     {
         Vector3[] arr = data.getCalibratedParams(i);
         if (arr == null)
         {
             Debug.LogError("Translations is not yet calculated, please press calculate Translations on TrackingManager GameObject.");
             return;
         }
         TrackingManager.instance.KinectSensors[i].CalibratedRotation           = arr[0];
         TrackingManager.instance.KinectSensors[i].CalibratedDirection          = arr[1];
         TrackingManager.instance.KinectSensors[i].CalibratedKinectsMiddlePoint = arr[2];
         TrackingManager.instance.KinectSensors[i].CalibratedCorrectMiddlePoint = arr[3];
     }
 }
Example #2
0
    private void readTrackingData()
    {
        //  Debug.Log(Application.dataPath + "/trackingData.json");
        if (!File.Exists(Application.dataPath + "/StreamingAssets/trackingData.json"))
        {
            trackingData = new TrackingPositionsData(TrackingManager.instance.KinectSensors.Length, recordsNeeded);
        }
        else
        {
            using (StreamReader reader = new StreamReader(Application.dataPath + "/StreamingAssets/trackingData.json"))
            {
                string data = reader.ReadToEnd();
                trackingData  = JsonUtility.FromJson <TrackingPositionsData>(data);
                recordsNeeded = trackingData.recordsNeeded;
                if (trackingData.getPositionsCount(0) == 0 && trackingData.getPositionsCount(1) == 0 && trackingData.getPositionsCount(2) == 0)
                {
                    trackingData.resetData();
                }
            }
        }

        loadTranslationsToSensors(trackingData);

        if (drawCalibratedData)
        {
            List <Vector3> correctPosi   = new List <Vector3>();
            List <Vector3> kinectPosi    = new List <Vector3>();
            List <Vector3> calibratedPos = new List <Vector3>();


            for (int i = 0; i < trackingData.kinectDevices; i++)
            {
                if (i != 0)
                {
                    continue;
                }
                for (int j = 0; j < recordsNeeded; j++)
                {
                    Vector3 kinecti  = trackingData.getKinectPos(i, j);
                    Vector3 correcti = trackingData.getCorrectPos(i, j);

                    correctPosi.Add(correcti);
                    kinectPosi.Add(kinecti);
                    calibratedPos.Add(trackingData.getPredictedKinectPos(i, kinecti));
                }
            }

            List <Vector3> newKinectPosi = new List <Vector3>();
            for (int i = 0; i < kinectPosi.Count; i++)
            {
                // newKinectPosi.Add(TrackingManager.instance.KinectSensors[0].localPosToGlobal(kinectPosi[i]));
            }
            drawPoints("kinectPointsUpdated", newKinectPosi, Color.yellow);
            //drawpoints("kinectpoints", kinectposi, color.blue);
            drawPoints("HTCPoints", correctPosi, Color.red);
            drawPoints("HTCPoints", calibratedPos, Color.green);
            float dist = 0;
            for (int i = 0; i < correctPosi.Count; i++)
            {
                dist += Vector3.Distance(correctPosi[i], calibratedPos[i]);
            }

            dist /= correctPosi.Count;
            Debug.Log("Aprox. diff: " + Math.Round(dist * 10, 2) + " cm.");
        }
    }