DUE: 11:45am, Friday October 15
Worth: 7.5% of your final grade
The course policies page outlines academic honesty as applied to this course, including policies for working with other students on assignments. It also gives the rules for on-time homework submission.
There are three problems. Grading and turn-in details are given below.
.cdy
file with your hand-in..cdy
file with your hand-in..cdy
file with your hand-in. (Note: you should hand in a total of 3 .cdy
files, one for part c, one for part d, and one for part f. These count as “code”, so you may work with a partner on this problem.)We have studied a variety of parameterizations for 3D rotation, including rotation matrices, Euler angles, unit quaternions, and the exponential map. In general it is possible to convert among them; for example, a given unit quaternion it is possible to calculate an equivalent
orthogonal rotation matrix
. Such conversions can be viewed as mathematical mappings from
to
where
is the size of the input parameterization and
is the size of the output parameterization. For example
and
in the mapping from
to
.
It is also true that the forward kinematics of a serial-chain robot, for example the three-link manipulator developed in the beginning of Selig Chapter 4, is a mapping from some dimensional input space to some
dimensional output space. In this case,
equals the number of degrees of freedom in the robot joints (if every joint has only one degree of freedom, such as one rotation, then
is simply the number of joints), and the input space is called the joint space. We use
to represent a vector in this space. And typically
is either 2 or 3 for a planar robot, controlling the
position of the end-effector and possibly also its orientation (similarly,
is typically either 3 or 6 for a spatial robot). The output space is called the task space, and we use
to represent a vector in it. The forward kinematic mapping can thus be written as a function that takes an
-vector input and produces an
-vector output:
We have further studied that the Jacobian is defined for the kinematic mapping as an
matrix of partial derivatives. The entry in this matrix at row
col
is
.
In fact, Jacobians are defined in the same manner not just for robot kinematics, but for any differentiable mapping from to
. A “Jacobian” is just the multidimensional equivalent of a derivative. It turns out that the mappings that represent conversions among rotation parameterizations are differentiable, and in this problem you will derive symbolic expressions for some of their Jacobians.
Using a programming environment of your choice (*), write a program that graphically displays a simulation of an -link planar revolute chain robot, i.e. a generalization of the three-link robot shown in figure 4.1 of the Selig reading. All links should have equal length, and the number of links
should be settable when the program is invoked (i.e. without requiring a re-compile). Set up the scale of your graphics output so that
in the range 1 to 10 are clearly shown in the window. The initial pose of the robot should be “straight out”, like the home position in Selig’s development. This should correspond to setting all the joint rotations to zero.
(*) The only limitation on programming environment is that the course staff needs to be able to compile (if applicable) and run your program for grading purposes (note that it is not sufficient to simply supply both the source code and a pre-compiled executable—if you use a compiled language, we need to be able to re-compile your code). This mainly limits you to using freely-available programming environments, though we do have Matlab. Please resolve any questions you may have about this requirement with the course staff prior to beginning your work.
Implement a second feature to control the simulation by inverse kinematics. You should be able to click and drag on the end effector (the outer tip of the last segment of the robot), and the program should dynamically compute joint angles to make the end effector follow the mouse. Again, the exact design is up to you, including the choice of IK algorithm, but please document the design (and how to use it) your README. Reasonable options include the Jacobian transpose, pseudoinverse, and damped least squares methods as presented in the Buss reading. If you do choose to use any of these methods, please state so in your README.
You may also find the method to compute the Jacobian on page 5 of the Buss reading to be very handy.
When there are more joints than needed to make the end effector follow the mouse, provided the mouse point is reachable at all (i.e. provided it is no further than
from the first joint, where
is the link length). In such cases the robot is called redundant with respect to the task, and there are an infinite number of postures the robot could take that all satisfy the task. Make sure the IK method you choose works for these cases. In particular, analytical IK (solving the equations in closed form, as Selig later does for the two-link case) generally does not work for redundant robots.
Speed is important; it is not hard to implement IK that is not perceptibly “slow” for serial chains of up to at least on modern desktop and laptop computers.
To submit your code for problems 1 and 3, follow the instructions on the assignments page.
For problem 2, you may either include an electronic document of your solution in the above submission, or you may hand in hardcopy at the beginning of class on 10/15.
Out of 100 total possible points, 20 will be allocated to problem 1, 30 to problem 2, and 50 to problem 3.