You may wonder why the world needs Yet-Another-Ground-Control-Station (YAGCS).
The following design goals, which are highly subjective, came to my mind when I started to work on this little project:
- If somehow possible, a GCS should not rely on libraries or tools whose distribution is limited for reasons such as a) operating system or b) commercial distribution or license issues
- A suitable GCS should be able to present the relevant data as simple as possible; rather than including the latest bells and whistles (realistic cockpit instruments, audio, etc.) the data should be presented in a comprehensible form
- The GCS should be as platform independent as possible (i.e., not be Windows-only)
I consider Labview, Flash and Google Earth to be tools/libraries that fall into the first category. Although there is nothing wrong with them since they are are nice and may be very suitable for this application, (in my very personal opinion) I believe that relying on such interfaces bring problems with them (incompatibilities with different versions, operating systems, etc.).
The current prototype of YAGCS relies on QT, OpenGL and a plotting library which is available as open source. QT was chosen due to it's nice signal-slot framework. So far it only understands the text-based telemetry stream that is generated by Jason's APM telemetry stream. The position of the UAV is continuously displayed on the map (previously generated from Google map tiles) and data in the plotting tab is updated. A logfile is also created, which can be used to later replay a flight (rewind and fast-forward are supported). An earlier version supports camera data received via a UDP socket and the current version shows roll/pitch data in a the OpenGL widget. This 3d view could later be extended to show the orientation of the plane relative to the next waypoint, etc. The plane model looks pretty crappy at the moment since I'm bad at modeling.
I would be interested in any feedback. Once I get the code cleaned up I would be also willing to share it if anybody is interested. Since I'm developing it on a linux (Ubuntu) machine I'm not quite sure what would be required to compile it on Windows but it should not be a bigger problem (the few lines of C code to access the serial port would need to be rewritten though).