/SPRINT

Scheduling Planning Routing Inter-satellite Networking Tool

Primary LanguagePython

SPRINT

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.

General Setup

  1. Clone the repo: git clone git@github.mit.edu:star-lab/SPRINT.git
  2. Init the appropriate submodules:
    1. cd SPRINT/source
    2. git submodule init circinus_global_planner circinus_orbit_link_public circinus_orbit_propagation circinus_orbit_viz circinus_sim circinus_tools
    3. git submodule update
  3. Set up your environment:
    1. Install and configure your default python and pip to Python 3.6, (recommended in a virtual environment, see next step).
      1. 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.
      2. Not recommended: alternatively Homebrew, pyenv to set to 3.6.
      3. Pick your poison and stick with it or it'll get messy.
      4. Confirm your version of Python (python --version) & location of the installation (which python) is the same for all subsequent steps.
      5. Consider upgrading pip: python3.6 -m pip install --upgrade pip
    2. Make a virtual environment:
      1. Install virtualenv: python3.6 -m pip install virtualenv
      2. 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 executable
        venv_dir is the directory of your choosing to intall this particular virtualenv instance (not in git repo)
      3. Activate the virtual environment:
        OS X or Ubuntu: source venv_dir/bin/activate,
        Windows: source venv_dir/Scripts/activate
    3. Install required python packages.
      1. cd to SPRINT base directory
      2. pip install -r requirements.txt
    4. Install Gurobi:
      1. Download and install Gurobi 8.0.0
      2. Acquire and activate Gurobi License (Academic is free if appropriate)
    5. Framework setting:
      1. nano ~/.matplotlib/matplotlibrc
      2. add line: backend: TkAgg

Simulation Pipeline Demo:

  1. Navigate to SPRINT/scripts
  2. Run simulation:
    a. ./run_const_sim.sh --use orig_circinus_zhou to specify a case corresponding to inputs/cases/orig_circinus_zhou.
    b. ./run_const_sim.sh --help for a description of the other options.

Separated Simulation Demo

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.

  1. For the ground station network:
    a. Navigate to SRPINT/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
  2. For each satellite:
    a. Navigate to SPRINT/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.

Submodule dependencies

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).

History

SPRINT was initiated by CIRCINUS, by apollokit.