//classificacao dos bracos private BracosPosicao ArmsOWASClassification(SkeletonPoint SkeletonPointHandLeft, SkeletonPoint SkeletonPointShouderLeft, SkeletonPoint SkeletonPointElbowLeft, SkeletonPoint SkeletonPointHandRight, SkeletonPoint SkeletonPointShouderRight, SkeletonPoint SkeletonPointElbowRight) { //--------------------------------------------------------------------------------------------------- //Classification of Arms //1 - Both Arms are Down: Right and Left Hand below shouder and Right and Left Elbow below shouder //2 - One Hand up : At least one hand above shouder //3 - Two Hand Up: Right and Left Hand above // 1 Ambos os braços para baixo: Direita e Esquerda Mão abaixo do ombro e Direita e Esquerda cotovelo abaixo do ombro // 2-uma mao para cima:Pelo menos uma das mãos acima ombro // 3-duas maos para cima:mão direita e esquerda acima; //--------------------------------------------------------------------------------------------------- //Inicialize the value BracosPosicao posicaoBraco = BracosPosicao.Desconhecida; if ((IsAbove(SkeletonPointHandLeft, SkeletonPointShouderLeft) == true & IsAbove(SkeletonPointElbowLeft, SkeletonPointShouderLeft) == true) & (IsAbove(SkeletonPointHandRight, SkeletonPointShouderRight) == true & IsAbove(SkeletonPointElbowRight, SkeletonPointShouderRight) == true)) { posicaoBraco = BracosPosicao.TwoHandUp; } else if ((IsAbove(SkeletonPointHandLeft, SkeletonPointShouderLeft) == true & IsAbove(SkeletonPointElbowLeft, SkeletonPointShouderLeft) == true) | (IsAbove(SkeletonPointHandRight, SkeletonPointShouderRight) == true & IsAbove(SkeletonPointElbowRight, SkeletonPointShouderRight) == true)) { posicaoBraco = BracosPosicao.OneHandUp; } else { posicaoBraco = BracosPosicao.BothArmsareDown; } return(posicaoBraco); }
public Owas(CostaPosicao bp, BracosPosicao ap, PernasPosicao lp, Weigth weight) { this.BackPosition = bp; this.ArmsPosition = ap; this.LegsPosition = lp; this._Weight = weight; }
public String updateArmsPosition(long start, long end, BracosPosicao ap) { if (start > end) { return(""); } String fileName = this.FileName; String xml = ""; XElement root = XElement.Load(fileName); IEnumerable <XElement> frame = from el in root.Elements("Frame") where (long)el.Attribute("timestamp") >= start select el; foreach (XElement el in frame) { if ((long)(Double.Parse(el.Attribute("timestamp").Value)) < end) { el.Attribute("arms").Value = ap.ToString(); xml += el.ToString(); } else { break; } } root.Save(fileName); return(xml); }
public BracosPosicao getBracoPosition() { BracosPosicao posicao = BracosPosicao.Desconhecida; if (this._Skeleton != null) { posicao = this.GetArmsClassification(); } return(posicao); }
public String updateArmsPosition(String timestamp, BracosPosicao ap) { String fileName = this.FileName; String xml = ""; XElement root = XElement.Load(fileName); IEnumerable <XElement> frame = from el in root.Elements("Frame") where (string)el.Attribute("timestamp") == timestamp select el; foreach (XElement el in frame) { el.Attribute("arms").Value = ap.ToString(); xml += el.ToString(); } root.Save(fileName); return(xml); }
public static Results riskArms(BracosPosicao bp, double percent) { //Braços abaixo do ombro if (bp == BracosPosicao.BothArmsareDown) { return(Results.Nivel1); } //Um dos bracos abaixados else if (bp == BracosPosicao.OneHandUp) { if (percent < 30) { return(Results.Nivel1); } else if (percent >= 30 && percent < 80) { return(Results.Nivel2); } else { return(Results.Nivel3); } } //Ambos os braços levantados else if (bp == BracosPosicao.TwoHandUp) { if (percent < 20) { return(Results.Nivel1); } else if (percent >= 20 && percent < 80) { return(Results.Nivel2); } else { return(Results.Nivel3); } } return(Results.Nivel1); }
public void addPosition(long timestamp, CostaPosicao costaPosicao, BracosPosicao bracoPosicao, PernasPosicao pernasPosicao) { writer.WriteStartElement("Frame"); writer.WriteAttributeString(null, "timestamp", null, timestamp + ""); writer.WriteAttributeString(null, "spine", null, costaPosicao + ""); writer.WriteAttributeString(null, "arms", null, bracoPosicao + ""); writer.WriteAttributeString(null, "legs", null, pernasPosicao + ""); // writer.WriteElementString("timestamp", timestamp + ""); //writer.WriteElementString("timestamp", TimeSpan.FromMilliseconds(timestamp).TotalSeconds+""); //writer.WriteElementString("Spine", (int)((CostaPosicao)Enum.Parse(typeof(CostaPosicao), costaPosicao + ""))+""); //writer.WriteElementString("Arms", (int)((BracosPosicao)Enum.Parse(typeof(BracosPosicao), bracoPosicao + "")) + ""); //writer.WriteElementString("Legs", (int)((PernasPosicao)Enum.Parse(typeof(PernasPosicao), pernasPosicao + "")) + ""); /*writer.WriteElementString("Spine", costaPosicao + ""); * writer.WriteElementString("Arms", bracoPosicao + ""); * writer.WriteElementString("Legs", pernasPosicao + "");*/ writer.WriteEndElement(); }
private BracosPosicao GetArmsClassification() { Skeleton skeleton = this._Skeleton; //Arms Position SkeletonPoint SkeletonPointHandLeft = new SkeletonPoint(); SkeletonPoint SkeletonPointHandRight = new SkeletonPoint(); SkeletonPoint SkeletonPointShouderLeft = new SkeletonPoint(); SkeletonPoint SkeletonPointShouderRight = new SkeletonPoint(); SkeletonPoint SkeletonPointElbowLeft = new SkeletonPoint(); SkeletonPoint SkeletonPointElbowRight = new SkeletonPoint(); BracosPosicao posicaoBracos = BracosPosicao.Desconhecida; //Loop into all skeleton joints // For i As Integer = 0 To skeleton.Joints.Count - 1 // Rotacao = skeleton.BoneOrientations(JointType.Spine).HierarchicalRotation //Rotacao.Matrix.M11.ToString() //Rotacao.Matrix.M21.ToString() //Rotacao.Matrix.M31.ToString() //Rotacao.Matrix.M41.ToString() //Matrix3D hipCenterMatrix = skeleton.GetRelativeJointMatrix("hipcenter"); if (skeleton.Joints[JointType.ShoulderRight].TrackingState == JointTrackingState.Tracked) { SkeletonPointShouderRight.X = skeleton.Joints[JointType.ShoulderRight].Position.X; SkeletonPointShouderRight.Y = skeleton.Joints[JointType.ShoulderRight].Position.Y; SkeletonPointShouderRight.Z = skeleton.Joints[JointType.ShoulderRight].Position.Z; } if (skeleton.Joints[JointType.ShoulderLeft].TrackingState == JointTrackingState.Tracked) { SkeletonPointShouderLeft.X = skeleton.Joints[JointType.ShoulderLeft].Position.X; SkeletonPointShouderLeft.Y = skeleton.Joints[JointType.ShoulderLeft].Position.Y; SkeletonPointShouderLeft.Z = skeleton.Joints[JointType.ShoulderLeft].Position.Z; } if (skeleton.Joints[JointType.HandRight].TrackingState == JointTrackingState.Tracked) { SkeletonPointHandRight.X = skeleton.Joints[JointType.HandRight].Position.X; SkeletonPointHandRight.Y = skeleton.Joints[JointType.HandRight].Position.Y; SkeletonPointHandRight.Z = skeleton.Joints[JointType.HandRight].Position.Z; } if (skeleton.Joints[JointType.HandLeft].TrackingState == JointTrackingState.Tracked) { SkeletonPointHandLeft.X = skeleton.Joints[JointType.HandLeft].Position.X; SkeletonPointHandLeft.Y = skeleton.Joints[JointType.HandLeft].Position.Y; SkeletonPointHandLeft.Z = skeleton.Joints[JointType.HandLeft].Position.Z; } if (skeleton.Joints[JointType.ElbowRight].TrackingState == JointTrackingState.Tracked) { SkeletonPointElbowRight.X = skeleton.Joints[JointType.ElbowRight].Position.X; SkeletonPointElbowRight.Y = skeleton.Joints[JointType.ElbowRight].Position.Y; SkeletonPointElbowRight.Z = skeleton.Joints[JointType.ElbowRight].Position.Z; } if (skeleton.Joints[JointType.ElbowLeft].TrackingState == JointTrackingState.Tracked) { SkeletonPointElbowLeft.X = skeleton.Joints[JointType.ElbowLeft].Position.X; SkeletonPointElbowLeft.Y = skeleton.Joints[JointType.ElbowLeft].Position.Y; SkeletonPointElbowLeft.Z = skeleton.Joints[JointType.ElbowLeft].Position.Z; } posicaoBracos = ArmsOWASClassification(SkeletonPointHandLeft, SkeletonPointShouderLeft, SkeletonPointElbowLeft, SkeletonPointHandRight, SkeletonPointShouderRight, SkeletonPointElbowRight); return(posicaoBracos); }
public List <KeyValuePair <string, double> > RelatorioListArms() { String fileName = this.FileName; XElement root = XElement.Load(fileName); IEnumerable <XElement> frame = from el in root.Elements("Frame") select el; int[] arms = new int[4]; int[] spine = new int[5]; int[] legs = new int[6]; List <KeyValuePair <string, double> > posicoes = new List <KeyValuePair <string, double> >(); // for (int i = 0; i < arms.Length; i++) { arms[i] = 0; spine[i] = 0; legs[i] = 0; } int index, kindex, jindex; int totalFrames = 0; foreach (XElement el in frame) { index = (int)((BracosPosicao)Enum.Parse(typeof(BracosPosicao), el.Attribute("arms").Value.ToString())); kindex = (int)((CostaPosicao)Enum.Parse(typeof(CostaPosicao), el.Attribute("spine").Value.ToString())); jindex = (int)((PernasPosicao)Enum.Parse(typeof(PernasPosicao), el.Attribute("legs").Value.ToString())); arms[index] += 1; spine[kindex] += 1; legs[jindex] += 1; totalFrames++; } double percent = 0.0; String nomePosicao = "Desconhecida"; nomePosicao = "Desconhecida"; BracosPosicao bracosP = BracosPosicao.Desconhecida; for (int i = 1; i < arms.Length; i++) { switch (i) { case 1: nomePosicao = "Braços para baixo"; bracosP = BracosPosicao.BothArmsareDown; break; case 2: nomePosicao = "Um braço para cima"; bracosP = BracosPosicao.OneHandUp; break; case 3: nomePosicao = "Braços para cima"; bracosP = BracosPosicao.TwoHandUp; break; } percent = ((double)arms[i] / (double)totalFrames * 100); posicoes.Add(new KeyValuePair <string, double>(nomePosicao, percent)); } return(posicoes); }
public List <KeyValuePair <string, double> > RelatorioList() { String fileName = this.FileName; XElement root = XElement.Load(fileName); IEnumerable <XElement> frame = from el in root.Elements("Frame") select el; int[] arms = new int[4]; int[] spine = new int[5]; int[] legs = new int[6]; List <KeyValuePair <string, double> > posicoes = new List <KeyValuePair <string, double> >(); // for (int i = 0; i < arms.Length; i++) { arms[i] = 0; spine[i] = 0; legs[i] = 0; } int index, kindex, jindex; int totalFrames = 0; foreach (XElement el in frame) { index = (int)((BracosPosicao)Enum.Parse(typeof(BracosPosicao), el.Attribute("arms").Value.ToString())); kindex = (int)((CostaPosicao)Enum.Parse(typeof(CostaPosicao), el.Attribute("spine").Value.ToString())); jindex = (int)((PernasPosicao)Enum.Parse(typeof(PernasPosicao), el.Attribute("legs").Value.ToString())); arms[index] += 1; spine[kindex] += 1; legs[jindex] += 1; totalFrames++; } double percent = 0.0; CostaPosicao costaP = CostaPosicao.Desconhecida; String nomePosicao = "Desconhecida"; for (int i = 1; i < spine.Length; i++) { percent = ((double)spine[i] / (double)totalFrames * 100); switch (i) { case 1: nomePosicao = "Ereta"; costaP = CostaPosicao.Ereta; break; case 2: nomePosicao = "Inclinada"; costaP = CostaPosicao.Inclinada; break; case 3: nomePosicao = "Ereta e Torcida"; costaP = CostaPosicao.EretaETorcida; break; case 4: nomePosicao = "Inclinada e Torcida"; costaP = CostaPosicao.InclinadaETorcida; break; } posicoes.Add(new KeyValuePair <string, double>(nomePosicao, percent)); } nomePosicao = "Desconhecida"; BracosPosicao bracosP = BracosPosicao.Desconhecida; for (int i = 1; i < arms.Length; i++) { switch (i) { case 1: nomePosicao = "Braços para baixo"; bracosP = BracosPosicao.BothArmsareDown; break; case 2: nomePosicao = "Um braço para cima"; bracosP = BracosPosicao.OneHandUp; break; case 3: nomePosicao = "Braços para cima"; bracosP = BracosPosicao.TwoHandUp; break; } percent = ((double)arms[i] / (double)totalFrames * 100); posicoes.Add(new KeyValuePair <string, double>(nomePosicao, percent)); } nomePosicao = "Desconhecida"; PernasPosicao pernasP = PernasPosicao.Desconhecida; for (int i = 1; i < legs.Length; i++) { switch (i) { case 1: nomePosicao = "Pernas estão retas"; pernasP = PernasPosicao.twoLegUp; break; case 2: nomePosicao = "Uma perna está reta"; pernasP = PernasPosicao.OneLegUp; break; case 3: nomePosicao = "Duas pernas flexionadas"; pernasP = PernasPosicao.twoLegFlex; break; case 4: nomePosicao = "Uma perna flexionada"; pernasP = PernasPosicao.OneLegFlex; break; case 5: nomePosicao = "Ajoelhado"; pernasP = PernasPosicao.OneLegknee; break; } percent = ((double)legs[i] / (double)totalFrames * 100); posicoes.Add(new KeyValuePair <string, double>(nomePosicao, percent)); } return(posicoes); }
public void Relatorio(String relatorioName) { String fileName = this.FileName; XElement root = XElement.Load(fileName); IEnumerable <XElement> frame = from el in root.Elements("Frame") select el; int[] arms = new int[4]; int[] spine = new int[5]; int[] legs = new int[6]; for (int i = 0; i < arms.Length; i++) { arms[i] = 0; spine[i] = 0; legs[i] = 0; } int index, kindex, jindex; int totalFrames = 0; // DDebug db = new DDebug(); db.Show(); foreach (XElement el in frame) { index = (int)((BracosPosicao)Enum.Parse(typeof(BracosPosicao), el.Attribute("arms").Value.ToString())); kindex = (int)((CostaPosicao)Enum.Parse(typeof(CostaPosicao), el.Attribute("spine").Value.ToString())); jindex = (int)((PernasPosicao)Enum.Parse(typeof(PernasPosicao), el.Attribute("legs").Value.ToString())); arms[index] += 1; spine[kindex] += 1; legs[jindex] += 1; totalFrames++; } XmlWriter writer = XmlWriter.Create(relatorioName); writer.WriteStartDocument(); writer.WriteStartElement("classOwas"); double percent = 0.0; CostaPosicao costaP = CostaPosicao.Desconhecida; for (int i = 1; i < spine.Length; i++) { percent = ((double)spine[i] / (double)totalFrames * 100); writer.WriteStartElement("member"); writer.WriteAttributeString(null, "name", null, "spine"); switch (i) { case 1: costaP = CostaPosicao.Ereta; break; case 2: costaP = CostaPosicao.Inclinada; break; case 3: costaP = CostaPosicao.EretaETorcida; break; case 4: costaP = CostaPosicao.InclinadaETorcida; break; } writer.WriteAttributeString(null, "position", null, costaP + ""); writer.WriteAttributeString(null, "percent", null, percent + ""); writer.WriteAttributeString(null, "risk", null, Owas.riskSpine(costaP, percent) + ""); writer.WriteEndElement(); } BracosPosicao bracosP = BracosPosicao.Desconhecida; for (int i = 1; i < arms.Length; i++) { switch (i) { case 1: bracosP = BracosPosicao.BothArmsareDown; break; case 2: bracosP = BracosPosicao.OneHandUp; break; case 3: bracosP = BracosPosicao.TwoHandUp; break; } percent = ((double)arms[i] / (double)totalFrames * 100); writer.WriteStartElement("member"); writer.WriteAttributeString(null, "name", null, "arms"); writer.WriteAttributeString(null, "position", null, bracosP + ""); writer.WriteAttributeString(null, "percent", null, percent + ""); writer.WriteAttributeString(null, "risk", null, Owas.riskArms(bracosP, percent) + ""); writer.WriteEndElement(); } PernasPosicao pernasP = PernasPosicao.Desconhecida; for (int i = 0; i < legs.Length; i++) { switch (i) { case 1: pernasP = PernasPosicao.twoLegUp; break; case 2: pernasP = PernasPosicao.OneLegUp; break; case 3: pernasP = PernasPosicao.twoLegFlex; break; case 4: pernasP = PernasPosicao.OneLegFlex; break; case 5: pernasP = PernasPosicao.OneLegknee; break; } percent = ((double)legs[i] / (double)totalFrames * 100); writer.WriteStartElement("member"); writer.WriteAttributeString(null, "name", null, "legs"); writer.WriteAttributeString(null, "position", null, pernasP + ""); writer.WriteAttributeString(null, "percent", null, percent + ""); writer.WriteAttributeString(null, "risk", null, Owas.riskLegs(pernasP, percent) + ""); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndDocument(); writer.Flush(); writer.Close(); }