AHRSInterface.AHRS.AHRS C# (CSharp) Method

AHRS() public method

public AHRS ( ) : System
return System
        public AHRS()
        {
            connected = false;

            // Fill arrays used for AHRS COM
            int packet_count = PName.GetValues( typeof( PName ) ).Length;
            PID = new byte[packet_count];

            serialPort = new SerialPort();
            PacketTimer = new Timer();

            int state_count = StateName.GetValues(typeof(StateName)).Length;
            UpdatePending = new bool[state_count];
            DataPending = new bool[state_count];
            Measured = new bool[state_count];
            MaxDelay = new int[state_count];
            ElapsedTime = new int[state_count];

            // Commands that can be sent to the AHRS device
            PID[(int)PName.SET_ACTIVE_CHANNELS] = 0x80;
            PID[(int)PName.SET_SILENT_MODE] = 0x81;
            PID[(int)PName.SET_BROADCAST_MODE] = 0x82;
            PID[(int)PName.SET_GYRO_BIAS] = 0x83;
            PID[(int)PName.SET_ACCEL_BIAS] = 0x84;
            PID[(int)PName.SET_ACCEL_REF_VECTOR] = 0x85;
            PID[(int)PName.AUTO_SET_ACCEL_REF] = 0x86;
            PID[(int)PName.ZERO_RATE_GYROS] = 0x87;
            PID[(int)PName.SELF_TEST] = 0x88;
            PID[(int)PName.SET_START_CAL] = 0x89;
            PID[(int)PName.SET_PROCESS_COVARIANCE] = 0x8A;
            PID[(int)PName.SET_MAG_COVARIANCE] = 0x8B;
            PID[(int)PName.SET_ACCEL_COVARIANCE] = 0x8C;
            PID[(int)PName.SET_EKF_CONFIG] = 0x8D;
            PID[(int)PName.SET_GYRO_ALIGNMENT] = 0x8E;
            PID[(int)PName.SET_ACCEL_ALIGNMENT] = 0x8F;
            PID[(int)PName.SET_MAG_REF_VECTOR] = 0x90;
            PID[(int)PName.AUTO_SET_MAG_REF] = 0x91;
            PID[(int)PName.SET_MAG_CAL] = 0x92;
            PID[(int)PName.SET_MAG_BIAS] = 0x93;
            PID[(int)PName.SET_GYRO_SCALE] = 0x94;
            PID[(int)PName.EKF_RESET] = 0x95;
            PID[(int)PName.RESET_TO_FACTORY] = 0x96;
            PID[(int)PName.SET_KALMAN_PARM] = 0x97;
            PID[(int)PName.SET_OUTPUT] = 0x98;
            PID[(int)PName.WRITE_TO_FLASH] = 0xA0;
            PID[(int)PName.UPDATE_FW] = 0x9C;
            PID[(int)PName.CALIBRATE_GYRO_BIAS] = 0x9B;
            PID[(int)PName.GET_CONFIGURATION] = 0x9A;
            PID[(int)PName.SET_REBOOT] = 0x99;

            // Commands that can be sent to the AHRS device

            // Commands that can be received by the AHRS class
            // (ie. transmitted by the device, received by the class
            // over a serial port).

            // Set AHRS class parameters so that on the next call to 'synch', the class
            // will attempt to acquire all internal states of the actual AHRS device.
            Invalidate();

            // Setup timer for keeping track of time elapsed between packet transmission and reception of response.
            PacketTimer.Interval = 1;      // 10 ms delay
            PacketTimer.Enabled = true;
            PacketTimer.Tick += new System.EventHandler(OnPacketTimerTick);

            RXbuffer = new byte[RX_BUF_SIZE];

            //inizialize status
            m_state_covariance = new float[3, 3];
            m_state_covariance[0, 0] = (float)1.0;
            m_state_covariance[0, 1] = (float)0.0;
            m_state_covariance[0, 2] = (float)0.0;
            m_state_covariance[1, 0] = (float)0.0;
            m_state_covariance[1, 1] = (float)1.0;
            m_state_covariance[1, 2] = (float)0.0;
            m_state_covariance[2, 0] = (float)0.0;
            m_state_covariance[2, 1] = (float)0.0;
            m_state_covariance[2, 2] = (float)1.0;

            m_accel_alignment = new float[3, 3];
            m_accel_alignment[0, 0] = (float)1.0;
            m_accel_alignment[0, 1] = (float)0.0;
            m_accel_alignment[0, 2] = (float)0.0;
            m_accel_alignment[1, 0] = (float)0.0;
            m_accel_alignment[1, 1] = (float)1.0;
            m_accel_alignment[1, 2] = (float)0.0;
            m_accel_alignment[2, 0] = (float)0.0;
            m_accel_alignment[2, 1] = (float)0.0;
            m_accel_alignment[2, 2] = (float)1.0;

            m_gyro_alignment = new float[3, 3];
            m_gyro_alignment[0, 0] = (float)1.0;
            m_gyro_alignment[0, 1] = (float)0.0;
            m_gyro_alignment[0, 2] = (float)0.0;
            m_gyro_alignment[1, 0] = (float)0.0;
            m_gyro_alignment[1, 1] = (float)1.0;
            m_gyro_alignment[1, 2] = (float)0.0;
            m_gyro_alignment[2, 0] = (float)0.0;
            m_gyro_alignment[2, 1] = (float)0.0;
            m_gyro_alignment[2, 2] = (float)1.0;

            m_mag_cal = new float[3, 3];
            m_mag_cal[0, 0] = (float)1.0;
            m_mag_cal[0, 1] = (float)0.0;
            m_mag_cal[0, 2] = (float)0.0;
            m_mag_cal[1, 0] = (float)0.0;
            m_mag_cal[1, 1] = (float)1.0;
            m_mag_cal[1, 2] = (float)0.0;
            m_mag_cal[2, 0] = (float)0.0;
            m_mag_cal[2, 1] = (float)0.0;
            m_mag_cal[2, 2] = (float)1.0;

            m_init_quat = new float[4];
            m_init_quat[0] = (float)0.00011;
            m_init_quat[1] = (float)0.00011;
            m_init_quat[2] = (float)0.00011;
            m_init_quat[3] = (float)0.00011;

            m_Q_bias = new float[3];
            m_Q_bias[0] = (float)0.0000795;
            m_Q_bias[1] = (float)0.00007925;
            m_Q_bias[2] = (float)0.00007925;

            m_gain = new float[4];
            m_gain[0] = (float)0.00008;
            m_gain[1] = (float)0.0;
            m_gain[2] = (float)0.0;
            m_gain[3] = (float)0.0;
            m_filter_type= (float)0.0;
            m_convolution_time= (float)0.0;

            m_y_gyro_bias= (float)0.0;
            m_z_gyro_bias=  (float)0.0;
            m_x_accel_bias=  (float)0.0;
            m_y_accel_bias=  (float)0.0;
            m_z_accel_bias=  (float)0.0;
            m_x_mag_bias=  (float)0.0;
            m_y_mag_bias=  (float)0.0;
            m_z_mag_bias=  (float)0.0;
            m_mag_covariance=  (float)0.0025;
            m_accel_covariance = (float)0.000799;

            m_output_enable = (UInt16)0;

            m_output_rate= (UInt16)200;
            m_badurate= (UInt16)1;
            m_port= (UInt16)1200;
            m_ip = new char[30];
            String str = "192.168.010.030";
            m_ip = str.ToCharArray();
               // confReceivedEvent(1);
        }