Skip to content

Setup

To begin, download the SteelEagle repository from GitHub:

git clone --depth 1 https://github.com/cmusatyalab/steeleagle.git
cd steeleagle

The backend code lives in the backend directory. The files pertinent for setting up and running SteelEagle are the docker-compose.yml and the redis.conf.template files.

backend
└── server
    ├── docker-compose.yml
    └── redis
        └── redis.conf.template

The docker-compose.yml file is pre-configured to launch the required backend computation engines and expose the ports needed to allow for communication between components.

The ground control station code lives in the gcs/streamlit directory.

Database Setup

SteelEagle uses Redis for storing drone telemetry such as location, velocity, battery level, etc. To set up Redis follow these instructions:

# Navigate to the Redis directory
cd backend/server/redis

# Create the redis.conf file from the template
cp redis.conf.template redis.conf

Open the redis.conf file in your favorite editor and choose and enter a Redis password on line 874:

user steeleagle on allcommands allkeys allchannels >(use secure password here)

For example, if you chose mypass as the password, this line should now be:

user steeleagle on allcommands allkeys allchannels >mypass

Ground Control Station Setup

Navigate to the Streamlit directory:

cd gcs/streamlit

Next, install the Python dependencies:

pip3 install -r requirements.txt

Next, navigate to the .streamlit directory:

cd .streamlit

Create the secrets.toml config file from the template:

cp secrets.toml.template secrets.toml

Open the secrets.toml file in your favorite editor and fill out the fields according to the instructions:

# The Redis database IP address. This can be 0.0.0.0 if Redis is running on
# the same host
redis = "<server>"
redis_port = 6379
redis_user = "steeleagle"
# The Redis password you specified in redis.conf
redis_pw = "<generate with>"
# Specify as 0.0.0.0:8080 in most cases
webserver = "<server>:8080"
# Specify as 0.0.0.0:1984 in most cases
webrtc = "<server>:1984"
# Specify as 0.0.0.0 in most cases
zmq = "<server>"
zmq_port = 6001
# Choose and enter a password to use for streamlit
password = "<secure password>"

Environment Setup

Navigate to the server directory:

cd backend/server

And create the environment file from the template:

cp template.env .env

Within the environment file, add the Redis password you set up in the REDIS_AUTH variable and also add the externally accessible IP of the host to WEBSERVER_URL:

REDIS_AUTH=<shared key from redis.conf>
WEBSERVER_URL=http://<externally accessible IP of host>