Omnibus is a unified data bus which manages the connection of various data sources (such as DAQ, RLCS, and live telemetry) and sinks (such as plotting software and logging). Basically, it allows us to take data input from a bunch of different sensors, broadcast it over Wi-Fi, and then display/store it in different formats on the receiving end. This is extremely useful during testing (such as cold flows and static fires) when we need real-time data updates from our test rig while being a safe distance away.
Python 3.10 or newer is required. For Linux users, a python package with C headers (such as python3-dev
) is necessary. For Windows users, it's recommended to install and run Omnibus through Git Bash for a smoother Unix-like experience.
- Clone this repo
- If you have git configured with SSH, run
git clone [email protected]:waterloo-rocketry/omnibus.git
- If you don't have git configured with SSH (or you're not sure what that means), run
git clone https://github.com/waterloo-rocketry/omnibus.git
- If you have git configured with SSH, run
- Enter the newly-cloned repo with
cd omnibus
- Create a virtual environment:
- First install the virtualenv library:
pip install virtualenv
- Create the venv:
python -m venv venv
- First install the virtualenv library:
- Activate the virtual environment:
- For osx/linux:
source venv/bin/activate
- For windows:
venv\Scripts\activate
- For osx/linux:
- There are two ways to install Omnibus. The setup script is the easiest method, but if it doesn't work you can manually install the required packages
- Setup script:
- For osx/linux:
source setup.sh
- For windows:
setup.bat
- For osx/linux:
- Manual installation:
- Upgrade pip version:
pip install --upgrade pip
- Run
pip install wheel
, which will help install the rest of the packages more quickly - Install Python dependencies with
pip install -r requirements.txt
. You'll also need to run that command in each of the following folders:sources/ni/
sources/parsley/
sinks/dashboard/
- If you get a permission error, try
pip install --user -r requirements.txt
instead.
- Install the Omnibus library locally with
pip install -e .
- Don't forget the
.
! This allows the sources and sinks (and you) to import Omnibus
- Don't forget the
- Initialize the
Parsley
submodule withgit submodule update --init --recursive
and install the library locally withpip install -e ./parsley
- Upgrade pip version:
- Setup script:
Omnibus works by running sources (to send data), sinks (to receive data) and a server to connect them together.
The easiest way to run Omnibus is through the launcher script python launcher.py
. This will open a GUI (or prompt by text if you pass in the --text
flag) where you can select the sources and sinks to run. You can also manually run the different components of Omnibus using the commands described below.
Known limitation of the launcher script: currently, CLI flags can't be passed to a source/sink so one requiring them (such as parsley
) need to be run manually.
Start the Omnibus server by activating your venv
, then running python -m omnibus
.
Depending on your configuration, you'll need to run one or more sources or sinks. Each one is started independently in the same way: python <sources-or-sinks>/<name>/main.py
. For example, you can start the Dashboard by running python sinks/dashboard/main.py
.
Omnibus uses the same theme as your operating system's default theme (light or dark). If you would like to switch themes, consider changing the theme of your system accordingly.