Constellation#

Constellation is a modern, distributed control and data acquisition framework tailored to highly dynamic environments such as laboratory and beamline setups.

Why Constellation?

The Instrument Integration Challenge#

Coordinated operation of instruments is crucial to modern scientific experiments. The individual components require configuration, synchronization and monitoring throughout the experiment - tasks realized by control and data acquisition software frameworks.

The complexity of established frameworks necessitates engineering effort for integration and operation that is unattainable for smaller experiments, such as laboratory or beamline experimental setups. These projects require more flexible and lightweight solutions that can be adapted to changing experimental conditions quickly and by the instrument experts themselves.

Rethinking Flexibility

An Autonomous Control and Data Acquisition Framework#

Enter Constellation, a flexible, network-distributed control and data acquisition framework that enables rapid integration of new devices and allows scientists to connect new instruments with minimal added effort and with the choice between an implementation in C++ or Python.

The framework is designed with flexibility in mind and targets applications ranging from laboratory test stands up to small and mid-sized experiments with several dozens of connected instruments and large data volumes.

Fast Integration

Finite state machine and satellite interfaces are designed for fast and easy integration of devices.

Autonomous

Constellation operates without a central server, satellites exchange heartbeats to keep in touch.

Flexible

Automatic network discovery of satellites make it easy to add and remove satellites on the fly.

Robust

Constellation is based on widely adopted networking libraries such as ZMQ and MsgPack.

Python & C++ APIs

Integrate new components easily using modern APIs for both rapid prototyping and high-performance systems.

Telemetry & Monitoring

Collect metrics, monitor health, and visualize telemetry data in real time across the entire experiment.

Key Concepts in Constellation#

_images/undraw_online_connection_6778.svg

Autonomously Operating Satellites
Satellites are the main actors in a constellation and control instruments or provide functionality. Constellation is built around the concept of autonomous operation, i.e. satellites run without a central server or user interface connected. The satellite nodes use heartbeats to exchange information and to take action - such as entering a safe mode when identifying errors, or orchestrating launch sequences.

Learn about the System Architecture →

_images/undraw_set_preferences_kwia.svg

Independent User Interfaces
Constellation user interfaces for controlling or monitoring satellites can be started and closed at any time. They are stateless and will reconnect to the running Constellation and its satellites upon start, displaying the latest state of the network. Satellites are independent of these interfaces and continue to run and exchange heartbeat information.

More on Controller Interfaces →

_images/undraw_knowledge_re_5v9l.svg

Extensive Documentation
Scientific software is often only as good as its documentation. This is why Constellation is extensively documented and provides a comprehensive user guide featuring descriptions of the basic concepts of the framework, how-to guides for specific tasks as well as a set of tutorials which ease starting to use it. In addition, in-depth developer documentation guides novel contributors.

Start with the Operators Guide →

_images/undraw_open_source_-1-qxw.svg

Free & Open Source Software
Constellation is entirely free and open source software. The code is released under the EUPL1.2 license, and its documentation and this website are licensed under Creative Commons CC-BY-4.0.

Information on citation & license intent →