Mercury is a software system for commanding a controlling satellite
ground stations via the Internet. Our motivations for developing Mercury
are to reduce the cost of operating space missions and to increase
mission yields and capabilities. We seek to make accessing space
systems as easy as searching Google.
We are developing an opensource software platform, currently based
on Linux, Apache, MySQL, and Java, to build a network of Internet
enabled ground stations.
Currently, Mercury is deployed to support university satellite missions.
As an example, a Mercury-enabled OSCAR station at Stanford University is
the primary access point for the
QuakeSat satellite,
a first generation CubeSat designed to measure low frequency magnetic field
emissions from Earth that are believed to be earthquake precursor signals.
Other satellites supported by Mercury include
Sapphire and
Opal.
Core ground station services are captured in Mercury, ones that are shared
across multiple missions. We divided these services along autonomy
lines into three hierarchical layers which permit low level hardware
commanding, contact automation for a single station, and peer cooperation
among ground stations teams to enhance globally distributed contacts.
The virtual hardware level captures the fundamental capabilities
of low-level ground station components and enables generic commanding
of heterogeneous hardware. The session level captures typical
automation taks and services of a single ground station system. The
network level captures the services of a ground station network
enabling cooperate teams of ground stations to optimize satellite contacts.
We are capturing these core services in an XML-based command and control
language called the Ground Station Markup Language
(GSML). It abstracts low level, device
dependent syntax into a generic command and control language for standard
station services. This enables Mercury to be used on heterogeneous
systems where GSML drivers are present.
An eventual goal of the Mercury system is to provide flexible application
support to space missions. Using virtual machine (VM) technology, ground
station users will be able to download an entire VM that performs all
their modulation, demodulation, bit sychronization, forward error
correction, packetization, etc, and their application specific services
within ground station computers. This will free the station from specific
application level knowledge and it will only have to focus on running the
users VM.
The Mercury architecture has been implemented using Linux, Apache, MySQL,
and a suite of Java software for command and control of the station
equipment. Reliability has been the most important system quality
attribute with flexiblity a close second. Mercury has been buitl with
recovery-oriented design principles
in mind. We focus on methods for fast recovery, sometimes at the expense
of performance, to build highly available systems.