labrad development has moved to GitHub.
|Problem||Unmanageable inflexible spaghetti code is controlling your experimental setups|
|Implication||Slowed progress due to frequent duplication of effort and debugging headaches|
|Solution||LabRAD (RAD = Rapid Application Development)|
Note: LabRAD is not specific to the use case described here. It is designed to be useful in any research or production environment requiring complex instrument control and/or data acquisition.
LabRAD was developed in response to an increasingly complex software effort needed to run experiments in the Martinis Group at the UC Santa Barbara Physics Department. The group's effort is focused on building a Quantum Computer using superconducting integrated circuits. The experiment will eventually include a large number of Qubits, each requiring dedicated control mechanisms. To prevent frequent duplication of effort, a scalable software architecture was needed to provide the required control. This architecture needed to accommodate multiple users and developers, since many different graduate students and post docs are sharing the software and hardware resources required to run their respective experiments. LabRAD was specifically designed to alleviate the problems inherent in designing a complex, scalable, distributed control system managed by several developers and users. As science advances, novel experiments in all fields are becoming increasingly involved, making LabRAD a generally useful tool beyond the developing group.
LabRAD provides a platform to easily break up a complex software project into small, manageable modules that can be written in different programming languages, run on different computers, and independently maintained by different developers. These modules communicate over a standard network connection, immediately allowing for the system to be remotely accessed and controlled. A growing library of standard modules is available, providing out-of-the-box functionality like hardware interfacing, data storage and presentation, system exploration, etc. LabRAD could potentially be used for almost any distributed software project imaginable, but is targeted at scientific research setups, supporting numerical data (real, complex, timestamps, ...), unit conversion, graphing, etc.
After uncompromising performance, the highest priority of the LabRAD project is ease of use. To start playing immediately, check out our:
LabRAD Quick Start Tutorial
For a more thorough introduction, refer to the:
~ Markus Ansmann, Dec 10th, 2007