GPS sensor array management
What is it?
Here’s the description on our Google Code page:
Brady O’Hanlon, a graduate student in the Space Sciences Department at Cornell, is part of a worldwide project to carry out computed tomography analysis on the upper ionosphere. As part of this project, it is necessary to place networks of high-sensitivity GPS receivers in close proximity to one another, and gather the data they collect. The systematic errors in the GPS signal collected over long periods, caused by interference in the upper atmosphere, can then be used to extrapolate information about the ionosphere for further study.
The goal of this project team is to develop software capable of maintaining a network of these receivers (“nodes”), collecting the data they generate on a single PC, uploading it to a central server for further processing on a continuous basis, and providing a user-interface for real-time monitoring of the collected data and performing basic operations (activation and deactivation, adjustment of sensing parameters, etc.) on the nodes.
We plan to distribute the project under the GNU General Public License upon completion; you know, in case you have a bunch of GPS receivers and single-board computers lying around that you want to make use of.
Why am I doing it?
One of the recommended courses for CS majors at Cornell is 5150 – Software Engineering. This class has two major components. During lectures, we learn about how to be good and useful developers. There’s literally no code or even theoretical CS involved: it’s all about how to understand project requirements, meet goals, and navigate the complex legal and political framework that modern software development lives in.
The other component of the class is to assemble a team of 5 to 7 people, and produce a working piece of production software for an actual client by the end of the semester. We’re basically turned loose, told to check in with progress reports and presentations now and then, and expected to have functioning software and a happy client by December 10th. Looking around at the various projects, this one seemed the coolest, and that’s all the motivation I needed.
What are my responsibilities?
One of the project requirements is to have a GUI client that continuously displays the data the nodes collect in real-time, and display noticeable warnings if something is amiss (a node goes offline or is moved unexpectedly, that sort of thing), as well as provide the user with a way to send the nodes commands (reset, turn off, change data rate, etc). I am part of the two-man “sub-team” tasked to develop this GUI, which involves not only interface design, but multi-threaded application development and database programming (since it’s looking like the nodes will talk to the GUI via a MySQL db).
A side responsibility is that as team communications lead: I am tasked with doing the writing necessary to keep “management” (our professor and the client) up-to-date on what is going on. I know a lot of programmers who cringe at the mere mention of expressing their ideas in writing non-programmers can understand, but it’s never been an issue for me, I actually enjoy it a great deal. So that job fell to me also.
You say you want to learn more?
You’re more than welcome to follow our progress on Google Code, although of course since this is our academic project we can’t accept any outside assistance. At the end of the semester when we “turn it loose” however, you can go nuts.