Project 2: Bug Navigation

Demo Day (5 pts): October 27th, 2023 at 12:30-4:20 PM.

Website and code deadline: October 27th, 2023 at 11:59 PM.

For complete instructions about the project, see the Project 2 description on the main HelloRob website.

This project will be done in teams of two. The instructors will assign teammates.

Table of Contents

  1. Getting the Code
  2. Submitting your assignment
  3. Project Website
  4. Grading Breakdown
  5. Advanced Extensions

Getting the Code

One repository per team will be created for this project. Both teammates will have access to the repository and will be able to view it and make changes. Both teammates will share ownership of the code and receive credit for writing the code through the license file.

The invite link to accept the assignment on Github Classroom can be found on Slack.

The first teammate to accept will need to create a new team. The team must be named P2 F23 Team ##. Replace ## with the team number assigned to you (for example, P2 F23 Team 01, P2 F23 Team 11, etc.). The next teammate should join the team from the list of existing teams.

Modify the LICENSE.txt file to include the names of all teammates. Make sure the change is committed to your repository. This must be completed in order for your project to be graded.

  • P2.0 (1 point): In the file LICENSE.txt, replace <COPYRIGHT HOLDER> with the names of all teammates, separated by commas. Replace <YEAR> with the current year.

Submitting your assignment

Your submission for this assignment should include your code and a website portfolio of your project. The website should feature video demonstrations of your robot performing Bug Navigation and a brief discussion. The link to your website should be placed in the README of your GitHub repository. For details about what should be on the website, see Project Website. You should make one submission for your team. Teammates will be graded together. Your most recently pushed commit before the deadline will be graded. You should push your code to the repository before the submission deadline.

Project Website

Create a website to demonstrate your implementation of bug navigation. Include at least one video demo of your algorithm as well as a brief summary and discussion of your algorithm. Add the link to your project page to the README.md file in the root of your repository and push it to GitHub. For a refresher about how to create the website, see the Project 1 description.

Include a discussion section on the web page, where you answer the following questions:

  1. Is the pose from odometry accurate? Why or why not?
  2. Which environments would cause your bug navigation algorithm to fail to reach the goal? You are encouraged to take a video demonstrating a failure case of your algorithm, or draw a picture of one or more failure modes.
  3. How could your bug navigation algorithm be improved? Give at least one suggestion.

Include images or videos whenever possible to illustrate your points. Keep the discussion brief: it should be no longer than a few sentences. Remember to ensure that videos are visible by course staff.

  • P2.5 (3 points): Create a web page for your bug navigation project including at least one video demonstration and a discussion. Add a link to the website to the README.md file in your repository.

Grading Breakdown

  • P2.0 (1 point): In the file LICENSE.txt included in the project template, replace <COPYRIGHT HOLDER> with your name. Replace <YEAR> with the current year.
  • P2.1 Robot Hits the Spot Demo (4 points): Write an algorithm that drives the robot to a desired goal pose. You should implement this algorithm in the function driveToPose() in the file hit_the_spot.cpp. To get full points for this task, you should demo your robot driving to a series of goals given by course staff. Print the robot’s pose after each goal has been reached.
  • P2.2 (1 point): Complete the function findMinRayInSlice() which finds the index of the minimum ray in a slice of the Lidar scan. The slice should be centered around target_angle, passed as input to the function. The slice should encompass rays within slice_size radians of target_angle.
  • P2.3 (1 point): Determine the state of the robot at each iteration and print the current state to the screen. Course staff should be able to read the output to determine whether your bug navigation is correctly transitioning between states.
  • P2.4 Bug Navigation Demo (5 points): In the file bug_navigation.cpp, write a program that drives to a goal location and avoids obstacles following the procedure outlined above. For full points, your robot will need to drive to a goal given by course staff. Staff will test 2-3 runs of your bug navigation.
  • P2.5 Project Webpage (3 points): Create a web page for your bug navigation project including at least one video demonstration and a discussion. Add a link to the website to the README.md file in your repository.

Advanced Extensions

Advanced extensions are optional features which you may complete for up to 4 additional points total in the course. They are due by the final grading deadline (December 8, 2023). They do not need to be completed by the deadline for this project. See the syllabus for details.

  • Advanced Extension P2.i (1 extension point): Implement the Bug 1 or Bug 2 algorithm, as discussed in lecture.