Department of Computer Science
Worcester Polytechnic Institute

CS-525H: Immersive Human-Computer Interaction
Project 2: Augmented Reality for the Masses
Due: Monday, November 22, 2010 at 6pm


In this project, you will implement an application using Augmented Reality (AR) technologies that allows people to collaboratively carry out a task.

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. get experience designing collaborative tools, and
  4. 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 task. The description of the project is deliberately left vague to allow you some freedom to explore an application of your choice.

For this project, you are encouraged to use ARToolKit, as it is 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.

Every project must fullfill the following requirements:

  1. The task you choose must require multiple people to collaborate (see examples below).
  2. The primary method of input should be through the use of AR markers.

Here are some sample ideas for your project.

  • A collaborative animation/modeling tool, where each marker has a model on it, and moving the markers near each other makes the models "interact", so a witch model moved near a broom model might make the which fly away on the broom.
  • An interactive physics simulation, where some markers represnt emitters, which produce items like pebbles, and other markers are colliders, which influence the movement of the objects. Tilting an emitter causes its objects to "spill" off of them according to gravity. Other markers may introduce more energy into the system by, for example, propelling objects that collide with them, or a wind marker may blow other objects.
  • A collaborative music-creation tool, where an overhead camera captures markers and marker movement to control audio-sample manipulation. For example, rotating a marker on the table might change the tempo of the associated clip, while raising it up closer to the camera might increase the volume. Once a nice rhythm is found, a special marker might be used to store the current state (i.e., the music).
  • In an AR mystery game, a mobile AR application might use markers mounted on walls to reveal hidden information about something that happened in the space. Multiple players need to search through the space and collaborate to solve the mystery.

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 an overhead camera, you should demonstrate a working prototype with the camera fixed above the workspace, 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 ARToolKit Code Rpository.
    LOTS of start-up help and information can be found on the ARToolKit community support pages. I know these pages are old, but the code is still in good working order.

    Also, you should start on the "guts" of the system. If you are doing audio manipulation, which software will you use? If you are animating things, how will you do this? Where will you get your graphical models from (if you have any)?

    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. If you are doing a physical simulation, then this is where that code goes. If you are doing audio, you need to connect the AR with the audio here.

    Again, there is nothing like getting started early!

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, 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:

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

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 of
Below are YouTube videos of the submissions for his project.

Back to course page.