ME 449 Robotic Manipulation
Spring Quarter 2008

Instructor: Kevin Lynch

Final project reports (code and writeup) due Thursday June 12 at 8 PM.
Final project presentations Friday June 13, 12-2 PM, Tech L168 (15-20 mins each).

Course Summary

Mechanics of robotic manipulation, computer representations and algorithms for manipulation planning, and applications to industrial automation, parts feeding, grasping, fixturing, and assembly.

Course Motivation

Humans are quite adept at manipulating the world. We can push a sofa on the floor, pivot a refrigerator on its legs, throw and catch a baseball, jiggle a key into a lock, shuffle and deal cards, and carry a tray of food without spilling. On the other hand, robots usually only manipulate the world by grasping and carrying. We can build a very precise positioning robot, but if it can't grasp the object in some way, there's not much it can do.

What accounts for this difference between humans and robots? For one, humans understand contact and dynamics from a lifetime of experience. Robots usually only know what we tell them, and we don't tell them much. We need a way to teach robots what we know about manipulation (or let them learn it themselves) if they are ever to become as dexterous as humans.

In this course we focus on the mechanical interaction between the robot and the object it is manipulating, and between the object and the environment. We mostly ignore the problem of robot force or motion control, and concentrate on the interaction between the robot and the world. This interaction is governed by unilateral contact constraints, friction, rigid-body dynamics, and impact. The goal of this course is to understand the mechanics of the interaction between the robot and the world and to develop computer representations and algorithms to support simulation and motion planning.

Grading for the course will be based on problem sets, presentation of a research paper, participation in discussion, and a final project. There will be no exams. The final project, due during finals week, could take the form of simulation code (from scratch or modifying existing code) or a report (e.g., in the form of a conference paper) either analyzing a manipulation problem or building on a recent research paper.

Course Text

Mechanics of Robotic Manipulation, M. T. Mason, MIT Press, Cambridge, MA, 2001, ISBN 0-262-13396-2.

Supplementary material will come from Principles of Robot Motion, H. Choset et al., MIT Press 2005; A Mathematical Introduction to Robotic Manipulation, R. M. Murray, Z. Li, and S. S. Sastry, CRC Press, 1994, ISBN 0-8493-7981-4; Chapter 27 "Contact Modeling and Manipulation," I. Kao, K. Lynch, and J. Burdick, from the upcoming Handbook of Robotics; and other sources.

Approximate Syllabus

Kinematics (Weeks 1-3)
  • degrees-of-freedom, configuration space, holonomic and nonholonomic kinematic constraints (Mason 2.1, 2.5; portions of 2.2-2.4)
  • representations of rigid-body orientation SO(3) (rotation matrix, axis-angle, Euler angles, and quaternions) and displacement SE(3) (Mason 3.1, 3.2; Choset 3.5, 3.6)
  • representations of velocities: twists
  • spatial contact constraints: polyhedral convex cones, convex combinations, form closure (Mason 3.3)
  • graphical methods for planar problems: rotation centers, positive linear combination of instantaneous rotation centers, Reuleaux' method for constraints, contact mode labeling, higher-order methods (Mason 2.5, ch. 27 handbook of robotics)
  • robot finger contact models (soft, hard, friction or no friction) (Mason 4.3, ch. 27 handbook), changing reference frames for wrenches and twists
  • C-space obstacles, motion planning briefly (planar 2R robot, visibility method, RRT) (Mason 4.1-4.2)
  • Statics (Weeks 4-5)
  • forces, couples, wrenches (Mason 5.1-5.3, ch. 27)
  • polyhedral convex wrench cones, duality of forces and free motions, force closure
  • Coulomb friction, friction cone, static equilibrium, wedging, jamming (Mason 6.1-6.4, ch. 27)
  • fixturing and grasping with point contacts
  • planar representations: moment labeling (Mason 5.7, ch. 27)
  • quasistatic mechanics with Coulomb friction, complementarity (ch. 27)
  • planar contact patches, quasistatic pushing and sliding (Mason 6.6, ch. 27)
  • Dynamics (Weeks 6-7)
  • rigid-body dynamics, inertia matrix, Newton-Euler equations (Mason 8)
  • complementarity problems and simulation
  • Impact (Weeks 8-9)
  • planar rigid-body impact, Newton's, Poisson's, and Stronge's restitution coefficients (Mason 9)
  • 3D impact models
  • Wrap Up and Projects (Week 10)

    Problem Sets

    Problem set 1, due in class Thurs April 17: Mason exercises 3.10, 3.13, 3.16. Choset exercises 3.2, 3.6, 3.16, 3.17. Additional problem: prove that the Lie Algebra rank condition is satisfied for the upright rolling wheel that can turn and roll (as discussed in class), considering the configuration variables x, y, theta (steering angle), and phi (angle from the center of the wheel to the air nozzle on the tire). In other words, there is no configuration the wheel cannot reach in its four-dimensional configuration space, so there are no holonomic constraints. Write out the two Pfaffian nonholonomic constraints that limit the set of instantaneous velocities to a two-dimensional space.

    Problem set 2, due in class Tues May 6: Mason exercises 2.9, 4.1, 5.2, plus the following questions:
    4. A table is sitting on the floor. A world coordinate frame is attached to the floor so that the x-y plane of the frame is in the plane of the floor, and z points opposite gravity. One of the table's legs contacts the floor at (x,y,z) = (4,7,0). Write the contact wrench w due to a unit normal contact force at this contact. Write the constraint on the feasible (spatial) twists t of the table due to this contact.
    5. See the left figure in Figure 2.28 of the Mason book. The part is an L-shape. Get rid of the top left "finger," so there are only 3 contacts.
    (a) Use Reuleaux's method to find the first-order feasible instantaneous rotation centers. Make sure this figure is legible, and shows which CORs are "+" and which are "-."
    (b) For each feasible COR, indicate the corresponding contact mode, consisting of the contact label for each of the three contacts. You can use the labels "f" for breaking free, "s" for sticking contact, "l" for the part sliding left relative to the finger, or "r" for the part sliding right, as in the Mason book. (Note the handbook chapter uses "f" for fixed (or rolling) contact, "b" for breaking contact, "s_r" for the part sliding right relative to the finger, and "s_l" for the part sliding left relative to the finger; see Figure 27.2.)
    6. Refer to Figure 27.2 of the handbook chapter. Imagine that the bottom "wall" and top right "finger" are rigidly attached to each other, making one rigid body, and that body begins to rotate clockwise (e.g., angular velocity of -1 rad/s) about a COR at the lower right contact between the wall and the part (the point where the vector w_2 is drawn in Figure 27.2(a)). Draw the set of COR's for the part that correspond to the s_r b s_r contact mode (which is written rfr in the notation of the Mason book), where the part slips right relative to the first contact, breaks free of the second contact, and slips right relative to the third contact. (Hint: The part's twist (velocity) must be a convex combination of the wall-finger's twist and the twists that yield the s_r b s_r contact mode when the wall-finger is stationary. Can you see why? For a given COR yielding s_r b s_r when the wall-finger is moving, the corresponding angular velocity about the COR is not arbitrary, but determined by the magnitude of the velocity of the wall-finger.)
    7. The part is a square with coordinates (-1,-1), (1,-1), (1,1), (-1,1). Now get rid of the right edge connecting (1,1) and (1,-1), and replace it with a smooth concave curve connecting (1,1) to (0,0) to (1,-1). Put a stationary point finger at each of (-1,0) and (0,0). By a first-order analysis, the part can still move in the +/- y direction. Choose a simple algebraic curve x=f(y) connecting (1,1) to (0,0) to (1,-1) so that motion in the +/- y direction is impossible (the part is immobilized), but which requires more than a second-order analysis to prove immobilization. Give the equation for the curve and demonstrate why a higher-order analysis is needed to prove immobilization.

    Problem set 3, due in class Thurs May 29:
    1. The fingers-under-the-ruler problem. Two fingers support a ruler horizontally in gravity. Finger 1 is located at position 0 on a horizontal line, and is stationary for all time. The center of mass of the ruler is at position L > 0, and finger 2 is located at D > L > 0. Finger 2 moves at constant slow speed toward finger 1, so dD/dt < 0. (The magnitude doesn't matter for our analysis.) The static friction coefficient is u_s and the kinetic friction coefficient is u_k. The only relevant contact modes are sr (finger 1 sticks, ruler slips right relative to finger 2), ls (ruler slips left relative to finger 1, and finger 2 sticks), and lr (ruler slips left relative to finger 1, right relative to finger 2). Note that ss and rl are not possible (fingers are moving together, so these are impossible kinematically) and ll and rr are not possible (as the contact forces with the fingers would be parallel but not vertical, meaning that we can have no quasistatic balance with the vertical gravitational force mg).
    Question: For each contact mode sr, ls, and lr, give the range of values of L and D for which the contact mode is quasistatically consistent. Is there ever more than one possible solution (ambiguity) or no solutions (inconsistency) when u_s > u_k? What if u_s = u_k? What if u_s < u_k? For the case u_s = u_k, show that D > L at all times as finger 2 moves toward finger 1, meaning that both fingers end up directly under the ruler's center of mass. (Hint: Use moment balance to determine the normal force at each finger, and keep in mind that tangential frictional forces must balance in the quasistatic case.)
    2. Use Lagrange's equations to find the dynamics of a two-joint RR (two revolute joints) robotic arm moving in a vertical plane (with gravity). The angle of joint 1, q1, is relative to the horizontal, and the angle of joint 2, q2, is relative to link 1. The first link is length L1, and the second link is length L2. The mass of link 1 is m1 and is concentrated at the end of link 1 (at joint 2), and the mass of link 2 is m2 and is concentrated at the end of link 2. Show your work. Put the results in the standard form M(q) d2q/dt2 + h(q, dq/dt) + g(q) = u.
    3. Body 1 and body 2 are in contact, where the center of mass of each body, the contact location, and the contact normal and tangent directions are shown in the figure. Body 1 has mass 1 and inertia 0.1, and body 2 has mass 2 and inertia 0.2. The initial velocity of body 1 is (dx1/dt,dy1/dt,dtheta1/dt) = (1,0,-1)^T. The initial velocity of body 2 is (dx2/dt,dy2/dt,dtheta2/dt) = (2,0,0)^T. There is no gravity. The external wrench applied to body 1 is (0,5,0)^T, and no external wrench is applied to body 2. The friction coefficient at the contact is 0.5.
    a. By evaluating the normal velocity v_n and tangential velocity v_t at the contact, show that the contact is initially maintained (not separating) and rolling (not sliding).
    b. Write the composite dynamics of the system d2q/dt2 = M^{-1}(W_n c_n + W_t c_t + w_ext).
    c. Derive the normal acceleration a_n at the contact in terms of d2q/dt2. Then plug in the results of part b to eliminate the d2q/dt2 terms from your expression for a_n.
    d. Derive the tangential acceleration a_t at the contact in terms of d2q/dt2. Then plug in the results of part b to eliminate the d2q/dt2 terms from your expression for a_t.
    e. Write the complementarity conditions for a_n and c_n.
    f. Replace a_t from part d with (a+)_t and (a-)_t, and instances of c_t with (s+)_t and (s-)_t, as discussed in class and in the Berard, Egan, Trinkle paper. Write the complementarity conditions for these new variables.
    g. How many variables do you have to solve for, and how many equations?
    h. Bonus: Transform your equations into the LCP form (16) and (17) from the Berard, Egan, and Trinkle paper.
    4. The two rods shown are leaning against each other and supported by a horizontal table in a gravity field. Sample friction cones are shown at the contacts, the contact normals between the two rods are horizontal, and the coordinates of each contact and the rods' CMs are given. What is the minimum friction coefficient u necessary to prevent the rods from falling if m1 = m2? What if m1 = n m2, for any n>0?
    [To solve this, write the static equilibrium equations for each of the two rods. Write the contact wrenches for each rod in its CM-centered frame. The contact wrench on rod 1, on the left, due to contact with the floor is c1 w1 + c2 w2, where c1, c2 must be >= 0. For example, we can write w1 as (-u,1,-1-u)^T (it's not necessary for this vector to be unit, or the force portion to be unit). Write out the wrenches w2...w8, write the static equilibrium conditions in terms of c1...c8 (note c3=c5 and c4=c6), and solve for the c's in terms of m1, m2, and the friction coefficient u. Show your work, and use mathematica or maple to help you solve the linear equations.]
    In most problems (unlike this example) there are more design variables (c's) than equations, and there may be an infinite number of solutions to the contact forces that yield static equilibrium. In these cases, we can turn the problem into a linear programming problem of trying to find any feasible solution.
    5. Follow on to problem 4: Explain, in words, how we would check if the rods stay stationary relative to each other and the table if the table is moving with a specified velocity and acceleration. How does the problem formulation change? While you don't need to write equations, your description should make it clear how to do this.

    Papers

    Discussion in class Thursday, May 1: "New Bounds on the Number of Frictionless Fingers Required to Immobilize 2D Objects," E. Rimon and J. W. Burdick, 1995 IEEE International Conference on Robotics and Automation. Note: This paper refers to "force closure" on the first page, but we've only talked about "form closure" so far. For frictionless contacts, as considered on the first page, force closure is equivalent to first-order form closure.
    All students: bring a sheet of paper (to turn in) with one discussion point (this can be a question or comment, but something for the class discussion) and your answer to the following problem: The part is an ellipse centered at (0,0) with principal axes aligned with the x-y axes. The ellipse passes through the points (-1,0) and (1,0), as well as (0,A) and (0,-A) (so if A = 1 the ellipse is a circle). We place rigid, stationary, point fingers so that they contact the part at (-1,0) and (1,0). For what values of A is the elliptical part immobilized by the two fingers? For values of A where the part is not immobilized with point fingers at (-1,0) and (1,0), can you design non-point fingers that make contact at those locations that immobilize the ellipse?

    Discussion in class Thursday, May 15: "Contact Modes and Complementary Cones," S. Berard, K. Egan, and J. C. Trinkle, 2004 IEEE International Conference on Robotics and Automation.
    All students: bring a sheet of paper (to turn in) with one discussion point (this can be a question or comment, but something for the class discussion). This should not be a trivial question or observation, but something more substantive. Also answer the following question: for the three-contact situation in Figure 1, write the 4^3 enumeration of potential contact modes, using the notation s, l, r, and f, as given in the Mason book. (You do not need to actually write them all, just show how to enumerate them.) Now write out the subset of contact modes that is actually geometrically feasible, and show your work to get this answer. (Just do your best to approximately draw the contact locations and normals from the figure.) The contacts are numbered 1, 2, 3 from left to right.

    Final Projects

    Final projects are due during finals week. We will schedule a session during finals week (perhaps during the scheduled finals time) where you will each spend ~10 minutes presenting your project. Most project documentation will take the form of a conference paper (or user's manual), and most projects have an associated software component.
    1. Simulation of sliding planar rigid bodies in C++ [Nick]. This project involves using dVC (for "daVinci Code") to simulate polygonal planar bodies sliding on a vibrating surface. The final product will consist of documentation for the essential functions in dVC, describing how they work; a problem specification file for two complementary parts (e.g., a chamfered hole and a peg) on a plate creating a "squeeze field"; and a rough characterization of the initial configurations of the parts that result in an "assembly," depending on the friction coefficient. See the description of dVC and the sourceforge download site, as well as the project page for the vibratory shaker.
    2. Solving planar rigid-body contact problems in Matlab [Keith]. Two (or more) planar parts are placed in contact with feasible initial velocities, and the acceleration of at least one of the parts (or the external force applied to at least one of the parts) is specified. Friction between the parts is specified. Solve for the acceleration of the remaining parts using linear complementarity (see, for example, this code or other sources). The parts may be described by polygons, parameterized curves, or implicit functions.
    3. Matlab simulation of a planar polygonal part bouncing on a moving plate [Adil]. The convex polygonal part is in a gravity field and bouncing on an approximately horizontal support plate that moves with three degrees of freedom (x, y, theta). The plate's motion in these three DOF is given by a pre-determined periodic motion. Simulate and create movies of the part bouncing on the plate. Use Routh's method for impact as outlined in Mason's book. The user can choose the part's geometry, mass distribution, friction, and restitution coefficient. As a first test, leave the plate stationary and watch as the part bounces and comes to rest on the plate. Then demonstrate the motion of the part for a periodic motion of the plate. Does the part's motion ever become periodic? Can you make a motion of the plate that causes a rectangular part to "stand up" most of the time? (Optional: You could try making the plate's acceleration be a function of the part's configuration and/or velocity, creating a feedback control system.)
    4. Simulation of vibrated granular material [Erik]. This is similar to the project above, except instead of having a single polygonal part, you have hundreds or thousands of small hard spheres (grains). The support plate vibrates with three degrees of freedom. The plate can have walls, or if the vibration is only translational, the plate can be periodic (grains bounce off one end and come back in on the other). You can create your own code or use/modify existing open-source codes (e.g., LAMPPS). Demonstrate oscillons with vertical-only vibration, and look for other periodic patterns that can be generated with two or three degrees of freedom of motion of the plate.
    5. Simulation of a sphere rolling on a moving smooth surface [Mary]. The ball rolls on the smooth surface in a gravitational field. Plot the total energy (kinetic plus potential) of the ball as it rolls. It should stay approximately constant when the surface is stationary. Display or plot the friction coefficient needed to enforce rolling. Make a movie of the motion of the sphere (put marks on it so the motion is visible, or put markers on the ball and/or ellipsoid where contact occurred). Example: a sphere rolls on the inside of an ellipsoid, and the ellipsoid undergoes periodic translational motion in one direction. Can you make a feedback controller to make the ellipsoid move to add or subtract energy from the sphere?
    6. Matlab simulation of a free-floating tumbling rigid body with control torques [Jon]. The user specifies the length, width, and height of a rectangular prism and chooses an initial orientation and angular velocity. The body is uniform density. The program simulates and animates the body's 3D rotational motion, and provides monitor plots of the angular velocity, angular momentum, and kinetic energy. (Which of these should remain constant if no control torques are applied?) Demonstrate the instability of tumbling about the intermediate axis of inertia. The program should have hooks for a user-defined control law, a function that takes the current time, and the orientation and angular velocity of the body, and returns three control torques that alter the tumbling of the body. You can use this function to make a feedback controller to stabilize the orientation of the body. Optionally you can provide a user interface that allows the user to apply control torques interactively while the body is rotating.
    7. Survey of rigid-body contact simulation codes. This project will survey some of the popular commercial and open-source codes for simulating rigid-body mechanics. Example commercial codes include DADs, Adams, Working Model, and Matlab's SimMechanics, and free or open-source codes include ODE, dVC, and Newton. (This is not a complete list, and you can find a lot of information online; look for "physics engines.") See, for example, the brief survey in this paper by Trinkle et al., this paper by Johnson and Murphey, and Trinkle's online survey of simulation software (a bit dated and brief, but otherwise good). Your survey should focus on systems that handle unilateral contacts, not just mechanical systems with joints. It is better to focus on a smaller number of good or popular packages and give a detailed description of the similarities and differences, rather than to give a superficial mention of every physics engine you can find. The survey should include a good bibliography and indicate how the codes differ or are similar. Does the code use penalty methods or not? Does it use Coulomb friction? Does it use complementarity methods, or what is the numerical method at the heart of the computation? Is the software 2D only, or 3D? What kind of time-stepper does it use? What representations of bodies does it use (polygons/polyhedra, NURBS, implicit functions, parameterizations)? Does it handle impacts? What visualization/graphics tools or packages does it use? Which operating systems does it work on? How popular or stable is it (to the extent you can determine)? The survey should choose a number of dimensions on which the software can be categorized and place each along these dimensions. Documentation of experience of any personal testing of free code is a plus, but the focus should be on how the code works.