Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
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 - Archived 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

Include Page
CV:Git and GitHub
CV:Git and GitHub

Forking

Create a personal copy of the repository by forking it.

  1. 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.

  2. Visit: https://github.com/UWARG/autonomy-bootcamp-2023

  3. Click on the Fork button (towards the top right, above the About section).

  4. Click on the green Create fork button.

  5. GitHub redirects you to your own copy of the repository.

Git setup

Include Page
CV:Git setup
CV:Git setup

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!

Include Page
CV:Cloning the repository
CV:Cloning the repository

Python and virtual environment

“It’s fine, it works on my machine.” - Overheard in the software development cubicle farm

...

Include Page
CV:Python setup and virtual environment
CV:Python setup and virtual environment

Activate the Python virtual environment

Include Page
CV:Activate the Python virtual environment
CV:Activate the Python virtual environment

Install packages

  1. Open requirements.txt

    1. MacOS: Remove +cu117 from both torch and torchvision

    2. Windows and Linux:

      1. If you have a CUDA capable GPU but don’t want to use it for some reason, change +cu117 to +cpu for both torch and torchvision

      2. If you don’t have a CUDA capable GPU, don’t change anything.

  2. Download and install required packages: pip install -r requirements.txt

    1. This will install in your virtual environment under venv . The rest of your system is unaffected.

  3. 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 for yourself 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.

...

  1. Navigate to WARG’s copy of the repository: https://github.com/UWARG/autonomy-bootcamp-2023

  2. At the top, click Pull requests.

  3. To the right, click the green New pull request button.

  4. Under Compare changes, click the “compare across forks” link.

  5. The 3rd from the left: Click the head repository dropdown and select your repository (you can search for your username).

  6. The 4th from the left: Click the compare dropdown and select the branch you want to submit.

    1. Do not open more than 1 pull request! The branch you select should contain (or eventually contain) all tasks which will be reviewed.

    2. 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.

  7. Click on the green Create pull request button.

  8. 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] .

    1. The @Autonomy Lead ping is bright pink.

  9. 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).

  10. 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 ).

    1. Please do not click on Resolve conversation for 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 reply to the comment for your own tracking purposes.

    2. If you are ready for another review, repeat step 8 (you do not need to open a new PR).

  11. 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 Autonomy bootcamp 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:

  • You can use the debugger and set breakpoints to see the object and its attibutes returned by predict() .

  • A confidence threshold value of 0.7 works. Other values are also acceptable as long as it’s not too low or high.

  • Ultralytics documentation is slightly out of date, so some of the requested settings are not included. Try searching outside of the documentation!

  • Think about what you’re returning. Is it safe to assume that the code that will end up using your returned values has a check for None ? After all, the method signature promises to return a list of BoundingBox , not a list of BoundingBox | None .

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:

  • You can ignore these warnings:

    • Warning: Could not read image file: [n],[m].png

    • Warning: Loading default

  • Set Ultralytics verbosity to false (from task 1) to avoid getting spammed with detections.

    • The Ultralytics documentation for the predict() method lacks this as it is slightly outdated.

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:

  • While the simulated drone will always successfully complete its movement, what if it was possible for the drone to halt at any time (without your input)? Does your code handle this case?

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]

...