In this assignment you will model a planar finger (the left forefinger = 1st finger). For this assignment the forefinger is a 3 link planar arm, which is an extension of 2 link and 3 link planar arms. Assume the finger is attached to a rigid body hand frozen in space. Ignore gravity and friction.
We will model the finger as having 3 links, each of which is a cylinder. Human tissue roughly has the density of water. The first link (proximal, closest to the palm) is 5cm long with the perimeter of the cross section being 8cm (I measured this with a string). The second link is 3 cm long with the cross section perimeter being 7cm. The third link (distal) is 2.5cm long with the cross section perimeter being 6cm. Let's put the joints at the ends of the centerlines of the cylinders.
On my finger I measured the following joint limits. My finger can go straight. Let's call the line along the straight finger the Y axis with (0,0) at the base of the finger. Let's also agree that the straight finger is the zero position for all joints. All joints can bend in one direction only. The 1st joint can bend up to 90 degrees (aligning the first link with the X axis). The 2nd joint can bend up to 120 degrees. The 3rd joint can bend up to 60 degrees. Let's agree that bending is a positive joint angle.
Notice that joint 3 cannot be moved independently of joint 2 (Try it). You can only move joint 3 independently if you hold link 2 (with your other hand, for example). Thus your forefinger is a 3 link robot with only two degrees of freedom. A simple model for free movement is that joint 3 is always half of joint 2.
1) Model this finger in a dynamic simulator of your choice (your own creation, ODE, Novodex, ...more, look for free downloads...) In the writeup, completely describe your simulation model. How did you handle the constraint between joint 2 and joint 3?
2) Draw a 2cm x 2cm square with your model finger. You need to figure out where in the finger workspace to do this (including how to orient the square). You need to design trajectories to move the tip [end of the centerline of the last link] in a square pattern. You need to control the simulation to follow these trajectories. [There are actually ways to do this without generating or following trajectories, such as generating a global policy/control law. These approaches are okay too.] In addition to your code, turn in two Matlab readable ASCII data files with the desired trajectory and robot movement results. One file should be the desired trajectory (if you have one), and one file should be the robot movement. The columns should be: time(seconds) joint1(radians) joint2(radians) joint3(radians) tipx(m) tipy(m) Example file format: 0.0 0.0 0.0 0.0 0.0 0.105 ...
3) Verify that your simulation dynamics are correct. Typically this is done by generating the dynamics in a different way (analytically, another simulator, ...) and comparing the results. Other check include energy conservation for lossless systems and conservation of linear and angular momentum where appropriate.
Extra credit: What is the source of the constraint between joint 2 and joint 3 in human hands? How does the constraint work in more complex situations when the finger is in contact?