Overview

Each time you take a photo, you capture information that is referred to as metadata. This data is extremely useful when creating 3D reconstructions.

Metadata is stored in two types of files:

  • EXIF (Exchangeable Image File): contains information about the specific camera settings used when capturing a specific image. This information includes details such as GPS position, camera make and model, date and time, shutter speed, focal length and more.
  • XMP (Extensible Metadata Platform): the data standard for Adobe’s Extensible Metadata Platform

The information included in metadata files consists of camera intrinsics and camera extrinsics.

  • Camera intrinsics refers to the focal length and optical center of the camera
  • Camera extrinsics refers to the camera’s physical location and the direction it is pointing.

Using the extrinsic parameters, we can create camera coordinates which are mapped into the image plane using the intrinsics parameters.

In-depth

Skydio Camera Information

Photo Camera Intrinsics

Below are example values from EXIF/XMP data relevant to camera intrinsics. The values are from our “prototype” calibrations which should be very close for a drone of that type. Image files from a specific drone will have factory-calibrated values that will be even more accurate.

Skydio 2/2+ and X2 Color 

Calibrated Focal Length X

2376.5625
Calibrated Focal Length Y 2376.5625

Calibrated Optical Center X

2027.5000
Calibrated Optical Center Y 1519.5000
Dewarp Data 0.13000, -0.24000, 0.10400
Image Width 4056
Image Height 3040
Focal Length 3.7 mm
Focal Length in 35mm Format 21 mm
Focal Length 3.7 mm (35 mm equivalent: 21.0 mm)
Hyperfocal Distance 0.92 m

X2 Color/Thermal 

Calibrated Focal Length X

4848.1875

Calibrated Focal Length Y

4832.3438

Calibrated Optical Center X

2027.5000

Calibrated Optical Center Y

1519.5000

Dewarp Data

0.00000, 0.00000, 0.00000

Image Width

4056

Image Height

3040

Focal Length

7.5 mm

Focal Length in 35mm Format

41 mm

Focal Length

7.5 mm (35 mm equivalent: 41.0 m)

Hyperfocal Distance

3.73 m

Computing pixel from point

The model we use is a simplification of the standard OpenCV model with the denominator coefficients and tangential coefficients omitted. This is a similar to the model from A Flexible New Technique for Camera Calibration, 1998

Below is an example of how to compute the projection of a point from the example Skydio 2 calibration in Python:

from __future__import print_function
import math

# Focal length = [Calibrated Focal Length X, Calibrated Focal Length Y]
F = [2376.5625, 2376.5626]
# Camera center = [Calibrated Optical Center X, Calibrated Optical Center Y]
C = [2027.5000, 1519.5000]
# Dewarp data
W = [0.13000, -0.24000, 0.10400]

# Example point in RDF camera frame.
# This point would be 1m right, 2m down, 5m forward of the camera.
P = [1.0, 2.0, 5.0]

# Python function to compute pixel from point
def pixel_from_point(F, C, W, P):
"""
Example of gimbaled camera projection

Args:
F: Focal lengths (pixels, length 2)
C: Camera center (pixels, length 2)
W: Distortion weights (length 3)
P: RDF point in camera frame (length 3)

Returns: pixel coordinates in form [column, row]
"""
P_img = [P[0] / P[2], P[1] / P[2]]
r = math.sqrt(P_img[0] ** 2 + P_img[1] ** 2)
weight = 1 + W[0] * (r ** 2) + W[1] * (r ** 4) + W[2] * (r ** 6)
P_dist = [P_img[0] * weight, P_img[1] * weight]
pixel = [P_dist[0] * F[0] + C[0], P_dist[1] * F[1] + C[1]]
return pixel

pixel = pixel_from_point(F, C, W, P)
# Should print: [2511.003085, 2486.50617]
print(pixel)

 

EXIF/XMP Tag Descriptions

To access EXIF or XMP data, use a metadata reader tool such as https://exif.tools/.

Current as of Skydio firmware version 15.9.41

Coordinate Conventions

GPS All GPS data is using WGS84 coordinates
FLU Front left up coordinates
NED North East Down local cartesian coordinates relative to an arbitrary GPS linearization point. Yaw north is zero, yaw east is 90 degrees

Reference frames

Visual Frame

From our visual system, relative to where the drone turned on

World Frame

GPS based reference frame, linearized about an arbitrary point near where the drone is turned on

Hybrid Frame

From our visual system, transformed into the world frame

Standard EXIF GPS Field

GPSVersionID
GPSProcessingMethod
GPSLatitude
GPSLongitude
GPSAltitude
GPSAltitudeRef
GPSTimeStamp
GPSSatellites
GPSHPositioningError
GPSImgDirection
GPSImgDirectionRef
GPSSpeed
GPSSpeedRef
GPSTrack
GPSTrackRef

drone-skydio

VehicleID

Unique vehicle ID

VehicleName

Drone name

  • Both Skydio 2 and Skydio 2+ will show "2" as the VehicleName
  • If you are using a Skydio X2 Color the VehicleName is displayed as X2 Wide
  • If you are using a Skydio X2 Color/Thermal the VehicleName is displayed as X2 Narrow

ReleaseKey

Software release key

FlightId

unique flight ID

LogHandle

Log name

TakeoffUtime

Drone time since boot [microseconds]

CaptureUtime

Photo capture time [microseconds]

Latitude

Drone latitude [degrees]

Longitude 

Drone longitude [degrees]

AbsoluteAltitude

Absolute altitude above sea level [meters]

VehiclePositionNED

Position of the drone in the hybrid frame (north-east-down) [meters]

VehicleSpeedNED

Velocity of the drone in the hybrid frame (north-east-down) [meters /second]

VehicleOrientationNED

Orientation of the drone in the hybrid frame (roll, pitch, yaw) [degrees]

VehicleOrientationQuatNED

Orientation of the drone in the hybrid frame [quaternion]

CameraPositionNED

Position of the gimbal in the hybrid frame (north-east-down) [meters]

CameraOrientationNED

Orientation of the gimbal in the hybrid frame (roll, pitch, yaw)[degrees]

CameraOrientationQuatNED

Orientation of the gimbal in the hybrid frame [quaternion]

VehiclePositionFLU

Position of the drone in the visual frame (forward-left-up) [meters]

VehicleSpeedFLU

Velocity of the drone in the visual frame (forward-left-up) [meters /second]

VehicleOrientationFLU

Orientation of the drone in the visual frame (roll, pitch, yaw) [degrees]

VehicleOrientationQuatFLU

Orientation of the drone in the visual frame [quaternion]

CameraPositionFLU

Position of the gimbal in the visual frame (forward-left-up) [meters]

CameraOrientationFLU

Orientation of the gimbal in the visual frame (roll, pitch, yaw) [degrees]

CameraOrientationQuatFLU

Orientation of the gimbal in the visual frame [quaternion]

CalibratedFocalLength

Focal length of the user camera lens [pixels]

CalibratedOpticalCenter

Optical center of the user camera lens [pixels]

DewarpData

Vector of distortion coefficients specific to the camera model used

We can provide the distortion polynomial these correspond to

drone-skydio-3dscan

Namespace used for metadata specific to 3D Scan

ScanSkillStateId

UUID of this scan

The polygon prism is a bounding prism that defines the volume being scanned. It is defined by a list of 2D lat/lon points, and a min and max altitude.
PolygonPrismLatitudes

Comma-separated list of polygon vertex latitudes

Example:

"34.711897674098346, 34.711934502374667,

34.711825992904018"

PolygonPrismLongitudes

Comma-separated list of polygon vertex longitudes

Example:

"-86.654600276271509,-86.654718602075093,

-86.654606026734086"

PolygonPrismMinAltitude

Minimum altitude of the polygon prism

PolygonPrismMaxAltitude

Maximum altitude of the polygon prism

The GPS position of the linearization point used as an ENU Euclidean frame for poses:

  • GpsLinearizationPointLatitude
  • GpsLinearizationPointLongitude
  • GpsLinearizationPointAltitude
Position and orientation (RDF) of the gimbal in the linearized GPS frame. These poses are the most accurate photo poses as determined by 3D Scan
  • GpsFrameCameraPosition
  • GpsFrameCameraOrientationQuat

Explore More

Explore related articles for additional information:

How to create 3D reconstructions

What Is Camera Calibration? by MathWorks

 

If you have questions or need additional support—feel free to reach out! Skydio Support

 © 2021 Skydio, Inc. All rights reserved A0088

Was this article helpful?