[27 points ] Inverse Kinematics
Make sure you often check the course website for clarifications and updates.
You have to develop an Inverse Kinematics engine for animating a human character. The human
character is to be positioned in front of a blackboard. Your program should read an arbitrary
shape represented by a 2D spline (use code from assignment 1 or the spline class provided). The
character should be able to draw (i.e trace) the spline on the blackboard.
The program should work as follows. Through the scripting command read an arbitrary spline.
Once the spline is read, pressing the key “s” should make the character draw the spline
repeatedly. Drawing should stop when “s” is pressed again.
–  Model a classroom using one wall whose visible surface is the z = 0 plane, (where the
blackboard will be attached), and a planar floor with the y-axis as its normal.
–  Model and position a blackboard. It should be planar and in the y-x plane. When the
blackboard is positioned on the wall, its geometric center should be at the origin of the world
coordinate system, <0, 0, 0>.
–  You should be able to read arbitrary splines and project them on the blackboard.
–  Model a human character using ellipses (see figure).
–  Implement an inverse kinematics solver using the pseudo inverse approach.
–  Draw the spline on the board.
–  Quality/coding style.
–  The character should start in the rest pose. After a spline is loaded, the character should
switch to the Ready pose (see below) for drawing on the blackboard.
–  Follow the interface elements specified below.
–  make the scene nicer to look at (be creative!)
–  when the simulation starts move the character from the current pose to the ready pose
(discussed above) by linearly interpolating the joint angles. Also, move the other arm down to be
parallel with the body.
– The end effector is the end point of the right hand. See figure.
– The interface should work as follows:
> simulator iksim read spline.txt
> system bob position < x y z>
– Make sure you name your system bob and your simulator iksim.
– The character is always aligned with the blackboard.
– When the character has to move its hand from an initial position to the board you have to
compute a trajectory for it. You may use a straight line for that.
Specifications for the character:
Degrees of freedom:
The root is the geometric center of the torso
3 translational at the root
3 rotational at the shoulder: (first around x, then y, then z)
2 rotational at the elbow (first around x then around y)
2 rotational at the wrist (y,z) : first around y then around z
The figure shows the positions of the joints and the axis of rotation.
The lengths of the limbs are up to you. Try to use numbers that make sense in the metric system.