Table of Contents |
---|
Overview
Before embarking on this subteam bootcamp, please ensure you’ve completed these instructions: Bootcamper Onboarding
...
Warning |
---|
This bootcamp is the only active bootcamp. We are no longer accepting submissions for the old bootcamp: Autonomy Bootcamp - S23 |
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
...
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.autocrlf
If it is
true
orinput
, you do not need to set anything.
Set:
git config --global core.autocrlf [setting]
.--global
is optional, and replace[setting]
with eithertrue
orinput
When 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/
--global
if 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.
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\autonomy-bootcamp-2023\[bootcamp 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 6.HTTPS link users: You will be prompted to log into your GitHub account. Do so.
Done!
Python and virtual environment
“It’s fine, it works on my machine.” - Overheard in the software development cubicle farm
...
If you haven’t already, download and install Python 3.8: https://www.python.org/
If you already have Python 3.7 or below installed, you must install Python 3.8 (you do not need to uninstall the other version(s)). This is because of a package dependency which requires Python 3.8 or greater.
Python 3.8.10 or later is recommended, otherwise you will have
pip
issues.
If you have Python 3.9 or above installed, you’re probably fine. Probably. Autonomy code is designed and tested on Python 3.8 so use a different version at your own risk.
Open the console in the repository root.
Windows: Use command prompt or PowerShell, not Git bash (the console that gets installed with Git).
Example:
C:\Users\Username\autonomy-bootcamp-2023
Create a virtual environment called
venv
by running:[python] -m venv venv/
, where[python]
is Python 3.8 (e.g.python
,python38
).You can check which version of Python it is by running
[python] --version
If you move the repository to a different path after creating a virtual environment, you will have to delete the
venv
directory and repeat this step. Additionally, if your virtual environment breaks for any reason, you can always delete thevenv
directory and repeat this step for a fresh environment.If you want to call the virtual environment by a different name, replace
venv/
with the name you want. Virtual environments are identified by their path, so different projects with the samevenv
virtual environment name is fine.Example:
C:\Users\Username\autonomy-bootcamp-2023\venv\
andC:\Users\Username\computer-vision-python\venv\
are different.
Activate the virtual environment:
Windows command prompt:
venv\Scripts\activate.bat
Windows Powershell:
.\venv\Scripts\Activate.ps1
If you get an error with:
running scripts is disabled on this system
Run:
Set-ExecutionPolicy Unrestricted
This 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.8:
python --version
Literally use
python
, none of the fancy stuff above.Example output:
Python 3.8.10
Open
requirements.txt
MacOS: Remove
+cu117
from bothtorch
andtorchvision
Windows and Linux:
If you have a CUDA capable GPU but don’t want to use it for some reason, change
+cu117
to+cpu
for bothtorch
andtorchvision
If you don’t have a CUDA capable GPU, don’t change anything.
Download and install required packages:
pip install -r requirements.txt
This 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
...
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
...
Optionally, you can also create new branches if you want to be more organized. You can search for git branch information online.
Windows Subsystem for Linux (WSL)
We do not recommend using WSL at this time because of several environment issues. You are free to make the attempt if you’re willing to encounter them (and if you solve them, please tell us). All Autonomy projects are currently cross platform so using Windows is perfectly fine.
...
This may not be necessary depending on whether you have WSLg already.
Submission and pull request
“LGTM” - Every pull request ever (LGTM is an initialism for Looks Good To Me)
...
Navigate to WARG’s copy of the repository: https://github.com/UWARG/autonomy-bootcamp-2023
At the top, click Pull requests.
To the right, click the green New pull request button.
Under Compare changes, click the “compare across forks” link.
The 3rd from the left: Click the head repository dropdown and select your repository (you can search for your username).
The 4th from the left: Click the compare dropdown and select the branch you want to submit.
Do not open more than 1 pull request! The branch you select should contain (or eventually contain) all tasks which will be reviewed.
Once you have an open PR, you can keep updating the same branch as you get feedback. You do not need to open another PR.
Click on the green Create pull request button.
Once you have an open PR and are ready for review, go to your Discord bootcamp thread and send this message:
@Autonomy Lead My PR for the bootcamp is ready: [link to your PR on GitHub]
.The
@Autonomy Lead
ping is bright pink.
The Autonomy Leads and/or bootcamp maintainers will review your PR (a message will be sent on Discord, and the comments will be on GitHub).
Read the feedback and go back to development. If any of the feedback is unclear or confusing, don’t hesitate to ask for clarification (make sure to send a message on Discord as well for visibility (e.g.
I asked some questions as replies on GitHub
).Please do not resolve any of the comments that the reviewers may leave! It causes confusion for the reviewers since they use the resolved/unresolved state to confirm that the code meets the quality to their satisfaction. Instead, you can use a reaction or respond to the comment for your own tracking purposes.
If you are ready for another review, repeat step 8 (you do not need to open a new PR).
Once your review is fully complete and you’re done with the bootcamp please follow the steps in New Member Onboarding to onboard to the team.
Tasks
Hi WARG Bootcamper,
Welcome to the team. I've taken the liberty of compiling some starter tasks to get you up to speed. They should be pretty easy to complete. Feel free to reach out if you have any questions.
Brian J. Smith, Ph.D.
Senior Manager, Software Development
AutoBots
...
Info |
---|
What’s wrong with exceptions? Exceptions are computationally expensive to catch, which is why the Autonomy coding style often uses result booleans and/or default values instead. While the program will not crash if your code raises an exception, it will cause an early (graceful) exit. Additionally, exceptions are difficult to reason about. An exception bypasses the call stack, making it difficult to determine where and why it is originally thrown (especially if caught and rethrown). |
Task 1: Implementing ML inference
SOFTDEV-804072
Migrate Landing Pad Detection to Ultralytics
Assignee: WARG Bootcamper
Reporter: Sangeeta Singh
Last updated: 2004-09-06
Start using the Ultralyics YOLOv8 library for model inference
See [2002 Annual Architecture Design Document]
...
Note |
---|
Hints:
|
Task 2: Running the simulator
Hey WARG Bootcamper,
I heard you just joined the team, welcome! I can give you a tour of the office. You should definitely check out the flight simulator, it’s pretty cool!
-Tajel
...
Note |
---|
Hints:
|
Task 3: Making the drone move to and land at a waypoint
SOFTDEV-377040
Command Drone to Travel and Land at Designated Waypoint
Assignee: WARG Bootcamper
Reporter: Patrick Khumalo
Last updated: 2001-01-15
Command the drone to move to the waypoint, and then execute landing procedure
See [Drone Expected Behaviour Document 1997]
...
Note |
---|
Bonus:
|
Task 4: Putting it all together
SOFTDEV-69716810
Integrate waypoint travel and local landing pad
Assignee: WARG Bootcamper
Reporter: Michael Slackenerny
Last updated: 2077-04-20
Drone travels to waypoint then closest landing pad then lands
See [Drone Expected Behaviour Document 1997]
...