// 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); } }