CPSC 526 Project
Purpose and Requirements
There is no better way to achieve a deep understanding of a particular
subject than to implement some of the ideas. That is the purpose of the project.
You can work on the project in small groups or individually.
The project will consists of a short proposal, a report, and an outside-of-class
meeting to discuss the results. The proposal is due on or before March 15,
and should consists of: (a) project goals; (b) short summary of related work; and
(c) a plan for the project and some intermediate milestones. The project proposal
should be 2-4 pages. There is no requirement that the final project closely
follows the proposal. The proposal plan should, however, provide a scalable
set of intermediate goals for the project and make allowances for testing
and debugging. The proposal will be worth 20% of the project grade.
I would be happy to discuss projects directions with you in person.
Possible Topics
There is no requirement that the project do something new, although
don't let this stop you from trying new things. Here is a list of possible
topics. Note that many of the topics are biased towards my own research interests.
- Your own project suggestion
You can develop your own project suggestion. You may be able to suggest
a project that directly connects with your interests, with a project
in another course, or with your group presentation topic.
I would be happy to discuss ideas with you.
- Dynamic simulation of walking using alternative physics engines
We currently have example implementations of dynamic walking strategies
such as SIMBICON using Open Dynamics Engine. It would be interesting
to test these with other physics engines, such as Havok, PhysX, and Vortex,
among others. The goal would be to see what the tradeoffs are in
terms of numerical stability, simulation efficiency, types of contact models
supported, etc.
- Animation of climbing motions
Given a sequence of hand-and-foot holds on an extended vertical wall,
plan and animate a motion of a human character using these holds
in order to climb the wall. Either kinematic or dynamic animation
is fine. You might look at the example motions in the
game "Assassin's Creed" for some ideas. I suggest using a highly
simplified human figure as a starting point.
- Dynamic walking with realistic tripping reflexes
This project augments the existing 2D or 3D dynamic walking simulations
with basic tripping reflexes. First, any reaction should occur with
a delay, as opposed to current techniques which can respond
instantaneously. Second, if an obstruction is detected early in a step,
it should lead to the swing leg being lifted higher. If an obstruction
is detected late in a step, the swing leg should be placed down sooner
than normal.
- Optimization of walking motion for energy
Optimize the control inputs of one of the existing walking simulations
to achieve the most efficient walk possible, as measured in terms
of energy per unit distance traveled.
- Statistical models of motion
Experiment with one or more statistical models of motion.
There is an entire spectrum of possibilities, ranging from
simple to complex. Come talk to me for suggestions.
- Characters with personality
Develop a simple kinematic character that exhibits significant personality,
along the lines of Ken Perlin's work.
- Implementation of your own rigid body dynamics simulator
Simulate particles, then rigid bodies, then articulated rigid bodies.
- Example-based inverse kinematics
Split motion capture data into example data and test data.
Implement an IK procedure that leverages the example data
to solve for IK problems.
- Modeling the space of natural poses
Using example pose data, develop a generative model
based on Gaussian Mixture Models
for natural human poses found in the CMU motion capture data set.
- Reinforcement learning
Reinforcement learning is used in a variety of ways in state of the
art animation research. Develop a demonstration of reinforcement
learning. Developing a control policy for a
simple dynamical system, e.g., pole-on-a-cart, is an excellent milestone.
Useful Resources
- 3D dynamics simulator: Open Dynamics Engine
Open Dynamics Engine (ODE) (www.ode.org) is a useful starting point for projects
involving 3D rigid body dynamics simulation. Various tutorials on using ODE on
the internet. The
SimpleControlFramework.zip framework
provides a good starting point for working with ODE, as it provides OpenGL-based display
as well as an XML file format for specifying the rigid bodies and their joints.
It comes with an example that shows you how to specify and control a wriggling worm
made from rigid body segments. If you run into issues, you can contact Stelian Coros
(scoros@cs.ubc.ca), who developed the framework and the example, and he may
be able to help you.
- 3D SIMBICON walking simulation
The full source code for a 3D implementation of SIMBICON (see the ACM SIGGRAPH 2007 paper),
built on top
of Open Dynamics Engine, is available:
http://www.cs.ubc.ca/~van/simbicon_cef/index.html.
This will be useful for projects where you want to begin with a fully working
dynamic simulation of walking, and then modify or extend it in various ways.
- 2D dynamics simulations
Sometimes it is simpler to begin exploring control and simulation issues in 2D
before moving to 3D. The excon framework (
http://www.cs.ubc.ca/~van/excon/index.html ) is a good starting point
for such cases, and comes with basic simulation and control of a pendulum,
two-link jumping acrobot, three-link luxo, a 2D Raibert hopper, a 5-link character
controlled with SIMBICON, a seven-link biped, a cart-and-pole, and a simple
model for steering trucks. As a related note, it is also possible to
constrain the 3D dynamics simulator to do a 2D dynamics simulation.
If you are interested in this, contact Michiel or Stelian.
- Motion-capture based animation
The CMU motion capture database ( mocap.cs.cmu.edu ) is a great source for
motion capture data. Basic software for reading and display can
be found here:
MocapPlayer-windows.zip and
. The windows version compiles and runs fine
for me, but I'm told that this is not always the case. If you find and fix
this issue, I'm happy to give credit for this, as I haven't had time to
look into the issue. Also come talk to me about the simple addition that
is still needed to get motion blending working. Some basic instructions
to get started on this code can be found in the following CPSC 426 assignment:
a3.pdf.
- Matlab
For some projects, Matlab may be a very useful toolkit.
Explore the use of existing resources on the web for reading
and displaying motion capture data in Matlab.