Autonomy Bootcamp - Archived F25
This bootcamp is being archived! If you have not started this bootcamp before 2025-09-04, please go to https://uwarg-docs.atlassian.net/wiki/spaces/BOOT/pages/3355672582 and start that one.
If you started this bootcamp before this date, then you have until the end of 2025-09-20 to complete this old bootcamp. After that, only submissions for the new bootcamp will be accepted.
Alternatively, you can start working on the new bootcamp now if you want.
Overview
Before embarking on this subteam bootcamp, please ensure you’ve completed these instructions: https://uwarg-docs.atlassian.net/wiki/spaces/AD/pages/2241298916.
Create a post in the #auto-bootcamps forum to get started! You can ask for help there and notify the Autonomy bootcamp reviewers when you are done.
Setup
Dear WARG Bootcamper,
Congratulations and welcome to the AutoBots family! We're excited to have you on the team. I'll be sending you our onboarding documents soon, please feel free to get a head start on that.
Yours sincerely,
Jane Doe
VP of Human Resources
AutoBots
Git and GitHub
“I’m still waiting for QA to give me back my code [on the USB stick].” - Overheard at the water cooler
Git is a powerful version control system that Autonomy uses to organize many members contributing to the same codebase. Think of it as undo/redo, copying and renaming files to save an older version, and branching all rolled into one.
GitHub is a source code hosting and sharing website owned by Microsoft.
Forking
Create a personal copy of the repository by forking it.
If you haven’t already, create an account on GitHub. You can use either your UW email or something else. Otherwise, log in with the GitHub account you would like to use with WARG.
Click on the Fork button (towards the top right, above the About section).
Click on the green Create fork button.
GitHub redirects you to your own copy of the repository.
Git setup (General for all autonomy projects)
If you have already setup Git, you do not need to set it up again.
If you haven’t already, download and install Git: https://git-scm.com/
Git should already be installed on Linux and MacOS.
Windows (Linux and MacOS users skip step): Set line endings.
Check:
git config --get core.autocrlfIf it is
trueorinput, you do not need to set anything.
Set:
git config --global core.autocrlf [setting].--globalis optional, and replace[setting]with eithertrueorinputWhen in doubt, use
input
Additional information here: https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_core_autocrlf
Configure Git with your name and email: https://linuxize.com/post/how-to-configure-git-username-and-email/
--globalif you want to use it as the default, otherwise it will just be for the current repository.You can use your anonymous GitHub no-reply email.
Cloning the repository
Go to GitHub and navigate to your copy of the repository, under your account. Do not go to WARG’s copy of the repository!
Click on the green Code button.
In the dropdown, you can copy either the HTTPS or SSH link.
Windows and MacOS: Copy the HTTPS link (although you can copy the SSH link if you desire).
Linux: Copy the SSH link.
If you really want to use HTTPS on Linux, you have to install the Git Credential Manager or create a Personal Access Token on GitHub. How to do this is left as an exercise for you.
If you’re using the SSH link (HTTPS link users skip this):
If you haven’t already, create a new SSH key and add it to your GitHub account:
If you add a password to your SSH key, you will have to type it in every time you use Git to interact with GitHub (e.g. cloning, pulling, pushing). You can always delete and create a new SSH key if you change your mind later.
Pick a parent directory to clone (download the code) into.
Example: Cloning in
C:\Users\Username\will create a folder and then populate it:C:\Users\Username\computer-vision-python\[files]
Open the console in the parent directory.
Windows: Command prompt or Powershell.
Linux and MacOS: Terminal.
Clone the repository:
git clone [link you copied], where[link you copied]is the link you copied in step 2.HTTPS link users: You will be prompted to log into your GitHub account. Do so.
Update the repository submodules: Run the project setup scripts (If provided)
Windows:
.\setup_project.ps1Linux/Mac:
source ./setup_project.sh
Done!
Python and virtual environment
“It’s fine, it works on my machine.” - Overheard in the software development cubicle farm
Python is the programming language this bootcamp uses.
A Python virtual environment is a self contained environment with a specific Python version and package versions. Different virtual environments can be used for different projects to maintain consistency.
If you haven’t already, download and install Python 3.11 : https://www.python.org/
If you have a different version of Python installed:
Python 3.9 or lower: You must install Python 3.11 (you do not need to uninstall the other version(s)). This is because of a language feature dependency (specifically, match statements introduced in Python 3.10 : https://docs.python.org/3.10/tutorial/controlflow.html#match-statements ).
Python 3.10: You’re probably fine. Probably. Use at your own risk.
Python 3.12 or higher: You’re probably fine. Probably. Use at your own risk.
Open the console in the repository root.
Example:
C:\Users\Username\computer-vision-python
Create a virtual environment called
venvby running:[python] -m venv --system-site-packages ./venv, where[python]is Python 3.11 (e.g.python,python311).You can check which version of Python it is by running
[python] --versionIf you move the repository to a different path after creating a virtual environment, you will have to delete the
venvdirectory and repeat this step. Additionally, if your virtual environment breaks for any reason, you can always delete thevenvdirectory and repeat this step for a fresh environment.If you have to change the Python version of your virtual environment, delete it and repeat this step with the new Python version.
Do not use any name other than
venv. Otherwise the linters and formatters will break.
Activate the Python virtual environment
If you haven’t already, activate the virtual environment:
Windows command prompt:
venv\Scripts\activate.batWindows Powershell:
.\venv\Scripts\Activate.ps1If you get an error with:
running scripts is disabled on this systemRun:
Set-ExecutionPolicy UnrestrictedThis allows you to run any Powershell scripts at will. For more detail: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.3
Linux and MacOS:
source venv/bin/activate
You should now see
(venv)in the prompt line.Confirm the virtual environment uses Python 3.11:
python --versionLiterally use
python, none of the fancy stuff above.Example output:
Python 3.11.9
When you’re done developing, make sure to either close the terminal or run:
Windows command prompt:
venv\Scripts\deactivate.batEverything else:
deactivateThis is important to avoid going to a different project and then accidentally polluting your current project’s virtual environment.
Install packages
Open
requirements.txtMacOS: Remove the line containing
--extra-index-url [link]Windows and Linux:
If you have a CUDA capable GPU but don’t want to use it for some reason, remove the line containing
--extra-index-url [link]If you don’t have a CUDA capable GPU, don’t change anything.
If you haven’t already, activate the virtual environment.
Download and install required packages:
pip install -r requirements.txtThis will install in your virtual environment under
venv. The rest of your system is unaffected.
Done!
Directory
“I keep all my files in the recycle bin because they’re easier to get to.” - Overheard near the Director of Finance’s office
Now that you have everything needed to start, take a quick look at what you’re working with.
The repository is divided into 3 sections:
modules/'s free floating files contains the common classes that are passed around the interfaces.modules/bootcamp/is where you will write your code.modules/private/is the black box to control. The bootcamp is completable without ever looking here. In fact, we encourage you to hold off until after completing all the tasks.
Why would you tell me not to do that? Now I really want to see what’s in there: https://www.reddit.com/r/MemeTemplatesOfficial/comments/ej4rr5/well_now_i_am_not_doing_it_pingu/
The reason for not looking through modules/private/ is teach you to rely solely on the documentation, provided interfaces, and behaviour of the system after interacting with the interfaces. Many systems Autonomy interacts with are basically black boxed, which is why this is an important skill to learn.
Each file has a docstring header that will contain one of the following:
BOOTCAMPERS DO NOT MODIFY THIS FILE.: Do not modify this file! Your submission will not be accepted if these files are modified.BOOTCAMPERS TO COMPLETE.: Search forBOOTCAMPERS MODIFY BELOW THIS COMMENT(there may be multiple) and follow the instructions.
Do not commit extra files! Your submission will not be accepted if you have extra files.
Do not import any additional libraries. The bootcamp is completable as is.
Development
“If it compiles, then it works, right?” - Top 10 moments before disaster
Every time you want to change code in your repository.
If you haven’t already, activate the virtual environment.
Follow the instructions in the tasks below.
Code away! Run the tests! Please follow our style guide: https://uwarg-docs.atlassian.net/wiki/spaces/CV/pages/2253226033
Ask questions if you need help!
Make sure the linter and formatter pass:
Running Black is sufficient for it to pass:
black .Flake8 outputting nothing is a pass:
flake8 .Pylint outputting a code rating of 10.00/10 is a pass (9.99/10 is not passing):
pylint modules
Make a commit:
Check which files have changed:
git statusRun:
git add [files you changed], where[files you changed]are the files you want to add to the commit.Use
git add .if you want to add all of them (the dot means wildcard in Git).
Run:
git commit -m "Your commit message"When you’re ready to push your latest commits to GitHub:
git pushNo harm in doing this after every commit.
When you’re done, make sure to either close the terminal or run:
Windows command prompt:
venv\Scripts\deactivate.batEverything else:
deactivateThis is important to avoid going to a different project and then accidentally polluting your current project’s virtual environment.