Personal tools

Project

Document Actions
  • Send this
  • Print this
  • Content View
  • Bookmarks

Instructions for students on how to prepare a project for the class.

Students will complete a course project that involves substantial programming in order to gain working knowledge of the topics covered in the class. Ideally a good research project identifies a new research issue, defines a  problem, proposes an original solution, and evaluates the solution. Since you have only limited time, any of the following (in roughly decreasing order of difficulty) may satisfy the course requirement:

  • New research problem & solution
    You define a new, interesting problem and propose a solution. Your solution does not have to be really good. Defining an interesting problem is difficult, but also very exciting.
  • Existing research problem & new solution
    You look at an existing, interesting problem, and propose a new solution that is better than existing solutions in some way. Your may obtain the new solution by improving on an existing solution or combining several existing solutions. This may be difficult, but can be accomplished with enough effort.
  • Existing solution applied to a new application
    You identify a problem in a new application domain and realize that the problem can be solved with an existing solution learned in the class. You may have to adapt the existing solution to fit the new application.
  • Implement and evaluate several existing solutions
    You look at an existing problem and  implement several known solutions. Compare them to identify the strengths and weaknesses of each solution, and possibly make suggestions on how to design better solutions.

Keep in mind that a good project always teaches something new.

I do not expect you to write all the code from scratch. You may and should use existing libraries and applications, as long as they are not the key components of your project. For example, if you are implementing a new motion planning algorithm, you may use one of the collision checking libraries freely available on the web. Some potentially useful libraries are listed below.

Project Team

You will work in groups of 2 students per project and are free to form your own project teams.

Deliverables

  • Project proposal
    You will submit a project proposal so that we agree on the objective of your project. The proposal should consist of the following parts:
    • Define what problem will be solved and explain why the problem is interesting.
    • Provide a short survey of related work.
    • Explain how you intend to approach the problem.
    • It should also contain a list of project milestones on a biweekly basis. This is to help you think through all the potential difficulties. I will not enforce the milestones.
    The proposal should be roughly 5-8 pages (11pt and single-spaced).
  • Presentation and Demo
    At the end of the semester, you will give a presentation to showcase your project.
  • Project report
    You will also submit a report to complement the demo. Your report must contain an abstract (100-200 words) to summarize the project. A good report is clear and concise. It highlights your results and helps me appreciate your accomplishment. As a rough guideline, 6-8 pages are sufficient. You can of course reuse relevant contents from your proposal.

The evaluation of the project will be based on the above three components, with the demo and the project report being the more important ones. Depending on your interest, we are also considering the possibility of setting up a "competition" to compare the pursuit or evasion strategies that you will develop. We will discuss at a later time whether this will become part of the evaluation criteria.

Due Dates

Please refer to the course schedule.

Project Ideas

Projects from Past Years

Software

Resources

  • MPK (C++)
    A library that eases development and testing of motion planning algorithms.
  • MSL (C++)
    Another motion planning library
  • PQP (C++)
    A general 3D collision detection library. Freely downloadable.
  • VCLIP (C++)
    A 3D collision detection library for convex objects.
  • CGAL (C++)
    A library of efficient and reliable geometric algorithms. Freely downloadable.
  • LEDA (C++)
    A C++ library of efficient data structures and algorithms. It also provides simple visualization in 2D and 3D. 
    Libraries for data structures, algorithms, etc. Unlike CGAL and LEDA, Boost libraries are usually small and self-contained.
  • Open Inventor (C++)
    High-level object-oriented 3D visualization library. Freely downloadable.
  • Coin3D (C++, Java)
    Another implementation of the Open Inventor API. Freely downloadable.
  • Java3D (Java)
    Java 3D visualization library.
  • OpenGL, Glut (C++)
    Powerful, but low-level 3D graphics library.
Copyright 2007, by the Contributing Authors. Cite/attribute Resource. Hsu, D. (2007, November 25). Project. Retrieved January 06, 2009, from RoboticsCourseWare.org Web site: http://roboticscourseware.org/fullcourses/motion-planning-and-applications-robots-digital/project. This work is licensed under a Creative Commons License. Creative Commons License