- Project Goal
- Workflow Explanation - "How do I contribute?"
- Tasks
- Branches
- File Structure Explanation - "How are files organized?"
This repository hosts all of the programming related information related to BengalBots's 2024-2025 sumo bot for Bengal Bot Brawl. As part of the competition restrictions, we must establish two forms of wireless communication as well as the capability to control our bot without line of sight.
This repository has an associated Github Projcet that outlines a workflow of what tasks are left to do, which ones are in progress, and what we have completed. Here's the gist of things:
Tasks (GitHub Issues) are labeled under three different priority categories: Core
, Enhancement
, and Bougie
.
A Core
priority task is one that must be completed to reach the overall project goal.
An Enhancement
priority task is one that is not strictly required to reach the project goal, but would act as a cherry on top and potentially help during the competition.
A Bougie
priority task is on that exists mostly for the reason of acting as an engineering flex on the competition.
If you aren't familiar with GitHub Branches then feel free to read up on the docs.
There are three classes of branches: main
, dev
, and #task
.
The main
branch is where we will push the code that was used on competition day and will be the final update to this repository.
The dev
or 'development' branch is the one that we will be working with during this project's lifecycle. This is the branch that we will be pulling from periodically to make sure that we are up to date with the code that we need to be.
A task
branch is a branch that is named after one of the Issues of tasks. Each task will have its own branch and only once the task has been completed will the branch be merged into the dev
branch and others will be able to receive the new working dev version.
The file structure for this project while in development will look a bit unorthodox and evolve as more features are implemented. Here's how things should look like in different stages of the project's lifecycle:
In each #task
branch any code related to the completion of the task will be localized to a folder named after the task.
Tip
When the 'pwm' task is completed and merged in to the dev branch, there will be a directory /pwm/
added to the dev branch.
In the dev
branch, directories that exist based off an issue will may be temporary. This is because certain tasks, such as #7 rely on other issues to be completed. Once a task that has another one as a prerequisite is completed, the directory of the prerequisite task will be deleted. (Unless another task depends on it.)
Finally, in the main
branch, there should ideally be completed sets of programs that integrate different tasks into the overall program. You can think of this like building a lego city with lego sets, where the city is the overall program and a set is completed portions of different tasks.
To contribute to this project, simply select a task and check out its related branch. Make sure to go back to the task page after each goal milestone and try to document what you did so that your steps are replicable.
Even if you haven't fully finished the task or inplemented a feature, make sure to periodically commit & push your code to the related task branch.