Department of Computer Science
Worcester Polytechnic Institute

CS 515A: Special Topics in Augmented Reality
Project 1: Augmented Reality & Physics
Due: Monday, October 14, 2013 at 6pm

Objective: THIS PROJECT MAY BE DONE IN GROUPS OF TWO!

In this project, you will implement an application using Augmented Reality (AR) technologies that allows people to set up a simple physics demo using multiple AR markers.


Application Details: The project objectives are for you to:
  1. familiarize yourself with programming using an AR toolkit,
  2. learn how to add markers for specific objects or actions,
  3. learn to adds simple physics to an application,
  4. get experience designing collaborative tools, and
  5. learn the strengths and limitations of AR.
The goal of your project is to allow two or more people to manipulate AR markers to complete a physics task. The description of the project is deliberately left vague to allow you some freedom to explore.

For this project, you are encouraged to use NyARToolkit or ARToolKit, as they are open source and cross platform. However, you are free to use another AR package/technology if you have a compelling reason to do so, e.g., you want to use a mobile device, like Android, for the project. In this case, you might want to use something like AndAR for Android.

The project you must build is an interactive physics simulation. The player will be able to stick markers up on a wall (e.g., a white board) and point a webcam at them to see the simulation of balls bouncing around. Some markers represent emitters, which produce balls, and other markers are colliders which influence the movement of the balls. Tilting an emitter causes its balls to be projected in the corresponding direction. Other markers will cause the balls to bounce according to gravity, and/or may introduce more energy into the system by, for example, propelling balls that collide with them, or a wind marker may influence the balls' direction of travel. One marker should be a "catcher" which will act as a target. If a ball hits the catcher, it will be removed from the simulation.


What to do: For this project, you are going to give a status update after a week, and present the final product a week after that. To help you succeed, you should plan to get as much done as soon as possible. Use the status deadline to motivate you.
  1. Part 1: Infrastructure in Place
    In this part, you will make a simple application that detects all of the markers you will be using, with the camera(s) in the place(s) where they will be in the final application. For example, if you plan to use a camera pointed at the wall, you should demonstrate a working prototype with the camera pointed at the wall, or for a mobile application, you should show the code running on the mobile device, and the markers and their movement being accurately tracked.

    Build this part of the program knowing that you will be growing it into your final application.
    The best way to start is for each person on the team to download, install, build, and run the code samples from the NyARToolkit Website, or the local ARToolKit Archive.

    Also, you should start on the "guts" of the system. Start by creating a "Ball" class, and have simple gravity applied to them. How will you manage all the balls? How will you update them? How will you find when/how they collide with objects?

    Since time is short, split up the workload so that you can make progress in parallel.

  2. Part 2: Final Application
    In this part, you will add the "guts and back-end" of the applicatoin. Since you are doing a physical simulation, then this is where that code goes. At the end, you should be able to start with a blank wall, add an emitter, showing balls being produced, then add additional markers that control the position and orientation of things the balls will hit.

    Again, there is nothing like getting started early!


Attacking
the Problem:
Start early! I am a firm believer in front-loading as much work as possible on projects. The more you get done now, the fewer unknowns you will have about the project, and the sooner you'll start making significant progress.

Remember to start small. As I've done above, break down the individual parts into smaller, more-manageable pieces; don't try to solve the whole problem from the start.


What to Submit: All documents are to be submitted electronically via turnin by 6:00 pm on the day the assignment is due. Also, you will demonstrate your projects in class as well, so come prepared!

The following items should be submitted for this project:

  1. The code for the final application
  2. A brief description of your project. How do I run it? What do I do?
  3. A brief listing of what each teammember contributed to the project.
  4. URL(s) to one or more YouTube videos showing your application in action.
Name each file something that makes sense.

When you are ready to submit, zip up all your files into a single archive file.
Name the file Lastname1_Lastname2_proj1.zip, with the Lastnames being those of the teammembers.

You will use the Web-based "Turnin" facility to submit your work. Information about submitting can be found here:

http://web.cs.wpi.edu/~kfisler/turnin.html.

Your WPI user ID should be used to login, and you were emailed a password.
The Turnin assignment ID is proj1.


Academic
Honesty:
Remember the policy on Academic Honesty: You may discuss the project with others, but you are to do your own work. The official WPI statement for Academic Honesty can be accessed HERE.

Videos from
Previous Years:
(Different projects)
Fall 2012

Fall 2010


Back to course page.