<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<!-- 
  This file can provide additional camera calibration settings beyond those built into the SDK itself.
  Each calibration is for a particular camera (indicated by USB vid & pid pair) and a particular
  capture resolution for the camera. Note: it is very important when capturing images used to calibrate
  a camera that the image acquisition tool can actually control this capture resolution within the camera
  itself and that you use this setting correctly. Many image acquistion tools do not in fact provide
  this level of control.

  Beyond simply providing additional, new camera calibrations, calibrations provided herein can
  *replace/update* those that are builtin to the SDK. This matching is keyed, of course, by the
  (vid, pid, size) triple. Further, if such a calibration has the 'remove' attribute with value 'true',
  any existing calibration with that key is removed (and the calibration itself not added).

  Calibrations are internally processed according to aspect ratio. If a format is requested in a size
  that is not calibrated, but a calibration does exist for the same aspect ratio on the same camera,
  then the latter will be scaled to accommodate the request. For example, if a 640x480 calibration
  is requested but only a 800x600 calibration exists for that camera, then the 800x600 is scaled
  down to service the 640x480 request.

  Further, it is important to note that if *no* calibrations exist for a given camera, then Vuforia
  is offered the entire range of capture resolutions that the hardware can support (and it does its
  best to deal with the lack of calibration). However, if *any* calibrations are provided for a camera,
  then capture resolutions in those aspect ratios supported by the camera for which any calibrations
  are *not* provided are *not* offered. Thus, if you calibrate a camera but fail to calibrate all
  the camera's supported aspect ratios, you limit the choices of capture resolutions that Vuforia can
  select from.

  One image acquisition program that supports control of camera capture resolution is YouCam 7:
    https://www.cyberlink.com/products/youcam/features_en_US.html

  Programs that can process acquired images to determine camera calibration settings include:
    https://www.3dflow.net/3df-zephyr-free/ (see "Utilities/Images/Launch Camera Calibration" therein)
    http://graphics.cs.msu.ru/en/node/909
  Note that the type of images that must be acquired in order to calibrate is specific to the
  calibration software used.

  The required contents are illustrated here by example. Note that for the attribute names, both the
  camelCase or the underscore_variations are supported; they are equivalent. The attributes for
  each Calibration are as follows:

    size (int pair): space separated camera resolution (width, height).
    focalLength (float pair): space separated focal length value.
    principalPoint (float pair): space separated principal point values (width, height).
    distortionCoefficients (an 8-element float array): distortion coefficients in the following form
        (r:radial, t:tangential): [r0, r1, t0, t1, r2, r3, r4, r5]
        see https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html

  The examples here are commented out as the values are built-in to the FTC SDK. They serve instead
  here as examples on how make your own.

-->
<Calibrations>

    <!-- ======================================================================================= -->

    <!-- Microsoft Lifecam HD 3000 v1, Calibrated by PTC using unknown tooling -->
    <!-- <Camera vid="Microsoft" pid="0x0779">
        <Calibration
            size="640 480"
            focalLength="678.154f, 678.17f"
            principalPoint="318.135f, 228.374f"
            distortionCoefficients="0.154576f, -1.19143f, 0f, 0f, 2.06105f, 0f, 0f, 0f"
            />
    </Camera> -->

    <!-- ======================================================================================= -->

    <!-- Microsoft Lifecam HD 3000 v2, Calibrated by PTC using unknown tooling -->
    <!-- <Camera vid="Microsoft" pid="0x0810">
        <Calibration
            size="640 480"
            focalLength="678.154f, 678.17f"
            principalPoint="318.135f, 228.374f"
            distortionCoefficients="0.154576f, -1.19143f, 0f, 0f, 2.06105f, 0f, 0f, 0f"
            />
    </Camera> -->

    <!-- ======================================================================================= -->

    <!-- Logitech HD Webcam C310, Calibrated by by Robert Atkinson, 2018.05.30 using 3DF Zephyr -->
    <!-- <Camera vid="Logitech" pid="0x081B">
        <Calibration
            size="640 480"
            focalLength="821.993f, 821.993f"
            principalPoint="330.489f, 248.997f"
            distortionCoefficients="-0.018522, 1.03979, 0, 0, -3.3171, 0, 0, 0"
            />

        <Calibration
            size="640 360"
            focalLength="715.307f, 715.307f"
            principalPoint="319.759f, 188.917f"
            distortionCoefficients="-0.0258948, 1.06258, 0, 0, -3.40245, 0, 0, 0"
            />
    </Camera> -->

    <!-- ======================================================================================= -->

    <!-- Logitech HD Pro Webcam C920, Calibrated by Robert Atkinson, 2018.05.30 using 3DF Zephyr -->
    <!-- <Camera vid="Logitech" pid="0x082D">

        <Calibration
            size="640 480"
            focalLength="622.001f, 622.001f"
            principalPoint="319.803f, 241.251f"
            distortionCoefficients="0.1208, -0.261599, 0, 0, 0.10308, 0, 0, 0"
            />

        <Calibration
            size="800 600"
            focalLength="775.79f, 775.79f"
            principalPoint="400.898f, 300.79f"
            distortionCoefficients="0.112507, -0.272067, 0, 0, 0.15775, 0, 0, 0"
            />

        <Calibration
            size="640 360"
            focalLength="463.566f, 463.566f"
            principalPoint="316.402f, 176.412f"
            distortionCoefficients="0.111626 , -0.255626, 0, 0, 0.107992, 0, 0, 0"
            />

        <Calibration
            size="1920, 1080"
            focalLength="1385.92f , 1385.92f"
            principalPoint="951.982f , 534.084f"
            distortionCoefficients="0.117627, -0.248549, 0, 0, 0.107441, 0, 0, 0"
            />

        <Calibration
            size="800, 448"
            focalLength="578.272f , 578.272f"
            principalPoint="402.145f , 221.506f"
            distortionCoefficients="0.12175, -0.251652 , 0, 0, 0.112142, 0, 0, 0"
            />

        <Calibration
            size="864, 480"
            focalLength="626.909f , 626.909f"
            principalPoint="426.007f , 236.834f"
            distortionCoefficients="0.120988, -0.253336 , 0, 0, 0.102445, 0, 0, 0"
            />

    </Camera> -->

    <!-- ======================================================================================= -->

    <!-- Logitech HD Webcam C270, Calibrated by Noah Andrews, 2019.03.13 using 3DF Zephyr -->
    <!--<Camera vid="Logitech" pid="0x0825">
        <Calibration
            size="640 480"
            focalLength="822.317f, 822.317f"
            principalPoint="319.495f, 242.502f"
            distortionCoefficients="-0.0449369, 1.17277, 0, 0, -3.63244, 0, 0, 0"
            />
    </Camera> -->

    <!-- ======================================================================================= -->

</Calibrations>
