High Altitude Balloon Localization from Photographs

On December 24, 2011, we launched a high altitude balloon equipped with a digital camera and a SPOT GPS tracking device. You can read more about the flight and recovery in this post. The SPOT tracker transmitted latitude/longitude data (but not altitude), and did not transmit above ~20,000 ft. For a while we have been interested in reconstructing the flight path of the balloon based on the pictures taken throughout the flight.

title_pic_blackIt is possible to find the position a photo was taken from given the (x,y) locations of landmarks in a picture and some knowledge about the field of view of the camera. In the picture above we use the positions of two mountain peaks and a triangular reservoir in Socorro to find the position of the balloon. We experimented with two methods:  a method that used three landmarks and a Newton-Raphson solver, and a method that used N landmarks and OpenCV, an open source computer vision library.  The method with OpenCV is more accurate because it can use many landmarks, and also takes into account camera distortion. Using this method we reconstructed the flight path of the balloon, which is shown below. We found out that the balloon burst at around 91,250 ft, and that the winds that day varied significantly with elevation. You can read a detailed write up of both of the methods here, and the code we used is available here. We figure that there are at least a few other people out there who have pictures from a high altitude balloon flight but no GPS data.  If you are in this situation and want to know how high your balloon went, this is the way to go.

Jake_Ascent

GPS Balloon Cutdown

This post goes over how to make a GPS based cutdown for your high altitude weather balloon. FAA regulations (FAR 101) require that unmanned balloons have two methods of flight termination. While balloon burst at high altitude is usually a very reliable way to end your flight, if there is any risk of the balloon reaching neutral buoyancy, such as with launches designed maximize elevation, a secondary cutdown is useful.

For our cutdown we used a ‘thermal knife’ made of 30 gauge nichrome wire (a type of wire also used in toasters).  To trigger the cutdown we used an Arduino Uno board and the “ultimate GPS” from Adafruit. The Arduino checks the GPS coordinates every 60 seconds, and if the GPS has crossed some preset line (for example, the balloon is 30 miles from an ocean or great lake) sends the cutdown signal. Alternatively, you could use a limit on time aloft to trigger the cutdown.  The Arduino cutdown signal triggers a transistor to switch on a reed relay, which completes a circuit with the nichrome wire and a battery pack. The reed relay is needed because the large amount of current that flows through the cutdown circuit loop would fry the transistor! A circuit diagram (created with Circuit Lab) is shown below:

Cutdown circuit diagram

Cutdown circuit diagram

And picture of the circuit soldered on perf board:

Cutdown Circuit

Cutdown Circuit

We used a battery pack with 4AAs to power the cutdown, which provides sufficient current to get the nichrome wire glowing red hot:

Glowing Hot Nichrome Wire

Glowing Hot Nichrome Wire

For balloon flight, the nichrome cutdown wire was coiled around the line between the balloon and the payload and sheathed in heat shrink tubing.  The setup is shown below:

cutdown_setupAs a first test of our cutdown mechanism, we launched a balloon with the Arduino set to trigger the cutdown at 20,000 m. Our blog post about the launch is here, and pictures from that cold snowy day are here. As show below the cutdown worked perfectly, terminating the ascent at 20,082 m:

Elevation recorded by GPS during flight.

Elevation recorded by GPS during flight.

The Arduino sketch that we made to do all of this is based on the Adafruit Ultimate GPS Library, and is available here.