A monorepo with all of UBC AeroDesign's software. This is volume 2 of Codex and includes both the software running on the advanced class plane and ground station.
This is subject to change as we build up the project and make design optimizations.
codex-II
├── plane/ # Plane module
| └── peripherals/ # Driver classes for hardware components
| └── sensors.py # Reads sensor data from sensor board
| └── radio.py # Handles bi-direction comms w ground station
| └── PADA.py # Controls PADA state
| └── main.py # Main entry point for plane module
| └── ./wfb-ng # WFB-NG kernel code (built into rpi OS)
├── ground/ # Ground station module
| └── gamer-gui/ # Desktop app
| └── ComposeApp/.../
| └── main.kt # Main entry point for desktop app
| └── backend/ # Backend services (message broker, Redis, ML model)
| └── radio.py # Handles bi-direction comms w plane
| └── redis.py # Message broker, read/write data from Redis server
| └── flask.py # Flask server for exposing ML prediction endpoints
| └── model.py # ML model
| └── docker-compose.yml # Docker compose file to launch the entire ground station module
- Install
Python 3.9.13here (make sure to add to PATH) - Install VSCode here
- Install IntelliJ IDEA Ultimate here (free for uni students, sign up with UBC info)
- Install Docker Desktop here
I'd recommend setting up SSH keys for a more secure way of cloning repositories. You can find the instructions for generating a new SSH key and adding it to Github here.
To clone this repo, follow these steps:
git clone git@github.com:ubcaerodesign/codex-II.git
cd codex-II
Poetry is by far the easiest way to manage packages in Python (feel free to fight me on this). In theory, it keeps things more consistent that your traditional pip and requirements.txt file since it handles package version constraints all for you. It also automatically creates a virtual env for you. Here's a rundown of the commands you will probably use the most.
poetry init # makes a pyproject.toml file
poetry add ___ # to pip install new packages + automatically add to pyproject.toml file
poetry install # either creates a poetry.lock file or updates it
poetry update # updates venv with new packages based on pyproject.toml file
poetry env info # shows you the location of the poetry venv
poetry run python ___.py # need to tack on poetry run to force python to use the poetry venv
To be added.