Пример #1
0
    public static SixAxisCalibration ReadSixAxisCalibration(Report report)
    {
        report.Seek(20);

        var cal = new SixAxisCalibration();

        cal.accOrigin  = new Vector3(report.ReadInt16(), report.ReadInt16(), report.ReadInt16());
        cal.accCoeff   = new Vector3(report.ReadInt16(), report.ReadInt16(), report.ReadInt16());
        cal.gyroOrigin = new Vector3(report.ReadInt16(), report.ReadInt16(), report.ReadInt16());
        cal.gyroCoeff  = new Vector3(report.ReadInt16(), report.ReadInt16(), report.ReadInt16());

        return(cal);
    }
Пример #2
0
    private void GetCalibrationData()
    {
        try
        {
            // Get stick's calibration infomation
            var report = CommandHelper.GetStickCalibration(this.Type, this.handle);
            this.stickCal = SPIReportReader.ReadStickCalibration(report, this.Type);
            Debug.Log(string.Format(
                          "Stick calibration data: xMax:{0} xCenter:{1} xMin:{2} yMax:{3} yCenter:{4} yMin:{5} ",
                          stickCal.xMax, stickCal.xCenter, stickCal.xMin, stickCal.yMax, stickCal.yCenter, stickCal.yMin));
        }
        catch (Exception ex)
        {
            SetDefaultStickCalibratrion();
        }

        try
        {
            // Get stick's parameter infomation, mainly deadzone
            var report = CommandHelper.GetStickParameters(Type, handle);
            this.stickPara = SPIReportReader.ReadStickParameter(report, Type);
            this.deadZone  = stickPara.deadzone;
            Debug.Log(string.Format("Deadzone: {0}", deadZone));
        }
        catch (Exception ex)
        {
            SetDefaultStickParameter();
            Debug.LogError(ex);
        }

        try
        {
            // Get 6-axis sensor's calibration infomation
            var report = CommandHelper.GetSixAxisCalibration(handle);
            sixAxisCal = SPIReportReader.ReadSixAxisCalibration(report);
            for (int i = 0; i < 3; i++)
            {
                accCalCoeff[i]  = (float)(1.0 / (sixAxisCal.accCoeff[i] - sixAxisCal.accOrigin[i])) * 4.0f * 9.8f;
                gyroCalCoeff[i] = (float)((sixAxisCal.gyroCoeff[i] / 10) / (sixAxisCal.gyroCoeff[i] - sixAxisCal.gyroOrigin[i]));
            }
            //Debug.Log(string.Format("6-Axis calibration data: accOrigin:{0} accCoeff:{1} gyroOrigin:{2} gyroCoeff:{3} ",
            //sixAxisCal.accOrigin, sixAxisCal.accCoeff, sixAxisCal.gyroOrigin, sixAxisCal.gyroCoeff));
        }
        catch (Exception ex)
        {
            SetDefaultSixAxisCalibratrion();
            Debug.LogError(ex);
        }
    }
Пример #3
0
 private void SetDefaultSixAxisCalibratrion()
 {
     this.sixAxisCal = new SixAxisCalibration();
 }