Scheduling Planning Routing Inter-satellite Networking Tool
Incorporating the Constellation Investigation Repository with Communications, Inter-agent Networking, Uncertainty, and Scheduling
For details on the structure of SPRINT, please see the SPRINT Documentation document located in the documentation folder.
- Clone the repo:
git clone git@github.mit.edu:star-lab/SPRINT.git
- Init the appropriate submodules:
cd SPRINT/source
git submodule init circinus_global_planner circinus_orbit_link_public circinus_orbit_propagation circinus_orbit_viz circinus_sim circinus_tools
git submodule update
- Set up your environment:
- Install and configure your default
python
and pip to Python 3.6, (recommended in a virtual environment, see next step).- Recommended: Direct installation, if needed: Download from https://www.python.org/downloads/. Note that the global planner code is currently tested with Python 3.6.7.
- Not recommended: alternatively Homebrew, pyenv to set to 3.6.
- Pick your poison and stick with it or it'll get messy.
- Confirm your version of Python (
python --version
) & location of the installation (which python
) is the same for all subsequent steps. - Consider upgrading pip:
python3.6 -m pip install --upgrade pip
- Make a virtual environment:
- Install virtualenv:
python3.6 -m pip install virtualenv
- Create virtual environment:
OS X:python3.6 -m virtualenv --python=/usr/local/bin/python3.6 venv_dir/
,
Windows:virtualenv --python=/c/Users/STARLab/AppData/Local/Programs/Python/Python35/python.exe venv_dir
,
Ubuntu:virtualenv -p /usr/bin/python3.6 venv_dir
python=
reflects path to the Python 3.6 executablevenv_dir
is the directory of your choosing to intall this particular virtualenv instance (not in git repo) - Activate the virtual environment:
OS X or Ubuntu:source venv_dir/bin/activate
,
Windows:source venv_dir/Scripts/activate
- Install virtualenv:
- Install required python packages.
- cd to SPRINT base directory
pip install -r requirements.txt
- Install Gurobi:
- Download and install Gurobi 8.0.0
- Acquire and activate Gurobi License (Academic is free if appropriate)
- Framework setting:
nano ~/.matplotlib/matplotlibrc
- add line:
backend: TkAgg
- Install and configure your default
- Navigate to
SPRINT/scripts
- Run simulation:
a../run_const_sim.sh --use orig_circinus_zhou
to specify a case corresponding toinputs/cases/orig_circinus_zhou
.
b../run_const_sim.sh --help
for a description of the other options.
This simulation can be run such that each satellite runs on separate hardware, say a Raspberry Pi. The following demo is for a 2-satellite constellation.
- For the ground station network:
a. Navigate toSRPINT/scripts
b../run_const_sim.sh --use circinus_zhou_2_sats --ground
to specify a two-satellite case and to run the ground station network part - For each satellite:
a. Navigate toSPRINT/scripts
b../run_const_sim.sh --use circinus_zhou_2_sats --satellite
to specify a two-satellite case and to run the satellite part
The satellites can be initialized before the ground station network; however, satellites are given 100 tries to connect to the ground station network, once every second. If the ground station network isn't initialized in time, the satellite program exits.
- circinus_global_planner
- circinus_orbit_link
- circinus_orbit_propagation
- circinus_orbit_viz
- circinus_sim
- circinus_tools
These should be managed as if they are independent and up to date with their own master, before committing the folder from the the SPRINT main repository (which then tracks the commit of the subrepo).
SPRINT was initiated by CIRCINUS, by apollokit.