Setting up our coordinate systems so that you can go from one the next or previous in the chain via a simple rotation simplifies deriving the kinematics.
Simple rotations have easy to write matrix representations. For each of the 3 axes of a coordinate system, a simple rotation about one of its 3 axis can be written:
R1=[100 0cosθ−sinθ 0sinθcosθ ]
Is a rotation about the 1 axis by angle θ. And:
R2=[cosθ0sinθ 010 −sinθ0cosθ ]
Is a rotation about the 2 axis by angle θ. And finally,
R3=[cosθ−sinθ0 sinθcosθ0 001 ]
Is a rotation about the 3 axis by angle θ. As a for instance, say I want to take the vector:
v=[1 0 0 ]
And rotate it about the 3 axis by π4, the rotation matrix is:
R3(π4)=[√22−√220 √22√220 001 ]
Then to rotate the vector v you pre-multiply it by the rotation matrix and get:
R3(π4)v=[√22−√220 √22√220 001 ][1 0 0 ]=[√22 √22 0 ]
If you draw these vectors out on paper, you’ll see it works out and makes sense.
An important note to make is that I keep using the notion of vector rotation to as a synonym for a coordinate frame tranformation. That’s because they are the same thing, just what you think of as changing is different. A coordinate transformation keeps the vector the same but represents it in a new coordinate system, while a rotation keeps the coordinate system the same while rotating the vector and representing it as a new rotated vector in the same coordinate system.
Anyway with that established, we can hash out all of the rotation matricies needed to transform a vector from the ˆci frame to the inertial frame. In the following, the notation of Rbc represents a rotation matrix that transforms a vector in the ˆci frame into the ˆbi frame. Ie, if you have a vector vb in the ˆbi frame, then it can be written in the inertial frame by doing:
ve=RelRlaRabvb
Also, since rotations are orthonormal, the following is true:
Rab=RTba
A few important notes:
-
in this case we are not rotating the vector, but instead are tranforming it to a different coordinate system. The equality ve==vb is true - it is the same vector, just with component representations in different coordinate systems.
-
These rotations are not translations. In fact, vectors don’t have a notion of where they are located. We typically write vectors with their bases at some origin, but that same vector translated anywhere is still the same vector. So the transformation above of vb to ve doesn’t translate the vector or change the vector at all, it is just a different way of representing the same exact vector.
So, finally, all of our simple rotations are:
Rel=[100 0cos0−sin0 0sin0cos0 ]=[100 010 001 ]
Rla=[100 0cos−θl−sin−θl 0sin−θlcos−θl ]=[100 0cosθlsinθl 0−sinθlcosθl ]
Ram=[100 0cos−θm−sin−θm 0sin−θmcos−θm ]=[100 0cosθmsinθm 0−sinθmcosθm ]
Rab=[cos−θh−sin−θh0 sin−θhcos−θh0 001 ]=[cosθhsinθh0 −sinθhcosθh0 001 ]
Rbc=[cos−θs0sin−θs 010 −sin−θs0cos−θs ]=[cosθs0−sinθs 010 sinθs0cosθs ]