DOI: 10.57761/ypk8-6s28
title: Project Loon

description: This data set contains flight data from Loon, a Google project and later an Alphabet subsidiary that provided wireless internet access to rural areas using high-altitude balloons.
description: This is data that has been processed from the raw data available on Zenodo. The raw data has a doi: https://doi.org/10.5281/zenodo.5119968 and is available at the link below.


description: #Documentation  
\# Loon Flight Data



This data set contains flight data from Loon, a Google project and

later an Alphabet subsidiary that provided wireless internet

access to rural areas using high-altitude balloons. The data set

includes GPS and sensor data from all 2,131 flights across the

project's entire nine-and-a-half year history, from the first sounding

balloon experiment in August 2011 through the last balloon landing in

May 2021. In total the data set comprises over 218 flight-years of

data (over 127 million telemetry points), the vast majority from

altitudes between 50 and 110 hPa (approximately 15.5 to 21 km above

sea level).



\## Data



The dataset contains the following fields:



\* \*\*flight\_id:\*\* unique identifier representing the flight.

\* \*\*time:\*\* time measurements were taken, in UTC based on GPS.

\* \*\*latitude:\*\* degrees latitude, in the range [-90, 90].

Uncertainty ±2.5 m based on GPS.

\* \*\*longitude:\*\* degrees longitude, in the range [-180, 180).

Uncertainty ±2.5 m based on GPS.

\* \*\*altitude:\*\* geometric altitude, in meters above mean sea

level. Measured at the payload (i.e. the bottom of the

balloon). Uncertainty ±2.5 m based on GPS.

\* \*\*temperature:\*\* ambient temperature, in degrees Kelvin.

Uncertainty ±5 K during day, ±2 K during night.

\* \*\*pressure:\*\* ambient atmospheric pressure, in

hectopascals. Uncertainty ±1 hPa. Measured at the payload

(i.e. the bottom of the balloon)

\* \*\*earth\_ir:\*\* upward long-wave radiative flux, in Watts per meter squared.

See notes below.

\* \*\*earth\_ir\_sensor\_config:\*\* Denotes sensor configuration type

(i.e. where located on the balloon). See notes below.

\* \*\*acs:\*\* Altitude Control System state: 1 if ascending (increasing

altitude), -1 if descending (decreasing altitude).

\* \*\*propeller\_on:\*\* 1 if a propeller is providing lateral thrust,

otherwise 0. If 1 then velocity\_u and velocity\_v will not be computed.



The following derived fields are computed from the base fields listed

above and are provided for convenience. See notes below for details on

how they are computed.



\* \*\*velocity\_u:\*\* Zonal (west-to-east) component of balloon velocity,

in meters per second.

\* \*\*velocity\_v:\*\* Meridional (south-to-north) component of balloon

velocity, in meters per second.

\* \*\*omega:\*\* Vertical velocity, in hectopascals/second.

\* \*\*acceleration:\*\* Average change in horizontal velocity over the

sliding window used to compute balloon velocity, in meters per second

squared.

\* \*\*solar\_elevation:\*\* Angle of sun, in degrees relative to horizontal.

\* \*\*solar\_azimuth:\*\* Angle of sun, clockwise relative to North.

\* \*\*is\_daytime:\*\* 1 if sun is visible from balloon (i.e. not occluded by

the horizon), otherwise 0.



\### Notes



Data is sampled at 1 Hz on the balloon, and the most recent telemetry

sample is downlinked every 10 seconds to 20 minutes (typically 1

minute) depending on configuration. Some filtering is performed on the

balloon.



\#### flight\_id



Flight ID is a unique identifier assigned to a particular flight, and

comprises a balloon class (usually a single letter) followed by a dash

and a number. Flights were usually flown in numerical order, though

sometimes a number would be skipped if a launch was scrubbed. Balloon

classes were as follows. The list does not include \_Bluebird\_,

\_Condor\_, \_Dodo\_, \_Eagle\_ and \_Jay\_ designs, which were limited-run

designs that were either never flown or brief flights with limited

telemetry. Starting in 2013 (Ibis) most envelopes were manufactured

by Raven Aerostar, though some experimental designs were still built

in-house.



Height, radius and mass ranges are given below (where

available). Height and radius are at float. \_System mass\_ is the

combined mass of payload and envelope mass. Starting with the Plover

design balloons also included between 5-25 kg of ballast that could be

dropped to extend the life of the balloon, and any ballast kept after

launch is included in system mass. \_Lift-gas mass\_ is the mass of lift

gas (Helium) at launch and does not account for leakage over time, nor

does it include air pumped into the ballonette for altitude control.



\|Code \|Class \|Num Flights\|Envelope Type \|Height [m]\|Radius [m]\|System Mass [kg]\|Lift gas mass [kg]\|Years in service \|Notes\|

\|-------\|-------------\|-----------\|----------------\|----------\|----------\|----------------\|-------------------\|----------\|-----\|

\|Icharus\|Icharus \|12 \|Latex sounding \| \| \| \| \| 2011 \|Latex sounding balloons used at the start of the project to test balloon-to-ground and balloon-to-balloon networking.\|

\|PT \|Pterodactyl \|40 \|Latex sounding \| \| \| \| \|2012-2013\|Latex sounding balloon.\|

\|A \|Albatross \|22 \|Aluminized Mylar zero-pressure ("trash-bag shaped")\| \| \|7-17\| \| 2011-2012 \|First Loon-manufactured envelope.\|

\|F \|Falcon \|9 \|Cylindrical superpressure balloon \| 34.8\| 0.97\| 23-34 \| 5 \| 2012 \|First Loon-manufactured superpressure balloon, from clear PET Mylar.\|

\|G \|Grackel \|1 \|Solar Montgolfiere \| \| \|48\|9\|2014\|Brief attempt at designing a solar Montgolfiere. \|

\|I \|Ibis \|430 \|Pumpkin-shaped superpressure\| 7.4 \| 8.9\|49-155\|12-24\| 2012-2016 \| Pumpkin-shaped superpressure balloon using PE material. This is the design we used for our public launch over New Zealand in 2013.\|

\|K \|Kestel \|21 \|Zero pressure\| \| \|7-20\|2-4\|2013-2015\|Zero pressure balloon built out of 0.8 mil PE material.\|

\|L \|Lark \|42 \|Pumpkin-shaped superpressure\| 8.5-8.8\| 10.2-10.5\|81-119\|13-20\|2013-2015\|Updated pumpkin-shaped superpressure balloon (PE material).\|

\|M \|Merlin \|58 \|Pumpkin-shaped superpressure\| 7.0\| 8.4\|56-79\|9-15\| 2014-2015\|\|

\|NG, NR \|Nighthawk \|434 \|Pumpkin-shaped superpressure\| 7.6-7.7\| 9.1-9.3\|64-229\|11-22\| 2015-2016\|\|

\|O \|Osprey \|235 \|Pumpkin-shaped superpressure\| 8.0\| 9.6\|92-113\|19-25\| 2016-2018 \|\|

\|OL \|Osprey Large \|159 \|Pumpkin-shaped superpressure\| 8.3\| 9.9\|89-119\|17-26\| 2016-2018\|\|

\|P, PG \|Plover \|370 \|Pumpkin-shaped superpressure\| 8.7\| 10.4\|75-177\|16-32\| 2017-2021\|Updated design with "reverse ballonet" that pumped air into the outer-layer gas bag. Also flown as "LN".\|

\|Q \|Quail \|1 \|Pumpkin-shaped superpressure\| 10.1\| 12.2\|173\|37\| 2017-2021\|Larger reverse ballonet design. Also flown as "LN".\|

\|LN \|Loon \|280 \|Plover or Quail \| \| \| \| \|2019-2021\|Flights launched after mid-2019 were designated as "LN" class regardless of envelope design. LN-001, 6, 7, 24-27, 33, 82-89, 106-111, 117-120, 134-135, 143-154, 238, 267-269 used the larger Quail envelope, all others used Plover envelope designs.\|

\|EXP, MI, V1, VG \|Experimental\|13 \|Various\| \| \| \| \| \| \| Various experimental one-off designs\|



\#### time, latitude, longitude, altitude



Timestamp, latitude, longitude, and geometric altitude were all

collected using a NovAtel OEM7 receiver, which processes signals

collected by the standard dual GPS paddle antennas located on either

side of the avionics bus. The avionics bus is located between 1.5 and

3 meters below the base of the balloon envelope.



Time is the time data was collected on the balloon. Most (\~95%) of

times are rounded to the nearest second, but time is still reported to

millisecond accuracy to ensure that [flight\_id, time] uniquely labels

a single telemetry. In CSV files time is represented as a

[RFC3339\]\(https://datatracker.ietf.org/doc/html/rfc3339)-formatted UTC

timestamp of the form YYYY-mm-ddTHH:MM:SS.fffZ.



\#### temperature



Ambient temperature of environment around sensor. This is not

corrected for daytime effects of solar radiation on the sensor itself,

and we suspect this leads to biased readings (higher than ambient air

temperature) during daylight hours.



\#### earth\_ir, earth\_ir\_sensor\_config



Upwelling IR was measured as temperature using a [Melexis

MLX90614ESF-BAA-000-TU\]\(https://www.melexis.com/en/product/MLX90614/Digital-Plug-Play-Infrared-Thermometer-TO-Can)

infrared thermometer, which reports object temperature in degrees

Kelvin. Uncertainty of raw data depends on both measured temperature

and the sensor's self-temperature (see linked-to spec sheet), but a

rough guide is ±6 degrees C. Raw reported values were lightly filtered

on-balloon before being reported, and then converted to flux using the

formula ir\_flux = 0.000000056704 · (temperature\_kelvin)⁴.



The sensor points straight down (with an uncertainty of about ±2

degrees), but was placed in different locations throughout the

project. The earth\_ir\_sensor\_config parameter groups observations with

similar configurations of the IR sensor on the payload. For analyses

sensitive to the overall IR flux bias, these groups of observations

should be treated separately or used to assess systematic biases in

results.



\#### acs



Most loon balloons could change altitude through use of an Altitude

Control System (ACS), which would pump air into separate gas bag

(called a ballonet) to cause the balloon to descend, and vent air from

the ballonet to cause the balloon to ascend again. Balloons would then

be "steered" to a target by catching winds at different altitudes.



This field reports 1 if the ACS was trying to ascend (that is, venting

air from the ballonet), -1 if the ACS was trying to descend (pumping

air into the ballonet), and 0 otherwise. Note that balloon altitude or

pressure may still change even when ACS is off (e.g. due to loss of

superpressure, turbulence and vertical winds, or deliberate ballast

drop), and in some instances may not change even if ACS is on (e.g. if

trying to ascend when the ballonet is already completely vented).



\#### propeller\_on



A handful of Loon flights (12 in all) experimented with a propeller,

which would produce lateral propulsion in addition to that provided by

the surrounding winds. This parameter reports 1 if the propeller was

on at the time, 0 otherwise. Wind velocity should not be computed from

GPS location when propeller\_on is non-zero, as the balloon's velocity

includes both ambient wind velocity and thrust from the propeller.



\#### velocity\_u, velocity\_v



Together these fields represent balloon velocity computed using a

6-minute (± 2 minutes on each side) sliding window centered at the

given time. velocity\_u represents the zonal (west-to-east) velocity

component, while velocity\_v represents the meridional (south-to-north)

velocity component, both in meters per second. Both values are

computed entirely from the GPS location fixes across a short time

window, and are provided for convenience.



The velocity at a telemetry point P at time t is computed as follows:



1\. Set P<sub>p</sub> to the point with timestamp t<sub>p</sub> closest to (t -

3 minutes) and P<sub>n</sub> to the point with timestamp t<sub>n</sub>

closest to (t + 3 minutes). If a point cannot be found within 3 ± 2 minutes

on either side of P then the point is skipped (velocity\_u and velocity\_v

will not be set).



1\. Compute distance vector D<sub>p</sub> = distance(P<sub>p</sub>, P) and

D<sub>n</sub> = distance(P, P<sub>n</sub>). Distance vectors are in meters

(u, v) and computed assuming the WSG84 ellipsoid. Altitude is assumed to be

at the midpoint geometric height.



1\. Compute velocities for the segments on either side of the current point:



\ > V<sub>1</sub> = D<sub>p</sub> / (t - t<sub>p</sub>) \

\ > V<sub>2</sub> = D<sub>n</sub> / (t<sub>n</sub> - t).



1\. If V<sub>1</sub> > 110 m/s, V<sub>2</sub> > 110 m/s, or ‖V<sub>1</sub> -

V<sub>2</sub>‖ > 50 m/s then the point is skipped. This is intended to

reject outliers that are likely due to GPS error rather than actual motion.



1\. Set balloon velocity vector [velocity\_u, velocity\_v] to the weighted mean of

V<sub>1</sub> and V<sub>2</sub>:



\ > V = w<sub>1</sub> · V<sub>1</sub> + w<sub>2</sub> · V<sub>2</sub> \

\ > where w<sub>1</sub> = (t<sub>n</sub> - t) / (t<sub>n</sub> -

\ > t<sub>p</sub>) and w<sub>2</sub> = (t - t<sub>p</sub>) / (t<sub>n</sub> -

\ > t<sub>p</sub>).



Loon balloons are driven by the surrounding air, and in constant wind

a balloon's velocity is a good proxy of the average velocity of the

surrounding winds over the time window. (The one exception is when

propeller\_on is non-zero; velocity\_u and velocity\_v are both set to

NaN for those points.) When local wind velocity changes it can take a

few minutes for the balloon to "catch up" to the surrounding

winds.



It should be noted that pressure and geometric altitude are measured at the

payload attached to the bottom of the balloon, so the winds contributing to the

overall velocity will typically include altitudes up to 10 meters higher

depending on the class of balloon. The range of altitudes contributing to the

computed velocity can be even higher if the balloon is changing altitude during

the six-minute smoothing window.



\#### omega



Vertical velocity in hectopascals/second, computed using the same

sliding window and weighted averaging as balloon velocity. A positive

value indicates the balloon is descending (lower altitude, higher

pressure). High absolute omega for a given point means balloon

velocity was integrated over a larger range of altitudes.



\#### acceleration



Average change in horizontal velocity over the sliding window used to compute

balloon velocity, reported in meters per second squared:



\> A = ‖V<sub>2</sub> - V<sub>1</sub>‖ / [0.5 · (t<sub>n</sub> - t<sub>p</sub>)]

\> \

\> where V<sub>1</sub>, V<sub>2</sub>, t<sub>n</sub> and t<sub>p</sub> are the

\> same as when computing balloon velocity.



Note that the change in velocity is divided by \_half\_ the total window

width. This is because V<sub>1</sub> and V<sub>2</sub> are computed

across the range (t - t<sub>p</sub>) and (t<sub>n</sub> - t)

respectively, and so represent velocity at the midpoint of their

respective segments.



\#### solar\_elevation, solar\_azimuth, is\_daytime



Calculations are based on the algorithm used by the [NOAA Solar

Calculator\]\(https://www.esrl.noaa.gov/gmd/grad/solcalc/index.html),

and includes atmospheric refraction effects. Solar elevation is

relative to horizontal, so is\_daytime can still be true (1) even if

solar\_elevation is slightly negative.