This is the main repository used for SeeGoals development, it contains everything to get started developing!
The SeeGoals project consists of different systems needed to make everything to work. Each system exists within this repository and (should) include their own README.md inside their folder, check them out for more details about the system.
Here follows a short description of the systems:
./docker/ - Contains general docker information and Docker Compose files used to startup the different systems.
./firmware/ - All the firmware used on the robots and basestation microcontrollers.
./scripts/ - All scripts used to make development easier in the project.
./software/ - All the software used within the project, i.e. the non-firmware stuff.
./software/GameController/ - No code, only stores temporary data that the GameController needs.
./software/GameViewer/ - A website that displays the current gamestate.
./software/controller/ - The software that plans/execute plans for the robots.
./sotware/proto-messages/ - The definition of our protbuf messages.
./software/ssl-vision/ - Forked software from the SSL league, it parses camera data which our controller uses to plan.
Follow these steps to get started developing!
-
Make sure you have git installed by running
git -vin your terminal. You'll see something similar togit version 2.52.0. -
Setup SSH keys on your system so that you're allowed to clone this repository, follow this guide.
-
You'll need to install Docker. After installation is done, run
docker -vto confirm everything is working, you should see something similar toDocker version 28.5.2, build ecc694264d. -
You also need to make sure that a normal user can run docker, the scripts can break otherwise. Test by running
docker ps(not using sudo), if it doesn't work, try following this guide. -
Install Docker Compose. Verify that it works by running
docker compose version, you should see something similar toDocker Compose version 2.40.3.
-
Start by cloning this repository to the computer you decide to work from, i.e. by using
git clone git@github.com:LiU-SeeGoals/mono-seegoals.git. -
Installing the scripts.
We're using some scripts to make development easier, these scripts should be added to your PATH environment variable so you can run them from anywhere.
The scripts are located at ./scripts/bin/, the full path should be used, for me that is /home/re/Dev/mono-seegoals/scripts/bin/ since I cloned the repository to /home/re/Dev/.
If you're using bash, then update your ~/.bashrc as follows:
export PATH="$PATH:PATH_TO_MONO_SEEGOALS_REPOSITORY"
# for me it is the path below, for you it is not
# export PATH="$PATH:/home/re/Dev/mono-seegoals/scripts/bin"
If you're not using bash, then update the corresponding rc file for your shell (if you're unsure what you're using, you're using bash).
- Then restart your shell and you should have all commands available needed to continue, test by writing
sg-start --helpfrom your home folder, you should see the textas if...printed in your terminal.
The command sg-start is used to start different environments for developing, you can see all available setups by simply running sg-start from anywhere.
Once you've started the correct environment, you can edit the corresponding systems files and test it out live.
The command sg-enter can be used to enter a specific systems docker container. When you've entered a SeeGoals docker container, you should be able to press the up arrow to get the command needed to start that system.
Please see the README.md files in the different system folders for more information on how to develop for that system.
If you want to try out the project on the field in the lab, then:
- Make sure the basestation is powered up and connected to the switch that fetdatorn is connected to.
- From fetdatorn, run the fetdatorn configuration available on
sg-start, press up arrow and run the controller program. - Go to our GameViewer from fetdatorn to see that everything seems to work.
Debugging:
- Check that the
BASESTATION_ADDRwithin./environment.iniis the same as the address the basesation reportssg-fw serial /dev/serial/by-id/BASESATION_ID. - Check that the
ENVIRONMENTwithin./environment.iniis set tocompetitionand notsimulation.