Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
 public Owas(CostaPosicao bp, BracosPosicao ap, PernasPosicao lp, Weigth weight)
 {
     this.BackPosition = bp;
     this.ArmsPosition = ap;
     this.LegsPosition = lp;
     this._Weight      = weight;
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        public BracosPosicao getBracoPosition()
        {
            BracosPosicao posicao = BracosPosicao.Desconhecida;

            if (this._Skeleton != null)
            {
                posicao = this.GetArmsClassification();
            }
            return(posicao);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 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);
 }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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();
        }