Spaceflight Live Tracker – a pair of open-source iPhone applications for tracking the flight of high-altitude latex meteorological sounding balloons and in-field prediction of flight path and landing location using Jon Sowman’s CUSF Standalone Predictor.
About the Code
This github repo contains two xcode projects and supporting server side scripts. Location data is transmitted from the SpaceTrans application on one iPhone contained in the payload of the balloon as long as it is below cell tower range. This data is stored on the server and retrieved by the SpaceCalc application running on the second iPhone being used in the field. There is also a separate web interface at `predictor/flightmap.php` for viewing live flight data through a browser. The SpaceCalc application also calculates the burst altitude and ascent rate of the balloon and uses this data to generate the predicted flight path and landing location of the balloon based on the user’s current location. Prediction data used by both the xcode and flightmap are generated by the CUSF Standalone Predictor.
Here’s a little 3 minute teaser of the HD Footage recovered from the camera we launched in August and tracked using the software on an iPhone 3G. Over the course of an hour and a half it rose to over 100,000 feet above sea level (the area known as the stratosphere). When the balloon burst it was carried by parachute, taking 26 minutes to return to the earth and eventually land in a corn field.
Full details about the experiment, launch, and retrieval of the balloon can be found on the project page.
The primary purpose of SpaceTrans is to transmit it’s location to the server. It contains a very simple interface with fields for the server URL and tripid, a Transmit/pause button, and an “I’ve been found!” button.
The Transmit/pause button enables and disables location services, which in turn enables/disables transmissions to the server. While transmitting is enabled, the device will listen for changes in it’s location and update the server every time it receives a new location object. When uodatig the sever, it will also check for messages left for it by SpaceCalc and adjust the accuracy setting of it’s location service accordingly.
The “I’ve been found!” button alerts the server that the device has been found so that it may update it’s interface.
Because of the drain on the battery caused by locstion services combined with the loss of charged caused by the extreme temperatures of near-space, SpaceTrans has several measures of preserving battery life while the device if above the range of cellular towers. When a new trip is started, the application Stste is “heading up” and application listens for changes in it’s network connectionand. If it finds thet it has lost connection it will disable location tracking and set it’s status to “above towers”. Once connection to the network has been reestablished and/or the devices registers a new location update it will resume normal location tracking, setting it’s state to “heading down”. Additionally, when out of cellular range or if the device has not registered a change in it’s location in `kTimeInterval` seconds, the application will listen for significant location updates (such as connecting to s new cell tower) while “above towers”, and will reengage location tracking and transmission when it registers such a location update.
SpaceCalc is used in the field before and during your launch. The Calc tab will allow you to input the mass of you payload, the size of your balloon, you desired burst altitude, and the descent rate provided by your parachute manufacturer.
Pressing the Calc button will calculate the amount of helium needed for your balloon and payload to reach your desired burst altitude. It will also kick off the prediction generation scripts which will calculate the expected flight path and landing location of your capsule using your current location as a launch point.
Once your prediction is finished you can click the Map tab to view it on the map. Inputting a tripid and pressing the Search button will retrieve all location and state information from the server that corresponds to that tripid and display it on the map. The blue dot represents the user’s location. Clicking on it will display the distance between the user and the last reported location of the device (if any). Green pins represent location data transmitted by the SpaceCalc application and the red pin represents the last location received. Clicking on them will display state and altitude information of the device at that time. The predicted flight path is drawn by a purple line, with a purple pin representing the expected landing location. If the “Launch” button has been pressed, clicking on this pin will display the predicted time of touchdown. If not, it will display the predicted flight time.
Pressing the “Search” button will start polling for location data from the server, as well as retrieve prediction data, if available. The application will check for updates every 5 minutes and display them on the map as they arrive. You may additionally manually refresh the map and request all data ve retransmitted by pressing the refresh button. Pausing polling will allow you to update the tripid and restart polling, reloading the map with all new location and prediction dats corresponding to the new tripid.
Pressing the location accuracy button labelled “nearest10” will allow you to instruct the SpaceTeans app to adjust it’s location accuracy. Remember that increasing the locally accuracy will cause significant increase in battery drain, particularly when setting it to “best for nav”. Save this for when you are actually searching for your capsule.
Recommended Launch Procedure
1. Use the CUSF landing predictor on the day of launch to ensure that your expected landing location and flight path are an acceptable proximity to your desired launch location and not near any airports, urban areas, or geographic hazards.
2. At launch location, create prediction using actual weight of balloon and payload using the Calc tab of the SpaceCalc app.
3. Before placing other phone in capsule, begin transmitting using SpacsTrans app and ensure data is sent successfully. Leave app running in foreground, lock screen, secure device in capsule.
4. In Map tab of SpaceCalc, ensure that predicted flight path, expected landing location, and location data from SpaceTrans is being received from server.
5. Press the launch button in SpaceCalc as you release the balloon, capturing the launch time and allowing the app to compute the expected landing time.
This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This work is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.
Credits & Acknowledgments
Server-side prediction software and web interface developed by [Jon Sowman](http://www.hexoc.com), [Adam Greig](http://www.randomskk.net), Rich Wareham, Fergus Noble, Ed Moore and many others.