Final Project
Objectives
Your goal in this project is to explore a topic in robotics that is interesting to you and your team. This open-ended project is an opportunity to be creative and ambitions and we are excited to see what you will accomplish!
Learning Goals
- Defining and working on an open-ended project
- Learning about a new robotics algorithm in greater depth through its application in this project
- Working on a robotics project from start (coming up with a good idea) to finish (implementing your idea on a real robot)
Teaming & Logistics
For this project, your team should consist of 2-4 members. You can work with prior partners from the previous 2 projects. Like the prior two projects, we do ask that your project team all attend the same lab section for the next 3 weeks.
Deliverables
Project Pitches
Develop and submit 1-2 final project pitches and put them in this Google Doc. In that Google Doc, you can also find instructions and example project pitches.
Project Proposal
Your project proposal should include:
- Your team name
- A list of your team members
- A link to your team's Github repo
- Motivation (2-3 sentences): Why is your team interested in pursuing this project?
- Main Components (1 paragraph): What are the main topics covered in your project? What robotics algorithm(s) will you be exploring in your project? Are there any other main components to your project?
- Final Product (1 bullet point per deliverable level, 2-3 sentences per bullet point): For each of the following, what would success look like: 1) a minimum viable product (MVP), 2) a solid end result, 3) a end result that you would consider to be a "stretch" (e.g., "it would be above and beyond if we could...")
- Timeline: Provide a rough draft timeline for the major milestones of your project
- Resources: Describe what materials you plan to use (e.g., additional sensors, objects for the robot to pick up, a maze environment) as well as details about the turtlebot(s) that you plan to use (how many turtlebots, whether or not you want the OpenManipulator arm(s) attached).
- [Optional] Budget: If you would like additional materials for your project, please develop a budget with estimated costs and links for the components you are requesting.
- Risks (2-3 sentences): What do you see as the largest risks to your success in this project?
Your project proposal should be placed in a Google Drive folder your team creates for its deliverables. When you're ready to turn in your project proposal:
Presentations
All of your presentations should be uploaded to your team's Google Drive folder before the class when you're presenting.
-
Midway Presentation: This first presentation is meant to tell the class about your project idea and showcase your initial work towards achieving your project goals. This presentation should include the following slides:
- 1 slide: Team name & team members
- 1 slide: Project topic (please make changes to reflect any changes in the project topic since the initial idea presentation)
- 1 slide: 2-3 overarching goals that your team wants to accomplish through this project
- For each major component of your project (e.g., the Q-learning project could be organized into three components 1) perception, 2) robot navigation & arm movement, and 3) the q-learning algorithm):
- 1 slide: Description of the component
- 1 slide: Your group's current progress on this component (gifs, screenshots, and/or videos encouraged) -- it's ok if you haven't started on a component yet
All team members are expected to speak during this midpoint presentation. Also, your presentation should take between 5 and 7 minutes (we will cut you off at 7 minutes).
-
Final Presentation
- 1 slide: Team name & team members
- 1 slide: Project topic
- 1 slide: Your project goals
- For each major component of your project:
- 1 slide: Description of the component
- 1 slide: How you completed this component (gifs, screenshots, and/or videos encouraged)
- 1 slide: Diagram include all of your ROS nodes, topics, and message types
- 1 slide: Demo - you can either stop the presentation to do a live demo or play a video recording for your demo; if you do choose to do a live demo, we'd recommend having a video demo ready as a backup
- 1 slide: Challenges - what were the 2-3 main challenges you faced and how did you overcome them
- 1 slide: Future work - if you had 2-3 more weeks, what additions/changes would you make to improve your project
All team members are expected to speak during this final presentation. Your final presentation should take between 7 and 9 minutes (we will cut you off at 9 minutes).
Code
You'll organize your code into one Github repo.
Writeup
Like in the previous projects, your Github README will serve as your project writeup. Your writeup should include the following:
- Project Description: Describe the goal of your project, why it's interesting, what you were able to make your robot do, and what the main components of your project are and how they fit together - please include diagrams and gifs when appropriate
- System Architecture: Describe in detail the robotics algorithm you implemented and each major component of your project, highlight what pieces of code contribute to these main components
- Execution: Describe how to run your code, e.g., step-by-step instructions on what commands to run in each terminal window to execute your project code.
- Challenges, Future Work, and Takeaways: These should take a similar form and structure to how you approached these in the previous projects (1 paragraph each for the challenges and future work and a few bullet points for takeaways)
Demo
Each team will demo their project during the finals period time slot. Your demo should clearly exhibit all of the functionality and features of your project. Because live demos can sometimes go awry, we recommend having a backup demo video.
Demos will be awarded full credit if:
- [FOR NON-GRADUATING SENIORS] : The demo that you present during the final project demo time slot exhibits all of the core functionality of your final project. In addition, you should also have a video demo in your writeup as either a gif or an embedded video. This video should clearly exhibit all of the functionality and features of your project.
- [FOR GRADUATING SENIORS] : Your demo should be presented in your writeup as either a gif or an embedded video. Your demo should clearly exhibit all of the functionality and features of your project.
Grading
- 5% Project proposal
- 50% Code (scope, functionality, design, documentation)
- 15% Writeup
- 15% Presentations
- 5% Demo (live or recorded)
- 10% Individual Contribution to the Team
Deadlines & Submission
Project Proposal
Your team's project proposal and presentation slides should all be uploaded within the same Google Drive folder that your group creates for this project. For your first deliverable (the project proposal), please 1) give all the members of the teaching team read & comment access to the Google Drive folder (sarahsebo@uchicago.edu, davidwu26@uchicago.edu, humphrik@uchicago.edu) and 2) DM all of the teaching team the link to your Google Drive folder on Slack.
Presentations
Your project team will make a total of 3 presentations over the course of the project. Upload your slides for each of these presentations to your Google Drive folder before the class period where you'll be presenting them.
- Tuesday, May 17 during class: Midway Presentation
- During finals period: Final Presentation
Team Contributions Survey
Once you're done with your project, fill out the team contributions survey. The purpose of this survey is to accurately capture the contributions of each team member to your combined final project deliverables.
Final Project Submission Items
The following final project deliverables are due on Friday, June 3 by 11:00am CST:
A Note on Flex Hours
As noted on the Syllabus page, we are not accepting flex hours for this assignment.
Choosing a Project Topic
Requirements
- Your project must involve a robot and be focused on a robotics problem.
- Your project should involve learning about a robotics algorithm that no one on your team is an expert at. A central goal of this project is to either 1) learn about a new robotics algorithm or 2) expand a robotics algorithm beyond what we discussed and applied earlier in the course, and then apply this algorithm within the context of your project.
- Your project work should be accomplished on 1 or more physical Turtlebot3 robot(s).
Additional Resources
The final project offers you the opportunity to go beyond what we've done in class thus far in several ways:
- You may use more than one turtlebot for your project. Given that our class doesn't have an unlimited supply of turtlebots, please only use as many as necessary to accomplish the main goals of your project.
- You may use turtlebot(s) either with the OpenManipulator arm or without. If you want to use the turtlebots without the arm, please let the teaching team know so we can remove the arm and reset the software on the bot(s).
- You may use the Gazebo simulator, however, your final demo must include a component on a physical turtlebot. Similar to how we could use
phantom_robot_movement.py
in Gazebo to train our Q-learning model for the Q-learning project, you are more than welcome to utilize Gazebo for this project. Again, as stated here, the final demo must involve a physical turtlebot.
- You may use any of the materials we've already used in the class. This includes the maze, the bricks with velcro, the colored paper towel tubes, etc.
- You may augment your turtlebot with additional sensors and components beyond those it's already equipped with. We have on hand these extra components that you are welcome to use for your final projects:
- TS-10 Touch Sensors: These sensors can be mounted on the Turtlebot as a bumper to detect impact with objects. There is information on how to incorporate these sensors with the turtelbot on this page.
- LEDs: We have this 56 pack of white, red, yellow, green, blue, and orange pre-wired LEDs. A guide for how to incorporate them with the Turtlebot can be found on this page.
- A variety of sensors:
- You may 3D print objects. Feel free to 3D print components to augment your turtlebot or for your turtlebot to pick up. We encourage you to use the 3D printers in the MADD center.
- You may request for us to purchase extra components for your project. In addition to the materials we already have on hand, you can also ask us to purchase sensors, components, and/or materials for your project. If you want us to purchase materials for your project, you must list the items you want and include a project budget in your project proposal. This will ensure that we have enough time to get you the parts you need for your project.
Example Final Projects
Please keep in mind that this is the first time this class has been taught in-person with the physical Turtlebot3 robots. These prior examples come from when the class was taught on Zoom and entirely in simulation.
Striker Bot
This team aimed to build a robot that could improve it's bowling in a simulated lane through the use of a genetic algorithm. They developed an implementation of bowling in the Gazebo world for which they parameterized certain variables (robot velocity, the time the robot spent moving) they wished to optimize with their algorithm. Their multiple bowling lanes allowed them to test each generation more quickly.
Turtlebot Tic-Tac-Toe
Using a Q-learning minimax algorithm, this team programmed two robot players to play tic-tac-toe against one another, with their actions simulated by a single turtlebot in a Gazebo world. They wanted to apply learning towards a 2-player game, rather than the 1-player game (e.g., the Q-learning project) through multi agent reinforcement learning. They chose a tic-tac-toe game because like the Q-learning project, the states are discontinuous and finite (though there are a lot of them).
PacTurtle
Dubbed Pacturtle, this final project was inspired by Pacman. This team's program features a user-operated Pacturtle whose goal is to evade the four ghost turtles for as long as possible within a specially designed maze world. By giving all the ghost turtles different search algorithms (e.g., breadth first search, map exploration, random movements), they hoped to make the game as challenging as possible and, in this way, immerse the user in an interactive and fun game.
Robot Soccer Goalie
This project was inspired by both the idea of a robot goalie and the game of pong, where the turtlebot must stop a launched ball from entering a goal that is being defended. This team wanted to make a robot that could move to the location of an incoming ball and stop it from entering the goal/hitting the area behind the robot. They aimed to do this using some form of a reinforcement learning algorithm. What makes this project interesting and different from what was done in the past is that it involves a large, continuous state space of the ball pose (position, orientation, and velocity) on the field, as well as the pose of the robot. In the last QLearning project, there was a small, finite number of states which could be exhaustively searched. But in this goalie project, the soccer ball can come from any location along the middle line of the field we created, and at any angle, which is at the very least a computationally intractable number of states for performing traditional QLearning on a standard computer. This team thus had to find an approach that was still using reinforcement learning but that reduced the overall complexity required.
Turtlebot3 Teleop Controller
The goal of the project was to create controller teleoperation, in which connecting a controller would give a user full funtionality of that robot's wheels and arm through controller manipulation. This is interesting because it makes moving the robot a lot easier, especially the arm, and it contributes a physical, hardware component that was missing in this class. Through this project, we were able to make the robot move, turn, and grab things purely through buttons and joysticks on a controller. The three main components of this project are controller input, navigation, and inverse kinematics. The controller input controls the navigation and implements inverse kinematics in order to move the arm the way the user wants it to move.
A* Search and Light Evasion
Coming from similar backgrounds in game design, this team produced a game using their knowledge of robotics algorithms. Their idea was most similar to a survival game: the player operates one TurtleBot in a dark maze while another "monster" bot tries to approach the player. The monster knows the maze and the player's position at any time. A creature of the dark, this monster cannot stay in the glow of the player's flashlight; thus, the monster bot has to be smart in planning its path to the player.
The main components of the project are A* Search and Sensory Controls. The A* Search finds the best path from the monster to the player. The robot uses its Sensory Controls to traverse the maze, center itself in the maze hallways, avoid wall collisions, make smooth turns, and detect light. If the monster runs into the player's light, the A* Search takes this into account and recalculates the new best path to sneak up behind the player.
Acknowledgments
The design of this course project was influenced by Paul Ruvolo and his Fall 2020 A Computational Introduction to Robotics course taught at Olin College of Engineering. I also want to thank the alumni of this course, whose projects are featured examples on this page.