Example #1
0
        // Saves the joint state to a .csv file
        private Boolean WriteJoint(Body body)
        {
            CameraSpacePoint rightWristPosition = body.Joints[JointType.WristRight].Position;
            CameraSpacePoint spineBasePosition  = body.Joints[JointType.SpineBase].Position;
            CameraSpacePoint rightHandPosition  = body.Joints[JointType.HandRight].Position;
            CameraSpacePoint rightThumbPosition = body.Joints[JointType.ThumbRight].Position;

            // Save the elbow as well in case we want it in the future
            CameraSpacePoint rightElbowPosition = body.Joints[JointType.ElbowRight].Position;

            // The change the coordinate frame with respect to Baxter according to the rotation matrix
            Single xW = spineBasePosition.Z - rightWristPosition.Z;
            Single yW = spineBasePosition.X - rightWristPosition.X;
            Single zW = rightWristPosition.Y - spineBasePosition.Y;

            Single xH = spineBasePosition.Z - rightHandPosition.Z;
            Single yH = spineBasePosition.X - rightHandPosition.X;
            Single zH = rightHandPosition.Y - spineBasePosition.Y;

            Single xT = spineBasePosition.Z - rightThumbPosition.Z;
            Single yT = spineBasePosition.X - rightThumbPosition.X;
            Single zT = rightThumbPosition.Y - spineBasePosition.Y;

            Single xE = spineBasePosition.Z - rightElbowPosition.Z;
            Single yE = spineBasePosition.X - rightElbowPosition.X;
            Single zE = rightElbowPosition.Y - spineBasePosition.Y;


            DateTime finalTime = DateTime.Now;

            Double ElapsedTime = (finalTime - this.initialTime).TotalSeconds;

            String name        = "NEW_ROTZ";
            String filePathAll = @"C:\Users\Usuario\Documents\Universidad\Master\TFM\Kinect\BodyBasics-WPF\Data\" + this.dateString +
                                 "-" + name + ".csv";
            String filePathHigh = @"C:\Users\Usuario\Documents\Universidad\Master\TFM\Kinect\BodyBasics-WPF\Data\HighConf\" + this.dateString +
                                  "-" + name + ".csv";

            String line = ElapsedTime.ToString(CultureInfo.InvariantCulture) + "," +
                          xW.ToString(CultureInfo.InvariantCulture) + "," + yW.ToString(CultureInfo.InvariantCulture)
                          + "," + zW.ToString(CultureInfo.InvariantCulture) + "," +
                          xH.ToString(CultureInfo.InvariantCulture) + "," + yH.ToString(CultureInfo.InvariantCulture)
                          + "," + zH.ToString(CultureInfo.InvariantCulture) + "," +
                          xT.ToString(CultureInfo.InvariantCulture) + "," + yT.ToString(CultureInfo.InvariantCulture)
                          + "," + zT.ToString(CultureInfo.InvariantCulture) + "," +
                          xT.ToString(CultureInfo.InvariantCulture) + "," + yT.ToString(CultureInfo.InvariantCulture)
                          + "," + zT.ToString(CultureInfo.InvariantCulture);

            TrackingConfidence conf = body.HandRightConfidence;

            switch (body.HandRightState)
            {
            /*
             * case HandState.Closed:
             *  Console.WriteLine("Closed");
             *  return false; */
            case HandState.NotTracked:
            //Do nothing
            default:
                //Console.WriteLine("DEFAULT");

                // Use coordinates only if confidence is high
                if (conf.Equals(TrackingConfidence.High))
                {
                    using (StreamWriter file = new StreamWriter(filePathHigh, true))
                    {
                        file.WriteLine(line);
                    }
                }

                using (StreamWriter file = new StreamWriter(filePathAll, true))
                {
                    file.WriteLine(line);
                }

                return(true);
            }
        }