Computer Vision Project

Teaming

For this project, you must work with at least one other student. There is a strict maximum of three members per team. You are free to work across the two sections if you'd like.

Project Topic

The project should be primarily about computer vision and/or its intersection with mobile robotics. If your project does not directly connect to the Neatos it should be something that could plausibly be used on a mobile robot at some point in the future.

Deliverables

There are four deliverables for this project.

Project Proposal: During the class after the kickoff session, I will be meeting with each team to discuss their project proposals. Before class, you should e-mail me a copy of your proposal with the following content:

  • What is the main idea of your project? What topics will you explore and what will you generate? What is your MVP? What is a stretch goal?
  • What are your learning goals for this project?
  • Given that the project will be three weeks long, describe what you'd like to have complete at the end of each week.
  • What frameworks / algorithms are you planning to use? (if you don't know enough yet, please outline how you will decide this question during the beginning phase of the project)
  • What do you view as the biggest risks to you being successful on this project?
  • What might you need from me for you to be successful on this project?

In-class Presentation / Demo: I'd like each team to spend about 10 minutes presenting what they did for this project. You can structure the presentation in whatever manner you'd like. You should try to meet these goals however:

  • Explain the goal of your project
  • At a high-level explain how your system works
  • Demonstrate your system in action (either in a video [recommended] or live). If your system doesn't work completely yet, that is fine, try to show at least one component of your system in action.

This presentation / demo should be very informal. This presentation will be assessed in a purely binary fashion (basically did you do the things above)

Your code: you should turn in your code as a ROS package. Make sure to let me know which Github repo you are using for your project. Only one member of the team needs to turn their code in.

Writeup: in your ROS package create a file to hold your project writeup. Any format is fine (markdown, word, pdf, etc.). Your writeup should touch on the following topics:

  • What was the goal of your project?
    • How did you solve the problem? (Note: this doesn't have to be super-detailed, you should try to explain what you did at a high-level so that others in the class could reasonably understand what you did).
    • Describe a design decision you had to make when working on your project and what you ultimately did (and why)? These design decisions could be particular choices for how you implemented some part of an algorithm or perhaps a decision regarding which of two external packages to use in your project.
    • How did you structure your code?
    • What if any challenges did you face along the way?
    • What would you do to improve your project if you had more time?
  • Did you learn any interesting lessons for future robotic programming projects? These could relate to working on robotics projects in teams, working on more open-ended (and longer term) problems, or any other relevant topic.

Useful Resources

  • Convert ROS image messages to OpenCV using CvBridge
  • An overview of approaches to visual servoing (some parts will be pretty dense, let me know if you have questions. Hopefully, this at least gives some pointers as to where to start)
  • An overview of methods for object tracking (some parts will be pretty dense, let me know if you have questions. Hopefully, this at least gives some pointers as to where to start)