public static void DisegnaGraficoDR()
        {
            ElaboraDati.segnoAngoloTheta = 0;
            ElaboraDati.segnoAngoloYaw   = 0;
            ElaboraDati.segnoAngoloPitch = 0;
            ElaboraDati.segnoAngoloRoll  = 0;
            List <float> yaw = new List <float>();

            // Prendo tutti gli angoli di eulero per il sensore sul bacino
            foreach (AngoloEulero[] angolo in ElaboraDati.AngoliEulero(Server.samplesList))
            {
                yaw.Add(angolo[0].getYaw());
            }
            List <float[]> coordinate = DeadReckoning(DeviazioneStandard(ElaboraDati.Modulation(Server.samplesList, 0, 0)), EliminaDiscontinuitaYaw(yaw));
            FormGraphDR    fgdr       = new FormGraphDR();

            fgdr.InitGraph();
            fgdr.Show();
            fgdr.DrawGraph(coordinate);
            Application.Run();
        }
Exemple #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            numSample.Maximum = (Server.samplesList.Count - 1);
            infoSample.Clear();
            infoSample.AppendText("acc1: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 0] + "\r\n");
            infoSample.AppendText("acc2: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 1] + "\r\n");
            infoSample.AppendText("acc3: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 2] + "\r\n");
            infoSample.AppendText("gyr1: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 3] + "\r\n");
            infoSample.AppendText("gyr2: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 4] + "\r\n");
            infoSample.AppendText("gyr3: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 5] + "\r\n");
            infoSample.AppendText("mag1: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 6] + "\r\n");
            infoSample.AppendText("mag2: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 7] + "\r\n");
            infoSample.AppendText("mag3: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 8] + "\r\n");
            infoSample.AppendText("q0: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 9] + "\r\n");
            infoSample.AppendText("q1: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 10] + "\r\n");
            infoSample.AppendText("q2: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 11] + "\r\n");
            infoSample.AppendText("q3: ");
            infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 12] + "\r\n");
            if (eulerAngles.Checked == true)
            {
                List <AngoloEulero[]>
                AngoliEulero = ElaboraDati.AngoliEulero(Server.samplesList);
                infoSample.AppendText("yaw: ");
                infoSample.AppendText(AngoliEulero[(int)numSample.Value][(int)numSensor.Value].getYaw() + "\r\n");
                infoSample.AppendText("pitch: ");
                infoSample.AppendText(AngoliEulero[(int)numSample.Value][(int)numSensor.Value].getPitch() + "\r\n");
                infoSample.AppendText("roll: ");
                infoSample.AppendText(AngoliEulero[(int)numSample.Value][(int)numSensor.Value].getRoll() + "\r\n");
            }
            if (modulation.Checked == true)
            {
                modacc  = ElaboraDati.Modulation(Server.samplesList, (int)numSensor.Value, 0);
                modgiro = ElaboraDati.Modulation(Server.samplesList, (int)numSensor.Value, 1);
                infoSample.AppendText("\r\nmodacc: ");
                foreach (float elem in modacc)
                {
                    infoSample.AppendText(elem + " - ");
                }
                infoSample.AppendText("\r\nmodgiro: ");
                foreach (float elem in modgiro)
                {
                    infoSample.AppendText(elem + " - ");
                }
            }
            if (smoothing.Checked == true)
            {
                smoothacc = ElaboraDati.Smoothing(modacc);
                smoothgir = ElaboraDati.Smoothing(modgiro);
                infoSample.AppendText("\r\nsmoothacc: ");
                foreach (float elem in smoothacc)
                {
                    infoSample.AppendText(elem + " - ");
                }
                infoSample.AppendText("\r\nsmoothgir: ");
                foreach (float elem in smoothgir)
                {
                    infoSample.AppendText(elem + " - ");
                }
            }
            if (modaccRI.Checked == true)
            {
                modacc = ElaboraDati.Modulation(Server.samplesList, (int)numSensor.Value, 0);

                /* Fino ad ora le varie informazioni sono state salvate in List dato che
                 * non lavoriamo su finestre di dati, ma sull' insieme di campioni
                 * e non  possiamo sapere a priori quanti sono e dunque abbaimo bisogno di
                 * strutture dati dinamiche. Dalla documentazione la funzione RIfun accetta in input
                 * un array e dunque ho dovuto trasfomare la List in array in modo che la signature della
                 * funzione sia esattamente uguale a quella della documentazione
                 */
                float[] modaccArray   = modacc.ToArray();
                float[] modaccRIArray = ElaboraDati.RIfun(modaccArray);
                infoSample.AppendText("\r\nFI of modacc: ");
                foreach (float elem in modaccRIArray)
                {
                    infoSample.AppendText(elem + " - ");
                }
            }
            if (sd.Checked == true)
            {
                dev = ElaboraDati.DeviazioneStandard(modacc);
                infoSample.AppendText("\r\nDeviazioni standard: \r\n");
                foreach (float elem in dev)
                {
                    infoSample.AppendText(elem + " - ");
                }
            }
            if (Yvalue.Checked == true)
            {
                infoSample.AppendText("\r\n" + " Valori Y del smussati: " + "\r\n");
                List <float> smussati = new List <float>();
                for (int i = 0; i < Server.samplesList.Count(); i++)
                {
                    smussati.Add(Server.samplesList[i][0, 1]);
                }
                smussati = ElaboraDati.Smoothing(smussati);
                for (int i = 0; i < Server.samplesList.Count(); i++)
                {
                    infoSample.AppendText(smussati[i] + "\r\n");
                }
            }
        }