Rotations and Translations Euler Theorem + Quaternions Representing a Point 3D A three-dimensional point px A P py p z A is a reference coordinate system here Rotation along the Z axis In general: cos A B RZ sin 0 sin cos 0 0 0 1 ŶB ŶA X̂ B X̂ A Using Rotation Matrices A P R P A B B Combining Rotation and Translation A P R P PBORG A B B A ŶB B P X̂ B ŶA A P A X̂ A PBORG Extension to 4x4 We can define a 4x4 matrix operator and use a 4x1 position vector A P 1 0 A B R 0 0 A PBORG B P 1 1 Formula A P T P A B B Notes Homogeneous transforms are useful in writing compact equations; a computer program would not use them because of the time wasted multiplying ones and zeros. This representation is mainly for our convenience. For the details turn to chapter 2. Euler’s Theorem Any two independent orthonormal coordinate frames can be related by a sequence of rotations (not more than three) about coordinate axes, where no two successive rotations may be about the same axis. Euler Angles This means, that we can represent an orientation with 3 numbers Assuming we limit ourselves to 3 rotations without successive rotations about the same axis: Example Another Example Suppose we want to use ZXZ rotation, Rotation along Z axis, 𝛾 Rotation along X axis, 𝛽 Rotation along Z axis, 𝛼 Example - Cont Let’s see what happens if, 𝛽 = 0 Example – Cont 2 Changing 𝛼's and 𝛾's values in the above matrix has the same effects: the rotation's angle changes, but the rotation's axis remains in the 𝑍 direction Gimbal Lock Gimbal Lock Animation Euler Angle - Matlab If we want to rotate Roll,Pitch and Yaw Roll 0.1 degrees Pitch 0.2 degrees Yaw 0.3 degrees >> rotx(0.1)*roty(0.2)*rotz(0.3) ans = 0.9363 -0.2896 0.1987 0.3130 0.9447 -0.0978 -0.1593 0.1538 0.9752 Euler Angle – Matlab cont. >> rpy2r(0.1,0.2,0.3) ans = 0.9363 -0.2896 0.1987 0.3130 0.9447 -0.0978 -0.1593 0.1538 0.9752 Euler Theorem In three-dimensional space, any displacement of a rigid body such that a point on the rigid body remains fixed, is equivalent to a single rotation about some axis that runs through the fixed point. Euler Theorem - Matlab R= 0.9363 -0.2896 0.1987 0.3130 0.9447 -0.0978 -0.1593 0.1538 0.9752 [theta, v] = tr2angvec(R) theta = 0.3816 v= 0.3379 0.4807 0.8092 Euler Theorem – Matlab cont. >> angvec2r(0.3816, [0.3379,0.4807,0.8092]) ans = 0.9363 -0.2897 0.1987 0.3130 0.9447 -0.0979 -0.1593 0.1538 0.9752 3D Rotations - Matlab R = rotx(pi/2); trplot(R) tranimate(R) HW Quaternions The quaternion group has 8 members: i, j , k , 1 Their product is defined by the equation: i j k ijk 1 2 2 2 Example Calculate ij ? ijk 1 ijkk k k ijkk ijk ij ( 1) ij k 2 Quaternions - Algebra Using the same methods, we can get to the following: Quaternions Algebra We will call the following linear combination Q s ia jb kc s v a quaternion. It can be written also as: Q s, a, b, c All the combinations of Q where a,b,c,s are real numbers is called the quaternion algebra. Quaternion Algebra By Euler’s theorem every rotation can be represented as a rotation around some axis K̂ with angle . In quaternion terms: Rot ( Kˆ , ) (cos( 2 ) sin( 2 ) Kˆ ) (1, 2 , 3 , 4 ) Composition of rotations is equivalent to quaternion multiplication. Example We want to represent a rotation around x-axis by 90 , and then around z-axis by 90 : (cos(45 ) sin(45 ) k )(cos(45 ) sin(45 )i) o 3 (i j k ) 1 1 2 2 (i j k ) cos(60 ) 2 3 (i j k ) o Rot ,120 3 o o o o Rotating with quaternions We can describe a rotation of a given vector v around a unit vector u by angle : this action is called conjugation. * Pay attention to the inverse of q (like in complex numbers) ! Rotating with quaternions The rotation matrix corresponding to a rotation by the unit quaternion z = a + bi + cj + dk (with |z| = 1) is given by: Its also possible to calculate the quaternion from rotation matrix: Look at Craig (chapter 2 p.50 )