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?
- [CMSC 30600 ONLY] Prior Research + Identified Gaps (1-2 paragraphs): What prior research has been done on this topic? What gaps have you identified from the prior work that you want your project to address? Include at least 5 citations from recent papers in the area to support your claims.
- 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? (CMSC 30600 ONLY) what components of the algorithm will you be seeking to improve compared with prior approaches?
- Final Product (1 bullet point per deliverable level, 2-3 sentences per bullet point): For each of the following, what would success look like:
- a minimum viable product (MVP)
- a solid end result
- an 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?
Submit your project proposal as a group assignment on Gradescope.
Presentations
A PDF of your presentations and any videos should be submitted to Gradescope before the class period where you'll be presenting them.
-
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
- 1 slide: (CMSC30600 ONLY) Desired contribution to research in robotics
- 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 4 and 6 minutes (we will cut you off at 6 minutes).
-
Final Presentation
- 1 slide: Team name & team members
- 1 slide: Project topic
- 1 slide: (CMSC30600 ONLY) Desired contribution to research in robotics
- 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: Demo - play a video recording for your demo - your demo should clearly exhibit all of the functionality and features of your project
- 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 8 minutes (we will cut you off at 8 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
- [CMSC 30600 ONLY] Prior Research + Identified Gaps (1-2 paragraphs): What prior research has been done on this topic? What gaps did you identify from the prior work that you want your project to address? Include at least 5 citations from recent papers in the area to support your claims. Finally, what contributions to the field of robotics does your project make?
- 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
- ROS Node Diagram: Please include a visual diagram representing all of the ROS nodes, ROS topics, and publisher/subscriber connections present in your final project.
- 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 provide a live demo of 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.
Grading
- 5% Project proposal
- 50% Code (scope, functionality, design, documentation)
- 10% Writeup
- 10% Presentations
- 5% Demo (as shown on Github README & live demo)
- 20% Individual Contribution to the Team
Deadlines & Submission
Project Proposal
Your project proposal is due Thursday, November 13 at 8:00pm and will be submitted on Gradescope.
Presentations
Your project team will make 2 presentations during the project. Upload your slides and video(s) for each of these presentations to Gradescope before the class period where you'll be presenting them.
- Thursday, November 20 (during class): Midway Presentation
- Thursday, December 4 (during class): Final Presentation
Demo
Each team will provide a live demo of their project on Thursday, December 11 from 12:30pm - 1:30pm in CSIL 1/2 during the finals period time slot.
Team Contributions Survey
Once you're done with your project, fill out the team member 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 Thursday, December 11 by 8:00pm 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. Examples of robotics algorithms you could explore in the final project include:
- Inverse kinematics (e.g., programming your own inverse kinematics solver for the turtlebot)
- A* (e.g., programming your own A* path finding algorithm for the turtlebot)
- Reinforcement learning beyond Q-learning with MDPs
- Multi-agent reinforcement learning
- Deep reinforcement learning
- Applying reinforcement learning to contexts with larger state spaces and with more complex dynamics
- Computer vision algorithms (e.g., a gesture recognition algorithm, a face-detection algorithm)
- Genetic algorithms
- Your project work should be accomplished on 1 or more physical Turtlebot4 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 leverage the buttons and LEDs on the robot. At your control are the buttons on the Create3 base of the robot and the UI board, the Create3 light ring, and USER1 and USER2 LEDs on the UI board. The documentation on how to use these components can be found in the Turtlebot4 user manual.
- 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 some of these project examples come from when the class was taught on Zoom and entirely in simulation due to COVID-19.
DanceBot
This project sought to create a Turtlebot4 that could implement dance moves based on user sign language input. The team implemented a computer vision model capable of recognizing the 24 static signs of American Sign Language according to the Sign Language MNIST dataset. The team chose 5 specific signs to correspond with our five dance moves (the wave, the chop, the spin, the point, and the whip/nae nae), and were able to use the Turtlebot3 camera to have the robot to be able to witness a sequence of signs and execute the corresponding dance moves.
Open Air Hand Imitation
This team sought to control a Turtlebot arm through open-air hand imitation, think remote teleoperation using your hand as a controller. They used RGB and depth information from an external Intel Realsense camera to train a neural network to detect the location of the hand in 3D space and whether it was open or closed. Then, they developed their own inverse kinematics approach to enable the robot arm to follow the hand's movements and open/close the gripper accordingly.
Project Jenga
This Turtlebot was designed to play a game of Jenga with a user. The team leveraged inverse kinematics combined with LiDAR and Camera readings to push and pull a block out of a jenga tower and place that block on top of the tower.
Autonomous Robot Math Solver
The goal of this project is to present a Turtlebot with addition problems on a whiteboard with an integer number of digits within the visible frame. The robot then emulates the actions that a human would to solve the problem. This project uses the the robot's front-facing camera and computer vision techniques to read the math problem and an inverse kinematics algorithm to move the robot's arm to the right positions on the whiteboard and draw each digit.
Deep RL Turtlebot Tag
This project is a take on the game of tag, where the chaser robot tries to tag the runner robot. This team implemented the chaser robot's behavior with a hard-coded greedy algorithm and the runner with a deep Q-learning algorithm based on the robot's LiDAR sensor data. The team trained their deep Q-learning runner by running many simulations with an adversarial chaser.
Cyborg Turtledog
The Cyborg Turtledog team was inspired to have a turtlebot respond like a dog to the instructions of a person. They created a gesture recognition computer vision algorithm so the robot could recognize human instructions as well as a clickable GUI that enabled a user to click on a location where they wanted the robot to go.
Robot Relay Race
The goal of this project was to have multiple turtlebots complete a relay race. This project incorporated many of the different algorithms and topics these students learned throughout the quarter: the A* path finding algorithm, object recognition, and handling the batons.
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.
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.