コード例 #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="label">Object label</param>
 /// <param name="data">Inertial sensor</param>
 public FormInertialSystem(IObjectLabel label, InertialSensorData data)
     : this()
 {
     this.label = label;
     this.data  = data;
     UpdateFormUI();
     post();
 }
        private void CalibrateToCord(object sender, IData e)
        {
            //q2*q1' = r
            //(new Quaternion(0,0,1,0)) * (new Quaternion(0,0,0,1))
            //* (new Quaternion(0,0,1,0)) * (new Quaternion(0,0,0,1))
            //RightArmQuat *
            InertialSensorData ISD = (InertialSensorData)e;

            //(new Quaternion(((InertialSensorData)e).Q[0], ((InertialSensorData)e).Q[1], ((InertialSensorData)e).Q[2], ((InertialSensorData)e).Q[3])).Normalize().Inverse();

            //arbitraryCorrection = Quaternion.Identity * ISD.QMD3;
            arbitraryCorrection = this.CorrectionFromIMUtoKinect;
            this.DPMC.DPMCollection.First(x => x.Value.UISensorData.SensorType == SensorType.Inertial).Value.IDataProducer.NewIData -= CalibrateToCord;
        }
コード例 #3
0
        private void CalibrateToCord(object sender, IData e)
        {
            InertialSensorData ISD = (InertialSensorData)e;
            Quaternion         Arb_Sensor = ISD.QuaternionAsQMD3, Arb_SensorInvert = ISD.QuaternionAsQMD3;

            Arb_SensorInvert.Invert();
            this.BindingCorrection = Arb_SensorInvert;
            arbitraryCorrection    = this.DisplayConstRotation * Arb_SensorInvert;

            ((this.DPMC.DPMCollection.First(x => x.Value.UISensorData.SensorType == SensorType.MappedIntertial).Value.IDataProducer as MappedBindedInertialSesnorProducer).Mapper as QuaternionCoordinateMapper).Initial = new Quaternion(0, 1, 0, 0) * Arb_Sensor;

            //arbitraryCorrection = Quaternion.Identity * ISD.QMD3;
            //arbitraryCorrection = this.CorrectionFromIMUtoKinect;
            this.DPMC.DPMCollection.First(x => x.Value.UISensorData.SensorType == SensorType.Inertial).Value.IDataProducer.NewIData -= CalibrateToCord;
        }
コード例 #4
0
        private void MyFunctionToDealWithGettingData(object sender, InertialSensorData e)
        {
            const double angularConst = Math.PI / (16.4 * 180);
            //getting acceleration data from sensors
            double xAcc = (double)e.accelaromaters[0] / 2080;
            double yAcc = (double)e.accelaromaters[1] / 2080;
            double zAcc = (double)e.accelaromaters[2] / 2080;

            double xRot = (double)e.gyropscopes[0] * angularConst;
            double yRot = (double)e.gyropscopes[1] * angularConst;
            double zRot = (double)e.gyropscopes[2] * angularConst;

            double[]         tempAngularActualAcc = new double[] { xRot, yRot, zRot };
            double[]         tempActualAcc        = new double[] { xAcc, yAcc, zAcc };
            AccelerationTime tempActualAccTime    = new AccelerationTime();

            tempActualAccTime.setVal(tempActualAcc, tempAngularActualAcc, e.NowInTicks);

            actualAcc.Enqueue(tempActualAccTime);
        }