[ ![](https://www.robot-forum.com/eaImages/banner-113.gif)
](https://www.robot-forum.com/shop/category/61-bronze-level-sponsoring/)


* [ Feb 26th 2018  ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=110536#post110536)


For the object with angular velocity ω and the position vector p, we can represent its
linear velocity vector as
v = ω × p. (41)
Background Knowledge: Given two vectors a and b, their cross product result a × b
will also be a vector that it perpendicular to both a and b. To determine the direction of
the result vector, as indicated in Figure 9, it also follows the right hand rule. We just need
to place the index finger to vector a and middle finger to vector b, then the thumb finger
will be the direction of a × b. Following this rule, we can also observe that a × b = −b × a.
With the right hand rule introduced above, we can decide the direction of the linear
velocity vector v, and observe that v ⊥ ω and v ⊥ p. As to the length of vector v, it can
be represented to be
kvk = kωk kpk sin θ. (42)
If we know the elements of the vectors ω and p, we can also represent their cross product
to be
ω × p =


ωx
ωy
ωz

 ×


px
py
pz

 =


ωypz − ωzpy
ωzpx − ωxpz
ωxpy − ωypx

 . (43)
19
JIAWEI ZHANG, IFM LAB DIRECTOR
We observe that the result vector of ω × p can actually also be obtained via a matrixvector multiplication shown as follows:



[ SteveL  ](https://www.robot-forum.com/user/73044-stevel/)


perspective, the orientation of the x axis faces forward, y axis to the left and z axis faces
up. In this tutorial article, we can refer to the world coordinate with a default notation Σw.
For the world coordinate notation Σw, the term Σ denotes the coordinate and the subscript w differentiates the world coordinate from other local coordinates to be introduced
later.
Example 6 As shown in Figure 4, we provide an example of the world coordinate Σw,
whose origin is located at the center of the robot arm base. The robot arm has two links
connected via the joints a and b, and the end point of the second arm link is denoted as e.
Based on the world coordinate Σw, we can represent the vector point from the origin
to the first joint a as a vector p
[Σw]
a (in the blue color), whose orientation faces upward.
Similarly, we can also represent the vectors pointing from the world coordinate system origin
to the joint b and end point e as p
[Σw]
b
and p
[Σw]
e , respectively.
In the above example, we observe the length of the arm links are l1 (from the base to
the first joint), l2 (from the first joint to the second one) and l3 (from the second joint to
the end point). Therefore, the vectors p
[Σw]
o→a, p
[Σw]
o→b
and p
[Σw]
o→e can actually be represented as
p
[Σw]
o→a = (0, 0, l1)
> , p
[Σw]
o→b = (0, 0, l1 + l2)
> , p
[Σw]
o→e = (0, 0, l1 + l2 + l3)
>, (1)
8
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB


     353
Trophies


[ ](/m/signin?actionUrl=%2F_%2Fapi%2Fusers%2F7dc1b7cd8e07%2Flazily-enable-
writer-
subscription&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40bikashojha904%2Fkinematic-
modelling-of-robotic-
arms-4f40883fbaef&user=Rituram+Ojha&userId=7dc1b7cd8e07&source=-----4f40883fbaef
---------------------subscribe_user-----------)


[ Powered by **WoltLab Suite™ 5.5.20** ](https://www.woltlab.com)


     3
[ Posts ](https://www.robot-forum.com/robotforum/user-post-list/73044-stevel/
"Posts by SteveL")


**Denavit-Hartenberg Frame Assignment Rules:
** 1\. The z-axis must be the axis of revolution or the direction of motion.
2\. The x-axis must be perpendicular to the z-axis of the frame before it.
3\. x-axis must intersect the z-axis of the frame before it.
4\. y-axis has to be drawn so the whole frame follows right hand rule.


In World (or base) coordinate system, the pose of the currently selected tool
is reported as X Y Z W P R.
This means that the current tool's pose is reached by (/understood as):
0) Start by assuming the tool's coordinate system (frame or pose) is
overlapping with that of the robot base = world coordinate system. This means
that the tool pose is x=0, y=0, z=0, w=0, p=0, r=0 so that the tool's
coordinate system's x axis corresponds to that of the robot base and the same
is true for the y and z axes (respectively). Of course, the tool would be
inside the robot, so this is only a starting point to consider in your mind /
theoretically. Now to reach our X Y Z W P R,
1) Rotate the tool's coordinate system compared to the base (=world)
coordinate system using angles W P and R
2) Translate the tool's coordinate system ( ! after the rotation performed in
1) ! ) by X Y Z.


Download


> [
> ![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPjxwYXRoIGZpbGw9IiM2YjgyOTAiIGQ9Ik0wIDBoMTZ2MTZIMHoiLz48dGV4dCB4PSI4IiB5PSI4IiBmaWxsPSIjZmZmIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkeT0iLjNlbSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjciPlJPPC90ZXh0Pjwvc3ZnPg==)
> ](https://www.robot-forum.com/user/84217-robotero/)
>
> [ Quote from robotero ](https://www.robot-
> forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-
> positioning/?postID=110607#post110607)
>
> The compound rotation around the X,Y,Z axis with respect to the fixed frame
> is
>
>
>  Rotz(R).Roty(P).Rotx(W)
>
>
>  The transformations order is reversed because rotations are extrinsic (with
> respect to the fixed frame)


readers interested in robot control, we also have several textbooks recommended for you to
read as well, like [1, 2].
This tutorial article will be math-heavy. Just like you, I don’t like math either, but
we have to use math to model the real world. Based on the equations we introduce in the
article, we will be able to write the code to represent and control the robot. The bitter
has to been swallowed first, then the sweet will come afterwards. Before we discuss about
the aforementioned topics, we would like to briefly describe the notations to be used in this
article as follows.
1.2 Basic Notations
In the sequel of this article, we will use the lower case letters (e.g., x) to represent scalars,
lower case bold letters (e.g., x) to denote column vectors, bold-face upper case letters (e.g.,
X) to denote matrices. Given a vector x, its length is denoted as kxk. Given a matrix X,
we denote X(i, :) and X(:, j) as its ith row and jth column, respectively. The (ith, jth) entry
of matrix X can be denoted as either X(i, j) or Xi,j , which will be used interchangeably.
We use X> and x
> to represent the transpose of matrix X and vector x. The cross product
of vectors x and y is represented as x × y. A coordinate system is denoted as Σ, and the
vector x in coordinate system Σ can also be specified as x
[Σ]. For a scalar x, vector x and
matrix X, we can also represent their first-order derivatives as ˙x, x˙ and X˙
, and second-order
derivatives as ¨x, x¨ and X¨ .
2. Robot Representation
In this tutorial article, we will focus on rigid-body robots with known shapes. Besides
rigid-body robots, research on soft-body robots is also very popular nowadays, but it is out
of the scope of this tutorial article.
2.1 Robot Structure
At the beginning, we would like to introduce the robot physical structure and its representation with certain data structures in program for readers.
2.1.1 Robot Physical Structure
As shown in Figure 1, we provide an example of the rigid-body robot structure, involving
the trunk and a number of links connected together via the joints. For the representation
and motion control simplicity, we prefer to attach the joints to the link that is further away
from the trunk. In this robot structure, each link will have only one joint to control its
motion, so the same algorithm can be applied to control all the links and joints in the robot.
Meanwhile, in the small plot shown at the right-hand side in Figure 1, we also provide
another robot structure, where the joints are attached to the links closer to the trunk. In
such a structure, the robot trunk will have multiple attached motors, e.g., 2 from leg, 2
from arm and 1 from neck. For such a robot structure, the control of the robot trunk with
5 attached joints will be very different from the control of the arms and legs, which may
create extra difficulties in the robot motion and control.


Check out the Fanuc position converter I wrote [ here! ](https://www.robot-
forum.com/robotforum/thread/29765-position-converter-convert-from-xyzwpr-rep-
to-joint-rep-and-back/) Now [ open source
](https://github.com/SynapticRobotics/PositionConverter) !


* [ #8 ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=140731#post140731 "Share")


  * [ SteveL ](https://www.robot-forum.com/user/73044-stevel/)
  * [ Feb 26th 2018  ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/)
  * Thread is marked as Resolved.


* [ #1 ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=110536#post110536 "Share")


2
. (66)
We will leave the proof of the above theorem as an exercise for the readers, which can be
done with the mathematical induction on n starting from n = 0.
Based on the above theorem, we can further simplify the Equation 64, the high-order
power of the matrix ωb in the equation can be reduced to the sum of be and be
2
:
R(t) = I +

( ˙qt) −
( ˙qt)
3
3! +
( ˙qt)
5
5! − · · ·
be +

( ˙qt)
2
2! −
( ˙qt)
4
4! +
( ˙qt)
6
6! − · · ·
be
2
. (67)
If the readers still remember the Taylor series of sin θ and cos θ, you will observe that
the above representation of matrix R(t) can be further simplified as follows:
R(t) = I + be sin θ + be
2
(1 − cos θ), (68)
where θ = ˙qt is introduced to further simplify the representations. This equation will be
frequently used in robot control and kinematics to be introduced in the following articles.
4.4.2 Rotation Matrix Logarithm
Based on the analysis in the above subsection, given the object angular velocity vector ωb,


Notations_for_intervals "Interval
\(mathematics\)") ):

  * for _α_ and _γ_ , the range is defined [ modulo ](/wiki/Modular_arithmetic "Modular arithmetic") 2  π  [ radians ](/wiki/Radian "Radian") . For instance, a valid range could be  [−  π  ,  π  ]  .
  * for _β_ , the range covers  π  radians (but can not be said to be modulo  π  ). For example, it could be  [0,  π  ]  or  [−  π  /2,  π  /2]  .

The angles _α_ , _β_ and _γ_ are uniquely determined except for the singular
case that the _xy_ and the _XY_ planes are identical, i.e. when the _z_ axis
and the _Z_ axis have the same or opposite directions. Indeed, if the _z_ axis
and the _Z_ axis are the same, _β_ = 0 and only ( _α_ \+ _γ_ ) is uniquely
defined (not the individual values), and, similarly, if the _z_ axis and the
_Z_ axis are opposite, _β_ =  π  and only ( _α_ − _γ_ ) is uniquely defined
(not the individual values). These ambiguities are known as [ gimbal lock
](/wiki/Gimbal_lock "Gimbal lock") in applications.

There are six possibilities of choosing the rotation axes for proper Euler
angles. In all of them, the first and third rotation axes are the same. The
six possible sequences are:

  1. _z_ 1  \- _x_ ′- _z_ 2  ″ (intrinsic rotations) or _z_ 2  \- _x_ \- _z_ 1  (extrinsic rotations)
  2. _x_ 1  \- _y_ ′- _x_ 2  ″ (intrinsic rotations) or _x_ 2  \- _y_ \- _x_ 1  (extrinsic rotations)
  3. _y_ 1  \- _z_ ′- _y_ 2  ″ (intrinsic rotations) or _y_ 2  \- _z_ \- _y_ 1  (extrinsic rotations)
  4. _z_ 1  \- _y_ ′- _z_ 2  ″ (intrinsic rotations) or _z_ 2  \- _y_ \- _z_ 1  (extrinsic rotations)
  5. _x_ 1  \- _z_ ′- _x_ 2  ″ (intrinsic rotations) or _x_ 2  \- _z_ \- _x_ 1  (extrinsic rotations)
  6. _y_ 1  \- _x_ ′- _y_ 2  ″ (intrinsic rotations) or _y_ 2  \- _x_ \- _y_ 1  (extrinsic rotations)


    * [ ](https://www.robot-forum.com/trophy/70-5th-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/72-3rd-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/73-helping-hand/)


     sin    (  β  )  ⋅  cos    (  γ  )  =  Y  3  ,  {\displaystyle \sin(\beta )\cdot \cos(\gamma )=Y_{3},}  ![{\\displaystyle \\sin\(\\beta \)\\cdot \\cos\(\\gamma \)=Y_{3},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/11b6d34b4844044398a70b0885029a810bbff0ab)
     cos    (  γ  )  =  Y  3  /  1  −  Z  3  2  ,  {\displaystyle \cos(\gamma )=Y_{3}/{\sqrt {1-Z_{3}^{2}}},}  ![{\\displaystyle \\cos\(\\gamma \)=Y_{3}/{\\sqrt {1-Z_{3}^{2}}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3ddb423f88112b643efc72e72404bafa5229e2d0)

and finally, using the [ inverse cosine
](/wiki/Inverse_trigonometric_functions "Inverse trigonometric functions")
function,

     α  =  arccos    (  −  Z  2  /  1  −  Z  3  2  )  ,  {\displaystyle \alpha =\arccos \left(-Z_{2}/{\sqrt {1-Z_{3}^{2}}}\right),}  ![{\\displaystyle \\alpha =\\arccos \\left\(-Z_{2}/{\\sqrt {1-Z_{3}^{2}}}\\right\),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ce360cf255207dbbaf417d219531ddef53d20dad)
     β  =  arccos    (  Z  3  )  ,  {\displaystyle \beta =\arccos \left(Z_{3}\right),}  ![{\\displaystyle \\beta =\\arccos \\left\(Z_{3}\\right\),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/eadc9458dc9643149fe0fb9bbe7b7770b3fc6e79)
     γ  =  arccos    (  Y  3  /  1  −  Z  3  2  )  .  {\displaystyle \gamma =\arccos \left(Y_{3}/{\sqrt {1-Z_{3}^{2}}}\right).}  ![{\\displaystyle \\gamma =\\arccos \\left\(Y_{3}/{\\sqrt {1-Z_{3}^{2}}}\\right\).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a7f21b118ff354cea66670ddf8aeb6ef6d3ad962)


  Geometrical definition  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=3 "Edit section:
Geometrical definition") ]

The axes of the original frame are denoted as _x_ , _y_ , _z_ and the axes of
the rotated frame as _X_ , _Y_ , _Z_ . The **geometrical definition**
(sometimes referred to as static) begins by defining the [ line of nodes
](/wiki/Line_of_nodes "Line of nodes") (N) as the intersection of the planes
_xy_ and _XY_ (it can also be defined as the common perpendicular to the axes
_z_ and _Z_ and then written as the vector product _N_ = _z_ × _Z_ ). Using
it, the three **Euler angles** can be defined as follows:

  * α  {\displaystyle \alpha }  ![{\\displaystyle \\alpha }](https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3) (or  φ  {\displaystyle \varphi }  ![{\\displaystyle \\varphi }](https://wikimedia.org/api/rest_v1/media/math/render/svg/33ee699558d09cf9d653f6351f9fda0b2f4aaa3e) ) is the signed angle between the _x_ axis and the _N_ axis ( _x_ -convention – it could also be defined between _y_ and _N_ , called _y_ -convention).
  * β  {\displaystyle \beta }  ![{\\displaystyle \\beta }](https://wikimedia.org/api/rest_v1/media/math/render/svg/7ed48a5e36207156fb792fa79d29925d2f7901e8) (or  θ  {\displaystyle \theta }  ![{\\displaystyle \\theta }](https://wikimedia.org/api/rest_v1/media/math/render/svg/6e5ab2664b422d53eb0c7df3b87e1360d75ad9af) ) is the angle between the _z_ axis and the _Z_ axis.
  * γ  {\displaystyle \gamma }  ![{\\displaystyle \\gamma }](https://wikimedia.org/api/rest_v1/media/math/render/svg/a223c880b0ce3da8f64ee33c4f0010beee400b1a) (or  ψ  {\displaystyle \psi }  ![{\\displaystyle \\psi }](https://wikimedia.org/api/rest_v1/media/math/render/svg/45e5789e5d9c8f7c79744f43ecaaf8ba42a8553a) ) is the signed angle between the _N_ axis and the _X_ axis ( _x_ -convention).

Euler angles between two reference frames are defined only if both frames have
the same [ handedness ](/wiki/Orientation_\(mathematics\) "Orientation
\(mathematics\)") .


[ Rituram Ojha ](/@bikashojha904?source=post_page-----
4f40883fbaef--------------------------------)


* [ Feb 27th 2018  ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=110607#post110607)


a) Rotx(w)*Roty(r)*Rotz(t) - xy'z'' (intrinsic) / zyx (extrinsic)


     504
Trophies


missing_periodical "Help:CS1 errors") )
  5. ** ^  ** Yershova, A.; Jain, S.; Lavalle, S. M.; Mitchell, J. C. (2010). [ "Generating Uniform Incremental Grids on SO(3) Using the Hopf Fibration" ](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2896220) . _The International Journal of Robotics Research_ . **29** (7). Section 8 – Derivation of Hopf parametrisation. [ doi ](/wiki/Doi_\(identifier\) "Doi \(identifier\)") : [ 10.1177/0278364909352700 ](https://doi.org/10.1177%2F0278364909352700) . [ PMC ](/wiki/PMC_\(identifier\) "PMC \(identifier\)") [ 2896220 ](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2896220) . [ PMID ](/wiki/PMID_\(identifier\) "PMID \(identifier\)") [ 20607113 ](https://pubmed.ncbi.nlm.nih.gov/20607113) .
  6. ** ^  ** (in Italian)  [ A generalization of Euler Angles to _n_ -dimensional real spaces ](http://ansi.altervista.org)
  7. ** ^  ** The relation between the Euler angles and the Cardan suspension is explained in chap. 11.7 of the following textbook: U. Krey, A. Owen, _Basic Theoretical Physics – A Concise Overview_ , New York, London, Berlin, Heidelberg, Springer (2007) .
  8. ** ^  ** Liss KD, Bartels A, Schreyer A, Clemens H (2003). [ "High energy X-rays: A tool for advanced bulk investigations in materials science and physics" ](https://doi.org/10.1080%2F07303300310001634952) . _Textures Microstruct_ . **35** (3/4): 219–52. [ doi ](/wiki/Doi_\(identifier\) "Doi \(identifier\)") :  [ 10.1080/07303300310001634952 ](https://doi.org/10.1080%2F07303300310001634952) .
  9. ** ^  ** Kocks, U.F.; Tomé, C.N.; Wenk, H.-R. (2000), _Texture and Anisotropy: Preferred Orientations in Polycrystals and their effect on Materials Properties_ , [ Cambridge ](/wiki/Cambridge_University_Press "Cambridge University Press") , [ ISBN ](/wiki/ISBN_\(identifier\) "ISBN \(identifier\)") [ 978-0-521-79420-6  ](/wiki/Special:BookSources/978-0-521-79420-6 "Special:BookSources/978-0-521-79420-6")
  10. ** ^  ** Bunge, H. (1993), _Texture Analysis in Materials Science: Mathematical Methods_ , [ Cuvillier Verlag ](/wiki/Cuvillier_Verlag "Cuvillier Verlag") , [ ASIN ](/wiki/ASIN_\(identifier\) "ASIN \(identifier\)") [ B0014XV9HU ](https://www.amazon.com/dp/B0014XV9HU)


[ Nation  ](https://www.robot-forum.com/user/2400-nation/)


  Higher dimensions  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=21 "Edit section: Higher
dimensions") ]

It is possible to define parameters analogous to the Euler angles in
dimensions higher than three.  [6]  [ _[ unreliable source?
](/wiki/Wikipedia:Reliable_sources "Wikipedia:Reliable sources") _ ]  In four
dimensions and above, the concept of "rotation about an axis" loses meaning
and instead becomes "rotation in a plane." The number of Euler angles needed
to represent the group  SO( _n_ )  is  _n_ ( _n_ − 1)/2  , equal to the number
of planes containing two distinct coordinate axes in _n_ -dimensional
Euclidean space.

In [ SO(4) ](/wiki/SO\(4\) "SO\(4\)") a rotation matrix [ is defined by two
unit quaternions ](/wiki/Rotation_\(mathematics\)


     103
Trophies


#  Fanuc robot rotations and positioning


  Properties  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=19 "Edit section:
Properties") ]

See also: [ Charts on SO(3) ](/wiki/Charts_on_SO\(3\) "Charts on SO\(3\)") and
[ Quaternions and spatial rotation ](/wiki/Quaternions_and_spatial_rotation
"Quaternions and spatial rotation")

The Euler angles form a [ chart ](/wiki/Chart_\(topology\) "Chart
\(topology\)") on all of [ SO(3) ](/wiki/SO\(3\) "SO\(3\)") , the [ special
orthogonal group ](/wiki/Special_orthogonal_group "Special orthogonal group")
of rotations in 3D space. The chart is smooth except for a polar coordinate
style singularity along  _β_ = 0  . See [ charts on SO(3)
](/wiki/Charts_on_SO\(3\) "Charts on SO\(3\)") for a more complete treatment.

The space of rotations is called in general "The [ Hypersphere of rotations
](/wiki/Quaternions_and_spatial_rotation


discussion employing Euler angles should always be preceded by their
definition.

Without considering the possibility of using two different conventions for the
definition of the rotation axes (intrinsic or extrinsic), there exist twelve
possible sequences of rotation axes, divided in two groups:

  * **Proper Euler angles** ( _z_ \- _x_ \- _z_ , _x_ \- _y_ \- _x_ , _y_ \- _z_ \- _y_ , _z_ \- _y_ \- _z_ , _x_ \- _z_ \- _x_ , _y_ \- _x_ \- _y_ )
  * **Tait–Bryan angles** ( _x_ \- _y_ \- _z_ , _y_ \- _z_ \- _x_ , _z_ \- _x_ \- _y_ , _x_ \- _z_ \- _y_ , _z_ \- _y_ \- _x_ , _y_ \- _x_ \- _z_ )  .

Tait–Bryan angles are also called **Cardan angles** ; **nautical angles** ;
**[ heading ](/wiki/Heading_\(navigation\) "Heading \(navigation\)") ,
elevation, and bank ** ; or **yaw, pitch, and roll** . Sometimes, both kinds
of sequences are called "Euler angles". In that case, the sequences of the
first group are called _proper_ or _classic_ Euler angles.


  Tait–Bryan angles  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=15 "Edit section:
Tait–Bryan angles") ]

[ ![](//upload.wikimedia.org/wikipedia/en/thumb/6/63/Projections_of_Tait-
Bryan_angles.svg/220px-Projections_of_Tait-Bryan_angles.svg.png)
](/wiki/File:Projections_of_Tait-Bryan_angles.svg) Projections of _x_ -axis
after three Tait–Bryan rotations. Notice that theta is a negative rotation
around the axis _y_ ′.

Assuming a frame with [ unit vectors ](/wiki/Unit_vector "Unit vector") ( _X_
, _Y_ , _Z_ ) given by their coordinates as in this new diagram (notice that
the angle theta is negative), it can be seen that:

     sin    (  θ  )  =  −  X  3  {\displaystyle \sin(\theta )=-X_{3}}  ![{\\displaystyle \\sin\(\\theta \)=-X_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/86eab6b93a2865529b69bbd706e70b7eb7304075)

As before,

     cos  2    x  =  1  −  sin  2    x  ,  {\displaystyle \cos ^{2}x=1-\sin ^{2}x,}  ![{\\displaystyle \\cos ^{2}x=1-\\sin ^{2}x,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a8d18eeb7f30a54294c80f7c70b4ff6def5e6bd2)

for  −  π  /  2  < x  < π  /  2  {\displaystyle -\pi /2<x<\pi /2}
![{\\displaystyle -\\pi /2<x<\\pi
/2}](https://wikimedia.org/api/rest_v1/media/math/render/svg/244b2a56dbd0cdd7c5f1b8a3b8edbf35a65014de)
we have

     cos    (  θ  )  =  1  −  X  3  2  .  {\displaystyle \cos(\theta )={\sqrt {1-X_{3}^{2}}}.}  ![{\\displaystyle \\cos\(\\theta \)={\\sqrt {1-X_{3}^{2}}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5ea2724ee1591c065ffc4c730d1604258833d9a6)

in a way analogous to the former one:

     sin    (  ψ  )  =  X  2  /  1  −  X  3  2  .  {\displaystyle \sin(\psi )=X_{2}/{\sqrt {1-X_{3}^{2}}}.}  ![{\\displaystyle \\sin\(\\psi \)=X_{2}/{\\sqrt {1-X_{3}^{2}}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8c32bd1fe57a4589f69f0686e6a2d6f71c68b592)
     sin    (  ϕ  )  =  Y  3  /  1  −  X  3  2  .  {\displaystyle \sin(\phi )=Y_{3}/{\sqrt {1-X_{3}^{2}}}.}  ![{\\displaystyle \\sin\(\\phi \)=Y_{3}/{\\sqrt {1-X_{3}^{2}}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7ece673a48a719f004c7a781fc0437e79359dfa5)

Looking for similar expressions to the former ones:

     ψ  =  arcsin    (  X  2  /  1  −  X  3  2  )  ,  {\displaystyle \psi =\arcsin \left(X_{2}/{\sqrt {1-X_{3}^{2}}}\right),}  ![{\\displaystyle \\psi =\\arcsin \\left\(X_{2}/{\\sqrt {1-X_{3}^{2}}}\\right\),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3c6bdef5ca26321cad2bd85844576d1f5d84d647)
     θ  =  arcsin    (  −  X  3  )  ,  {\displaystyle \theta =\arcsin(-X_{3}),}  ![{\\displaystyle \\theta =\\arcsin\(-X_{3}\),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/58a57cf48781e573e8c32d1f14305d474c3b1f50)
     ϕ  =  arcsin    (  Y  3  /  1  −  X  3  2  )  .  {\displaystyle \phi =\arcsin \left(Y_{3}/{\sqrt {1-X_{3}^{2}}}\right).}  ![{\\displaystyle \\phi =\\arcsin \\left\(Y_{3}/{\\sqrt {1-X_{3}^{2}}}\\right\).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a987af5d5959b746e998409c5110715fbd992f29)


b→e

(94)
=v
[Σw]
a + ω
[Σw]
a × p
[Σw]
a→e + ω
[Σw]
b × p
[Σw]
b→e
(95)
=v
[Σw]
a + ω
[Σw]
a ×

p
[Σw]
e − p
[Σw]
a

+ ω
[Σw]
b ×

p
[Σw]
e − p
[Σw]
b

. (96)
5.2.3 Multi-Link Robot Angular Velocity
Meanwhile, for the angular velocity of the end point, since the end point e is attached to the


[ ![Advertise in robotics](https://www.robot-
forum.com/eaImages/banner-103.gif?t=1705996185) ](https://www.robot-
forum.com/shop/category/61-bronze-level-sponsoring/)


Trophies


[ ![Advertise in robotics](https://www.robot-
forum.com/eaImages/banner-103.gif) ](https://www.robot-
forum.com/shop/category/61-bronze-level-sponsoring/)


Privacy


[ Manipulators  ](/tag/manipulators?source=post_page-----4f40883fbaef
---------------manipulators-----------------)


Visit our Mainsponsor


In_four_dimensions "Rotation
\(mathematics\)") , and therefore has six degrees of freedom, three from each
quaternion.


When you get close to this orientation your angles can get wacky and you will
loose 1 rotation axis. Fanuc solves this by changing all rotation angles to
"approach" from a different direction. The solution happens automatically when
jogging, but if you programmatically change the w,p,r angles you may not get
what you want.


Ambiguities "Rotation matrix") ). Unfortunately,
different sets of conventions are adopted by users in different contexts. The
following table was built according to this set of conventions:

  1. Each matrix is meant to operate by pre-multiplying [ column vectors ](/wiki/Column_vector "Column vector") [  x  y  z  ]  {\textstyle {\begin{bmatrix}x\\\y\\\z\end{bmatrix}}}  ![{\\textstyle {\\begin{bmatrix}x\\\\y\\\\z\\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/177f3d76237b10928319aef9808384464b2d9f16) (see [ Ambiguities in the definition of rotation matrices ](/wiki/Rotation_matrix


Edited once, last by robotero (  Feb 27th 2018  ).


  Conversion to other orientation representations  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=17 "Edit section:
Conversion to other orientation representations") ]

Main article: [ Rotation formalisms in three dimensions § Conversion formulae
between formalisms
](/wiki/Rotation_formalisms_in_three_dimensions


Once the link frames have been established, the position and orientation of
Frame i with respect to Frame i − 1 are completely speciﬁed by the parameters:
𝜽, 𝜶, **r** and **d, known as DH parameters.** Let’s define these parameters
as well as other necessary parameters at once.


  1. [ Home  ](https://www.robot-forum.com/)
    1. [ Dashboard  ](https://www.robot-forum.com/)
    2. [ Search  ](https://www.robot-forum.com/search/)
  2. [ Forum  ](https://www.robot-forum.com/robotforum/)
    1. [ Unresolved Threads  ](https://www.robot-forum.com/robotforum/unresolved-thread-list/)
    2. [ Members  ](https://www.robot-forum.com/members-list/)
      1. [ Recent Activities  ](https://www.robot-forum.com/recent-activity-list/)
      2. [ Users Online  ](https://www.robot-forum.com/users-online-list/)
      3. [ Team Members  ](https://www.robot-forum.com/team/)
      4. [ Search Members  ](https://www.robot-forum.com/user-search/)
      5. [ Trophys  ](https://www.robot-forum.com/trophy-list/33-activity/)
  3. [ Articles  ](https://www.robot-forum.com/article-list/)
  4. [ Blog  ](https://www.robot-forum.com/blog/)
  5. [ Videos  ](https://www.robot-forum.com/category-article-list/59-videos/)
  6. [ Jobs  ](https://www.robot-forum.com/robotforum/board/55-job-postings/)
  7. [ Shop  ](https://www.robot-forum.com/shop/)
    1. [ Orders  ](https://www.robot-forum.com/shop/order-list/)


     2
[ Posts ](https://www.robot-forum.com/robotforum/user-post-list/85517-satja/
"Posts by Satja")


\- I believe the order of rotation used by Fanuc is W , P , R = Yaw , Pitch ,
Roll = first rotate around the x axis by W degrees, then around the y axis by
P degrees and finally rotate around the z axis by R degrees.
Is this right? (note: the above question is now important to decide which x, y
and z axes are used....).


Help


Robotforum - Support and discussion community for industrial robots and cobots
in the WSC-Connect App on the App Store


    * [ ](https://www.robot-forum.com/trophy/64-popular-member/)
    * [ ](https://www.robot-forum.com/trophy/70-5th-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/77-writer/)


  Classic Euler angles  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=2 "Edit section: Classic
Euler angles") ]

[
![](//upload.wikimedia.org/wikipedia/commons/thumb/7/72/Gimbaleuler.svg/180px-
Gimbaleuler.svg.png) ](/wiki/File:Gimbaleuler.svg)

[
![](//upload.wikimedia.org/wikipedia/commons/thumb/3/34/Gimbaleuler2.svg/160px-
Gimbaleuler2.svg.png) ](/wiki/File:Gimbaleuler2.svg)

**Left:** A [ gimbal ](/wiki/Gimbal "Gimbal") set, showing a _z_ \- _x_ \- _z_
rotation sequence. External frame shown in the base. Internal axes in red
color. **Right:** A simple diagram showing similar Euler angles.


[ ![Robotics Channel](https://www.robot-forum.com/eaImages/banner-101.gif)
](https://www.youtube.com/channel/UCdXFxEztFI8N1B-Ip3nTOsw?sub_confirmation=1)


     3
[ Posts ](https://www.robot-forum.com/robotforum/user-post-
list/84217-robotero/ "Posts by robotero")


[ ![Robotics Training](https://www.robot-
forum.com/eaImages/banner-102.gif?t=1705996185) ](https://www.robtec.de/robot-
trainings-in-person/)


    * [ ](https://www.robot-forum.com/trophy/65-very-popular-member/)
    * [ ](https://www.robot-forum.com/trophy/66-loved-member/)
    * [ ](https://www.robot-forum.com/trophy/70-5th-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/75-awesome-writer/)


](https://medium.statuspage.io/?source=post_page-----
4f40883fbaef--------------------------------)


a

R[Σa→Σw]R[Σb→Σa]
 R[Σb→Σw]
>
(101)
+ R[Σa→Σw]ωb
[Σa]
b R[Σb→Σa]

R[Σa→Σw]R[Σb→Σa]
>
(102)
=ωb
[Σw]
a + R[Σa→Σw]ωb
[Σa]
b R[Σb→Σa]

R[Σb→Σa]
>
R[Σa→Σw]
>
(103)
=ωb
[Σw]
a + R[Σa→Σw]ωb
[Σa]
b

R[Σa→Σw]
>
(104)
=ωb
[Σw]
a +

R[Σa→Σw]ω
[Σa]
b


[ ](https://www.robot-forum.com/login/?url=https%3A%2F%2Fwww.robot-
forum.com%2Frobotforum%2Fthread%2F25960-fanuc-robot-rotations-and-
positioning%2F "Login or register")


The DH parameters are expressed in the table below:


     8
[ Posts ](https://www.robot-forum.com/robotforum/user-post-list/57811-hawkme/
"Posts by HawkME")


This homogeneous matrix provides rotation matrix as well as displacement
vector of end-effector w.r.t. base frame. The upper 3 x 3 matrix is rotation
matrix and the first three elements of the fourth column provides the
displacement vector.


Robotforum - Support and discussion community for industrial robots and cobots
in the WSC-Connect App on Google Play


A 4-DOF Robotic Manipulator


{\begin{aligned}\alpha &=\arctan \left({\frac
{R_{23}}{R_{13}}}\right)\\\\\beta &=\arctan \left({\frac {\sqrt
{1-R_{33}^{2}}}{R_{33}}}\right)\\\\\gamma &=\arctan \left({\frac
{R_{32}}{-R_{31}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac
{R_{23}}{R_{13}}}\\right\)\\\\\\beta &=\\arctan \\left\({\\frac {\\sqrt
{1-R_{33}^{2}}}{R_{33}}}\\right\)\\\\\\gamma &=\\arctan \\left\({\\frac
{R_{32}}{-R_{31}}}\\right\)\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3064add5d6e4052484af05d2668119b3db2d05c1)
|  Z  1  Y  2  X  3  {\displaystyle Z_{1}Y_{2}X_{3}}  ![{\\displaystyle
Z_{1}Y_{2}X_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6b2027fdaa07545cb39440c1b7d0e1bee117b833)
|  α  =  arctan    (  R  21  R  11  )  β  =  arcsin    (  −  R  31  )  γ  =
arctan    (  R  32  R  33  )  {\displaystyle {\begin{aligned}\alpha &=\arctan
\left({\frac {R_{21}}{R_{11}}}\right)\\\\\beta &=\arcsin
\left(-R_{31}\right)\\\\\gamma &=\arctan \left({\frac
{R_{32}}{R_{33}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac
{R_{21}}{R_{11}}}\\right\)\\\\\\beta &=\\arcsin
\\left\(-R_{31}\\right\)\\\\\\gamma &=\\arctan \\left\({\\frac
{R_{32}}{R_{33}}}\\right\)\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/64f454cf0385512bc097cf0446253cbcc215a5ca)
Z  1  X  2  Z  3  {\displaystyle Z_{1}X_{2}Z_{3}}  ![{\\displaystyle
Z_{1}X_{2}Z_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/44c9522bee2a62caf2365b820b7ecb41bef0f5a4)
|  α  =  arctan    (  R  13  −  R  23  )  β  =  arccos    (  R  33  )  γ  =
arctan    (  R  31  R  32  )  {\displaystyle {\begin{aligned}\alpha &=\arctan
\left({\frac {R_{13}}{-R_{23}}}\right)\\\\\beta &=\arccos
\left(R_{33}\right)\\\\\gamma &=\arctan \left({\frac
{R_{31}}{R_{32}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac
{R_{13}}{-R_{23}}}\\right\)\\\\\\beta &=\\arccos
\\left\(R_{33}\\right\)\\\\\\gamma &=\\arctan \\left\({\\frac
{R_{31}}{R_{32}}}\\right\)\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/eb267cdf68a705d1e9906b03641f6b858611b18d)
|  Z  1  X  2  Y  3  {\displaystyle Z_{1}X_{2}Y_{3}}  ![{\\displaystyle
Z_{1}X_{2}Y_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/594724baacd982fcdb1ef2b4e382100d4f5ab9d4)
|  α  =  arctan    (  −  R  12  R  22  )  β  =  arcsin    (  R  32  )  γ  =
arctan    (  −  R  31  R  33  )  {\displaystyle {\begin{aligned}\alpha
&=\arctan \left({\frac {-R_{12}}{R_{22}}}\right)\\\\\beta &=\arcsin
\left(R_{32}\right)\\\\\gamma &=\arctan \left({\frac
{-R_{31}}{R_{33}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac
{-R_{12}}{R_{22}}}\\right\)\\\\\\beta &=\\arcsin
\\left\(R_{32}\\right\)\\\\\\gamma &=\\arctan \\left\({\\frac


* [ #9 ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=140777#post140777 "Share")


](https://policy.medium.com/medium-terms-of-
service-9db0094a1e0f?source=post_page-----
4f40883fbaef--------------------------------)


Newbie LVL 1


[ ![Advertise in Robotics](https://www.robot-
forum.com/eaImages/banner-109.gif?t=1705996186) ](https://www.robot-
forum.com/shop/category/61-bronze-level-sponsoring/)


lead to the rotation matrix representation in Equation 9.
With the roll-pitch-yaw rotation matrix Rrpy(φ, θ, ψ) defined above, arbitrary rotation
can be achieved by the rotation angle pair (φ, θ, ψ) around the x, y and z axes, respectively.
4.2 Rotation Matrix Property
Theorem 8 Given a rotation matrix R, it will be orthogonal, i.e.,
RR> = I. (28)
16
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
Proof When deriving the rotation matrix in Equation 9, we mention that the rotation
matrix can be represented as a group of unit vectors corresponding to the x, y and z axes.
For instance, the rotation matrix along the x axis in the counter-clockwise direction with
an angle of φ degrees can be represented as
Rx(φ) =


1 0 0
0 cos φ − sin φ
0 sin φ cos φ

 = (ex, ey, ez). (29)
We can observe that the product of Rx(φ)
>Rx(φ) will lead to an identity matrix, since
Rx(φ)
>Rx(φ) =


e
>
x
e
>
y
e
>
z

 (ex, ey, ez) (30)
=




  Conventions by extrinsic rotations  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=5 "Edit section:
Conventions by extrinsic rotations") ]

Extrinsic rotations are elemental rotations that occur about the axes of the
fixed coordinate system _xyz_ . The _XYZ_ system rotates, while _xyz_ is
fixed. Starting with _XYZ_ overlapping _xyz_ , a composition of three
extrinsic rotations can be used to reach any target orientation for _XYZ_ .
The Euler or Tait–Bryan angles ( _α_ , _β_ , _γ_ ) are the amplitudes of these
elemental rotations. For instance, the target orientation can be reached as
follows (note the reversed order of Euler angle application):

  * The _XYZ_ system rotates about the _z_ axis by _γ_ . The _X_ axis is now at angle _γ_ with respect to the _x_ axis.
  * The _XYZ_ system rotates again, but this time about the _x_ axis by _β_ . The _Z_ axis is now at angle _β_ with respect to the _z_ axis.
  * The _XYZ_ system rotates a third time, about the _z_ axis again, by angle _α_ .

In sum, the three elemental rotations occur about _z_ , _x_ and _z_ . Indeed,
this sequence is often denoted _z_ \- _x_ \- _z_ (or 3-1-3). Sets of rotation
axes associated with both proper Euler angles and Tait–Bryan angles are
commonly named using this notation (see above for details).

If each step of the rotation acts on the rotating coordinate system XYZ, the
rotation is intrinsic ( _Z-X'-Z''_ ). _Intrinsic_ rotation can also be denoted
3-1-3.


[ 2 Followers ](/@bikashojha904/followers?source=post_page-----
4f40883fbaef--------------------------------)


Frame assignment on 4DOF robotic manipulator


* [ #4 ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=110582#post110582 "Share")


[ Reactions Received ](https://www.robot-forum.com/user/2400-nation/#likes
"Reactions Received by Nation")


3.2.1 Multi-Link Robots with Local to Local Coordinate Systems . . . . . 12
3.2.2 Chain Rule on Homogeneous Transformation . . . . . . . . . . . . . 13
4 Robot Rotation 14
4.1 General Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1.1 Rotation Axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1.2 Rotation Matrices for Roll, Pitch and Yaw . . . . . . . . . . . . . . . 15
4.2 Rotation Matrix Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3 Angular Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3.1 Angular Velocity Vector . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3.2 Linear Velocity Vector . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3.3 Rotation Transformation on Velocity Vectors . . . . . . . . . . . . . 20
4.3.4 Rotation Matrix and Angular Velocity Vector . . . . . . . . . . . . . 20
4.4 Rotation Matrix Exponential and Logarithm . . . . . . . . . . . . . . . . . 22
4.4.1 Rotation Matrix Exponential . . . . . . . . . . . . . . . . . . . . . . 22
4.4.2 Rotation Matrix Logarithm . . . . . . . . . . . . . . . . . . . . . . . 23
5 Robot End Point Velocity 24
5.1 Single-Link Robot End Point Linear Velocity . . . . . . . . . . . . . . . . . 24
5.2 Multi-Link Robot End Point Velocity . . . . . . . . . . . . . . . . . . . . . 25
5.2.1 Multi-Link Robot Homogeneous Transition Matrix . . . . . . . . . . 26
5.2.2 Multi-Link Robot Linear Velocity . . . . . . . . . . . . . . . . . . . . 26
5.2.3 Multi-Link Robot Angular Velocity . . . . . . . . . . . . . . . . . . . 27
5.3 A General Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6 What’s Next? 28
1. Introduction
According to the forecast report from UN (United Nations) [3], the world population aging
will become one of the most challenging global problem of the 21st century. The working
age population growth of the major developing countries (e.g., China, India) will gradually
slow down and even start to decrease together with the major developed countries (e.g.,
UK, France, Germany, Japan and USA). To fulfill the “tremendous gap” between the supply
and demand of working labor forces, various robots and automated machines has been (and
will continue to be) developed and employed for massive production work globally. This is
an irreversible trend for the 21st century. To accomplish such an objective, educating and
training researchers and practitioner on robotics is imperative and critical at present.
1.1 This Article
In this tutorial article, we will provide a brief introduction about robotics for readers, which
covers robot representation, robot motion, coordinate transformation and velocity transformation in the rotational motions. This tutorial article will also be organized according to
the sequential order these topics. Some more advanced topics about robot kinematics, trajectory generation, robot control, motion planning and manipulation and applications will
2
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
be introduced in the follow-up tutorial articles instead. Besides these tutorial articles, for


[ ![Rituram
Ojha](https://miro.medium.com/v2/resize:fill:88:88/1*6I2G0GzipVSQbnrEDL2r4Q.jpeg)
](/@bikashojha904?source=post_page-----
4f40883fbaef--------------------------------)


    * [ ](https://www.robot-forum.com/trophy/70-5th-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/72-3rd-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/73-helping-hand/)


Jump to content

Main menu

Main menu

move to sidebar  hide

Navigation

  * [ Main page  ](/wiki/Main_Page "Visit the main page \[z\]")
  * [ Contents  ](/wiki/Wikipedia:Contents "Guides to browsing Wikipedia")
  * [ Current events  ](/wiki/Portal:Current_events "Articles related to current events")
  * [ Random article  ](/wiki/Special:Random "Visit a randomly selected article \[x\]")
  * [ About Wikipedia  ](/wiki/Wikipedia:About "Learn about Wikipedia and how it works")
  * [ Contact us  ](//en.wikipedia.org/wiki/Wikipedia:Contact_us "How to contact Wikipedia")
  * [ Donate  ](https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en "Support us by donating to the Wikimedia Foundation")

Contribute

  * [ Help  ](/wiki/Help:Contents "Guidance on how to use and edit Wikipedia")
  * [ Learn to edit  ](/wiki/Help:Introduction "Learn how to edit Wikipedia")
  * [ Community portal  ](/wiki/Wikipedia:Community_portal "The hub for editors")
  * [ Recent changes  ](/wiki/Special:RecentChanges "A list of recent changes to Wikipedia \[r\]")
  * [ Upload file  ](/wiki/Wikipedia:File_upload_wizard "Add images or other media for use on Wikipedia")

[ ![](/static/images/icons/wikipedia.png)
![Wikipedia](/static/images/mobile/copyright/wikipedia-wordmark-en.svg) ![The
Free Encyclopedia](/static/images/mobile/copyright/wikipedia-tagline-en.svg)
](/wiki/Main_Page)

[ Search  ](/wiki/Special:Search "Search Wikipedia \[f\]")

Search

  * [ Create account  ](/w/index.php?title=Special:CreateAccount&returnto=Euler+angles "You are encouraged to create an account and log in; however, it is not mandatory")
  * [ Log in  ](/w/index.php?title=Special:UserLogin&returnto=Euler+angles "You're encouraged to log in; however, it's not mandatory. \[o\]")

Personal tools


  Precession, nutation and intrinsic rotation  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=7 "Edit section:
Precession, nutation and intrinsic rotation") ]

[
![](//upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Praezession.svg/170px-
Praezession.svg.png) ](/wiki/File:Praezession.svg) Euler basic motions of the
Earth. Intrinsic (green), Precession (blue) and Nutation (red)

[ Precession ](/wiki/Precession "Precession") , [ nutation ](/wiki/Nutation
"Nutation") , and [ intrinsic rotation ](/wiki/Rotation "Rotation") (spin) are
defined as the movements obtained by changing one of the Euler angles while
leaving the other two constant. These motions are not expressed in terms of
the external frame, or in terms of the co-moving rotated body frame, but in a
mixture. They constitute a **mixed axes of rotation** system, where the first
angle moves the line of nodes around the external axis _z_ , the second
rotates around the line of nodes _N_ and the third one is an intrinsic
rotation around _Z_ , an axis fixed in the body that moves.

The static definition implies that:

  * _α_ (precession) represents a rotation around the _z_ axis,
  * _β_ (nutation) represents a rotation around the _N_ or x′ axis,
  * _γ_ (intrinsic rotation) represents a rotation around the _Z_ or z″ axis.

If _β_ is zero, there is no rotation about _N_ . As a consequence, _Z_
coincides with _z_ , _α_ and _γ_ represent rotations about the same axis ( _z_
), and the final orientation can be obtained with a single rotation about _z_
, by an angle equal to  _α_ \+ _γ_ .

As an example, consider a [ top ](/wiki/Top "Top") . The top spins around its
own axis of symmetry; this corresponds to its intrinsic rotation. It also
rotates around its pivotal axis, with its center of mass orbiting the pivotal
axis; this rotation is a precession. Finally, the top can wobble up and down;
the inclination angle is the nutation angle. The same example can be seen with
the movements of the earth.

Though all three movements can be represented by a rotation operator with
constant coefficients in some frame, they cannot be represented by these
operators all at the same time. Given a reference frame, at most one of them


  See also  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=26 "Edit section: See
also") ]

  * [ 3D projection ](/wiki/3D_projection "3D projection")
  * [ Axis-angle representation ](/wiki/Axis-angle_representation "Axis-angle representation")
  * [ Conversion between quaternions and Euler angles ](/wiki/Conversion_between_quaternions_and_Euler_angles "Conversion between quaternions and Euler angles")
  * [ Davenport chained rotations ](/wiki/Davenport_chained_rotations "Davenport chained rotations")
  * [ Euler's rotation theorem ](/wiki/Euler%27s_rotation_theorem "Euler's rotation theorem")
  * [ Gimbal lock ](/wiki/Gimbal_lock "Gimbal lock")
  * [ Quaternion ](/wiki/Quaternion "Quaternion")
  * [ Quaternions and spatial rotation ](/wiki/Quaternions_and_spatial_rotation "Quaternions and spatial rotation")
  * [ Rotation formalisms in three dimensions ](/wiki/Rotation_formalisms_in_three_dimensions "Rotation formalisms in three dimensions")
  * [ Spherical coordinate system ](/wiki/Spherical_coordinate_system "Spherical coordinate system")


IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
Robot Basics: Representation, Rotation and Velocity
Jiawei Zhang jiawei@ifmlab.org
Founder and Director
Information Fusion and Mining Laboratory
(First Version: October 2022; Revision: November 2022.)
Abstract
In this article, we plan to provide an introduction about some basics about robots for
readers. Several key topics of classic robotics will be introduced, including robot representation, robot rotational motion, coordinates transformation and velocity transformation. By
now, classic rigid-body robot analysis is still the main-stream approach in robot controlling
and motion planning. In this article, no data-driven or machine learning based methods
will be introduced. Most of the materials covered in this article are based on the rigid-body
kinematics that the readers probably have learned from the physics course at high-school
or college. Meanwhile, these classic robot kinematics analyses will serve as the foundation
for the latest intelligent robot control algorithms in modern robotics studies.
Keywords: Robotics; Robot Representation; Robot Configuration; Coordinate System;
Rotational Motion; Linear Velocity; Angular Velocity
Contents
1 Introduction 2
1.1 This Article . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Basic Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Robot Representation 3
2.1 Robot Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Robot Physical Structure . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.3 Notation Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Robot Configuration and Configuration Space . . . . . . . . . . . . . . . . . 6
2.2.1 Robot Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.2 Robot Configuration Space . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Robot Coordinate System and Representation . . . . . . . . . . . . . . . . . 7
2.3.1 World Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 Local Coordinate Systems . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Robot End Point Position 10
3.1 Single-Link Robot End Point Position . . . . . . . . . . . . . . . . . . . . . 10
3.1.1 Rotation Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.2 Homogeneous Transformation Matrix . . . . . . . . . . . . . . . . . 11
3.2 Multi-Link Robot End Point Position . . . . . . . . . . . . . . . . . . . . . 12
1
arXiv:2211.02786v2 [cs.RO] 30 Nov 2022
JIAWEI ZHANG, IFM LAB DIRECTOR


3
JIAWEI ZHANG, IFM LAB DIRECTOR
Joint
Link
Trunk
Another robot structure
Figure 1: A Example of Rigid-Body Robot Structure (involving the trunk, joints and links).
Body
Right-Arm Left-Arm Right-Leg Left-Leg
Right-Hand Left-Hand Right-Foot Left-Foot
Body
Right-Arm None
Right-Hand Left-Arm
Left-Hand Right-Leg
Right-Foot Left-Leg
Left-Foot None
None None
None None
None None
None None
(parent)
(1st child)
(2nd child)
(3rd child)
(4th child)
(1st grand child)
(2nd grand child)
(3rd grand child)
(4th grand child)
ID Name Child Sister
1 Body 2 None
2 Right-Arm 3 4
3 Right-Hand None None
4 Left-Arm 5 6
5 Left-Hand None None
6 Right-Leg 7 8
7 Right-Foot None None
8 Left-Leg 9 None
9 Left-Foot None None
Plot (a)


](/wiki/Wikipedia:Citation_needed "Wikipedia:Citation needed") _ ]

Computer graphics libraries like [ three.js ](/wiki/Three.js "Three.js") use
them to point the camera


3  \+  c  2  c  3  s  1  s  2  s  3  c  2  −  c  3  s  2  −  c  3  s  1  −  c
1  c  2  s  3  c  1  s  2  c  1  c  2  c  3  −  s  1  s  3  ]  {\displaystyle
Y_{1}X_{2}Y_{3}={\begin{bmatrix}c_{1}c_{3}-c_{2}s_{1}s_{3}&s_{1}s_{2}&c_{1}s_{3}+c_{2}c_{3}s_{1}\\\s_{2}s_{3}&c_{2}&-c_{3}s_{2}\\\\-c_{3}s_{1}-c_{1}c_{2}s_{3}&c_{1}s_{2}&c_{1}c_{2}c_{3}-s_{1}s_{3}\end{bmatrix}}}
![{\\displaystyle
Y_{1}X_{2}Y_{3}={\\begin{bmatrix}c_{1}c_{3}-c_{2}s_{1}s_{3}&s_{1}s_{2}&c_{1}s_{3}+c_{2}c_{3}s_{1}\\\\s_{2}s_{3}&c_{2}&-c_{3}s_{2}\\\\-c_{3}s_{1}-c_{1}c_{2}s_{3}&c_{1}s_{2}&c_{1}c_{2}c_{3}-s_{1}s_{3}\\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c36e63d05a8166d8162ee9e29dd60fa4e40468de)
|  Y  1  X  2  Z  3  =  [  c  1  c  3  \+  s  1  s  2  s  3  c  3  s  1  s  2
−  c  1  s  3  c  2  s  1  c  2  s  3  c  2  c  3  −  s  2  c  1  s  2  s  3
−  c  3  s  1  c  1  c  3  s  2  \+  s  1  s  3  c  1  c  2  ]  {\displaystyle
Y_{1}X_{2}Z_{3}={\begin{bmatrix}c_{1}c_{3}+s_{1}s_{2}s_{3}&c_{3}s_{1}s_{2}-c_{1}s_{3}&c_{2}s_{1}\\\c_{2}s_{3}&c_{2}c_{3}&-s_{2}\\\c_{1}s_{2}s_{3}-c_{3}s_{1}&c_{1}c_{3}s_{2}+s_{1}s_{3}&c_{1}c_{2}\end{bmatrix}}}
![{\\displaystyle
Y_{1}X_{2}Z_{3}={\\begin{bmatrix}c_{1}c_{3}+s_{1}s_{2}s_{3}&c_{3}s_{1}s_{2}-c_{1}s_{3}&c_{2}s_{1}\\\\c_{2}s_{3}&c_{2}c_{3}&-s_{2}\\\\c_{1}s_{2}s_{3}-c_{3}s_{1}&c_{1}c_{3}s_{2}+s_{1}s_{3}&c_{1}c_{2}\\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/315bca69e4cbda3218014b5a9b4878aa89231064)
Y  1  Z  2  Y  3  =  [  c  1  c  2  c  3  −  s  1  s  3  −  c  1  s  2  c  3
s  1  \+  c  1  c  2  s  3  c  3  s  2  c  2  s  2  s  3  −  c  1  s  3  −  c
2  c  3  s  1  s  1  s  2  c  1  c  3  −  c  2  s  1  s  3  ]  {\displaystyle
Y_{1}Z_{2}Y_{3}={\begin{bmatrix}c_{1}c_{2}c_{3}-s_{1}s_{3}&-c_{1}s_{2}&c_{3}s_{1}+c_{1}c_{2}s_{3}\\\c_{3}s_{2}&c_{2}&s_{2}s_{3}\\\\-c_{1}s_{3}-c_{2}c_{3}s_{1}&s_{1}s_{2}&c_{1}c_{3}-c_{2}s_{1}s_{3}\end{bmatrix}}}
![{\\displaystyle
Y_{1}Z_{2}Y_{3}={\\begin{bmatrix}c_{1}c_{2}c_{3}-s_{1}s_{3}&-c_{1}s_{2}&c_{3}s_{1}+c_{1}c_{2}s_{3}\\\\c_{3}s_{2}&c_{2}&s_{2}s_{3}\\\\-c_{1}s_{3}-c_{2}c_{3}s_{1}&s_{1}s_{2}&c_{1}c_{3}-c_{2}s_{1}s_{3}\\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/fd69086f396f6ef72eed8e95b333537b60b406c9)
|  Y  1  Z  2  X  3  =  [  c  1  c  2  s  1  s  3  −  c  1  c  3  s  2  c  3
s  1  \+  c  1  s  2  s  3  s  2  c  2  c  3  −  c  2  s  3  −  c  2  s  1  c
1  s  3  \+  c  3  s  1  s  2  c  1  c  3  −  s  1  s  2  s  3  ]
{\displaystyle
Y_{1}Z_{2}X_{3}={\begin{bmatrix}c_{1}c_{2}&s_{1}s_{3}-c_{1}c_{3}s_{2}&c_{3}s_{1}+c_{1}s_{2}s_{3}\\\s_{2}&c_{2}c_{3}&-c_{2}s_{3}\\\\-c_{2}s_{1}&c_{1}s_{3}+c_{3}s_{1}s_{2}&c_{1}c_{3}-s_{1}s_{2}s_{3}\end{bmatrix}}}
![{\\displaystyle
Y_{1}Z_{2}X_{3}={\\begin{bmatrix}c_{1}c_{2}&s_{1}s_{3}-c_{1}c_{3}s_{2}&c_{3}s_{1}+c_{1}s_{2}s_{3}\\\\s_{2}&c_{2}c_{3}&-c_{2}s_{3}\\\\-c_{2}s_{1}&c_{1}s_{3}+c_{3}s_{1}s_{2}&c_{1}c_{3}-s_{1}s_{2}s_{3}\\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ecef3eab0b5f54b66c7107f3ceeeb319a2e0e756)
Z  1  Y  2  Z  3  =  [  c  1  c  2  c  3  −  s  1  s  3  −  c  3  s  1  −  c
1  c  2  s  3  c  1  s  2  c  1  s  3  \+  c  2  c  3  s  1  c  1  c  3  −  c
2  s  1  s  3  s  1  s  2  −  c  3  s  2  s  2  s  3  c  2  ]  {\displaystyle
Z_{1}Y_{2}Z_{3}={\begin{bmatrix}c_{1}c_{2}c_{3}-s_{1}s_{3}&-c_{3}s_{1}-c_{1}c_{2}s_{3}&c_{1}s_{2}\\\c_{1}s_{3}+c_{2}c_{3}s_{1}&c_{1}c_{3}-c_{2}s_{1}s_{3}&s_{1}s_{2}\\\\-c_{3}s_{2}&s_{2}s_{3}&c_{2}\end{bmatrix}}}
![{\\displaystyle
Z_{1}Y_{2}Z_{3}={\\begin{bmatrix}c_{1}c_{2}c_{3}-s_{1}s_{3}&-c_{3}s_{1}-c_{1}c_{2}s_{3}&c_{1}s_{2}\\\\c_{1}s_{3}+c_{2}c_{3}s_{1}&c_{1}c_{3}-c_{2}s_{1}s_{3}&s_{1}s_{2}\\\\-c_{3}s_{2}&s_{2}s_{3}&c_{2}\\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/547e522037de6467d948ecf3f7409975fe849d07)
|  Z  1  Y  2  X  3  =  [  c  1  c  2  c  1  s  2  s  3  −  c  3  s  1  s  1
s  3  \+  c  1  c  3  s  2  c  2  s  1  c  1  c  3  \+  s  1  s  2  s  3  c  3
s  1  s  2  −  c  1  s  3  −  s  2  c  2  s  3  c  2  c  3  ]  {\displaystyle
Z_{1}Y_{2}X_{3}={\begin{bmatrix}c_{1}c_{2}&c_{1}s_{2}s_{3}-c_{3}s_{1}&s_{1}s_{3}+c_{1}c_{3}s_{2}\\\c_{2}s_{1}&c_{1}c_{3}+s_{1}s_{2}s_{3}&c_{3}s_{1}s_{2}-c_{1}s_{3}\\\\-s_{2}&c_{2}s_{3}&c_{2}c_{3}\end{bmatrix}}}
![{\\displaystyle
Z_{1}Y_{2}X_{3}={\\begin{bmatrix}c_{1}c_{2}&c_{1}s_{2}s_{3}-c_{3}s_{1}&s_{1}s_{3}+c_{1}c_{3}s_{2}\\\\c_{2}s_{1}&c_{1}c_{3}+s_{1}s_{2}s_{3}&c_{3}s_{1}s_{2}-c_{1}s_{3}\\\\-s_{2}&c_{2}s_{3}&c_{2}c_{3}\\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/45583b01e584306f30f616307c8e53c349705b12)
Z  1  X  2  Z  3  =  [  c  1  c  3  −  c  2  s  1  s  3  −  c  1  s  3  −  c
2  c  3  s  1  s  1  s  2  c  3  s  1  \+  c  1  c  2  s  3  c  1  c  2  c  3
−  s  1  s  3  −  c  1  s  2  s  2  s  3  c  3  s  2  c  2  ]  {\displaystyle
Z_{1}X_{2}Z_{3}={\begin{bmatrix}c_{1}c_{3}-c_{2}s_{1}s_{3}&-c_{1}s_{3}-c_{2}c_{3}s_{1}&s_{1}s_{2}\\\c_{3}s_{1}+c_{1}c_{2}s_{3}&c_{1}c_{2}c_{3}-s_{1}s_{3}&-c_{1}s_{2}\\\s_{2}s_{3}&c_{3}s_{2}&c_{2}\end{bmatrix}}}


  Applications  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=22 "Edit section:
Applications") ]


X_{1}Z_{2}Y_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6132b5a07bc489a7819a834290adf64bf968dc5b)
|  α  =  arctan    (  R  32  R  22  )  β  =  arcsin    (  −  R  12  )  γ  =
arctan    (  R  13  R  11  )  {\displaystyle {\begin{aligned}\alpha &=\arctan
\left({\frac {R_{32}}{R_{22}}}\right)\\\\\beta &=\arcsin
\left(-R_{12}\right)\\\\\gamma &=\arctan \left({\frac
{R_{13}}{R_{11}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac
{R_{32}}{R_{22}}}\\right\)\\\\\\beta &=\\arcsin
\\left\(-R_{12}\\right\)\\\\\\gamma &=\\arctan \\left\({\\frac
{R_{13}}{R_{11}}}\\right\)\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/057359d6c67e71b3471c0992774191a437a0fce4)
X  1  Y  2  X  3  {\displaystyle X_{1}Y_{2}X_{3}}  ![{\\displaystyle
X_{1}Y_{2}X_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b5aa1024dd01c7c205d18ce0f284933fefa34478)
|  α  =  arctan    (  R  21  −  R  31  )  β  =  arccos    (  R  11  )  γ  =
arctan    (  R  12  R  13  )  {\displaystyle {\begin{aligned}\alpha &=\arctan
\left({\frac {R_{21}}{-R_{31}}}\right)\\\\\beta &=\arccos
\left(R_{11}\right)\\\\\gamma &=\arctan \left({\frac
{R_{12}}{R_{13}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac
{R_{21}}{-R_{31}}}\\right\)\\\\\\beta &=\\arccos
\\left\(R_{11}\\right\)\\\\\\gamma &=\\arctan \\left\({\\frac
{R_{12}}{R_{13}}}\\right\)\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ad683b2f2cb437e91a87004f7122b3b9345b6376)
|  X  1  Y  2  Z  3  {\displaystyle X_{1}Y_{2}Z_{3}}  ![{\\displaystyle
X_{1}Y_{2}Z_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9f81275ed116f46f2713fe429098e850f4e7023e)
|  α  =  arctan    (  −  R  23  R  33  )  β  =  arcsin    (  R  13  )  γ  =
arctan    (  −  R  12  R  11  )  {\displaystyle {\begin{aligned}\alpha
&=\arctan \left({\frac {-R_{23}}{R_{33}}}\right)\\\\\beta &=\arcsin
\left(R_{13}\right)\\\\\gamma &=\arctan \left({\frac
{-R_{12}}{R_{11}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac
{-R_{23}}{R_{33}}}\\right\)\\\\\\beta &=\\arcsin
\\left\(R_{13}\\right\)\\\\\\gamma &=\\arctan \\left\({\\frac
{-R_{12}}{R_{11}}}\\right\)\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/20c6d5b555b92f381f5093a6fe2c0bcfb78cec7a)
Y  1  X  2  Y  3  {\displaystyle Y_{1}X_{2}Y_{3}}  ![{\\displaystyle
Y_{1}X_{2}Y_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3d4dc89572b6e56ab27d0aa8a9291c0f0c343cc8)
|  α  =  arctan    (  R  12  R  32  )  β  =  arccos    (  R  22  )  γ  =
arctan    (  R  21  −  R  23  )  {\displaystyle {\begin{aligned}\alpha
&=\arctan \left({\frac {R_{12}}{R_{32}}}\right)\\\\\beta &=\arccos
\left(R_{22}\right)\\\\\gamma &=\arctan \left({\frac
{R_{21}}{-R_{23}}}\right)\end{aligned}}}  ![{\\displaystyle
{\\begin{aligned}\\alpha &=\\arctan \\left\({\\frac


  * [ SPEED ](https://www.robot-forum.com/tagged/429-speed/?objectType=com.woltlab.wbb.thread)
  * [ staubli ](https://www.robot-forum.com/tagged/193-staubli/?objectType=com.woltlab.wbb.thread)
  * [ tcp ](https://www.robot-forum.com/tagged/931-tcp/?objectType=com.woltlab.wbb.thread)
  * [ TCP/IP ](https://www.robot-forum.com/tagged/629-tcp-ip/?objectType=com.woltlab.wbb.thread)
  * [ teach pendant ](https://www.robot-forum.com/tagged/1318-teach-pendant/?objectType=com.woltlab.wbb.thread)
  * [ vision ](https://www.robot-forum.com/tagged/16-vision/?objectType=com.woltlab.wbb.thread)
  * [ Welding ](https://www.robot-forum.com/tagged/229-welding/?objectType=com.woltlab.wbb.thread)
  * [ workvisual ](https://www.robot-forum.com/tagged/13-workvisual/?objectType=com.woltlab.wbb.thread)
  * [ yaskawa ](https://www.robot-forum.com/tagged/173-yaskawa/?objectType=com.woltlab.wbb.thread)
  * [ YRC1000 ](https://www.robot-forum.com/tagged/560-yrc1000/?objectType=com.woltlab.wbb.thread)


  Conventions  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=10 "Edit section:
Conventions") ]

[
![](//upload.wikimedia.org/wikipedia/commons/thumb/3/30/Plane_with_ENU_embedded_axes.svg/250px-
Plane_with_ENU_embedded_axes.svg.png)
](/wiki/File:Plane_with_ENU_embedded_axes.svg) Heading, elevation and bank
angles ( _Z_ \- _Y_ ′- _X_ ″) for an aircraft using onboard ENU axes both
onboard and for the ground tracking station. The fixed reference frame _x_ \-
_y_ \- _z_ represents such a tracking station. Onboard axes _Y_ and _Z_ are
not shown. _X_ shown in green color. According to RHS rules the shown _y_
-axis is negative.

The three elemental rotations may occur either about the axes of the original
coordinate system, which remains motionless (  extrinsic rotations  ), or
about the axes of the rotating coordinate system, which changes its
orientation after each elemental rotation (  intrinsic rotations  ).

There are six possibilities of choosing the rotation axes for Tait–Bryan
angles. The six possible sequences are:

  * _x_ \- _y_ ′- _z_ ″ (intrinsic rotations) or _z_ \- _y_ \- _x_ (extrinsic rotations)
  * _y_ \- _z_ ′- _x_ ″ (intrinsic rotations) or _x_ \- _z_ \- _y_ (extrinsic rotations)
  * _z_ \- _x_ ′- _y_ ″ (intrinsic rotations) or _y_ \- _x_ \- _z_ (extrinsic rotations)
  * _x_ \- _z_ ′- _y_ ″ (intrinsic rotations) or _y_ \- _z_ \- _x_ (extrinsic rotations)
  * _z_ \- _y_ ′- _x_ ″ (intrinsic rotations) or _x_ \- _y_ \- _z_ (extrinsic rotations): the intrinsic rotations are known as: yaw, pitch and roll
  * _y_ \- _x_ ′- _z_ ″ (intrinsic rotations) or _z_ \- _x_ \- _y_ (extrinsic rotations)


     12
Trophies


20
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
Meanwhile, for an object, its position changing rate is actually its velocity, i.e.,
p˙ = v = ω × p, (51)
which will lead to an important equation shown as follows
ω × p =

RR˙ >

p. (52)
The above equation correlates the object’s angular velocity vector ω and position vector p
with its corresponding rotation matrix RR˙ >.
Theorem 9 Matrix RR˙ > is skew symmetric, i.e.,
(RR˙ >)
> = −RR˙ >. (53)
Proof We can prove it based on the what we learn from the previous Section 4.2 that
matrix R is orthogonal, i.e., RR> = I. By taking the derivative of both sides of R is
orthogonal, i.e., RR> = I with time, we can get
RR˙ > + RR˙ > = 0 ⇒ (RR˙ >)
> = −RR˙ >, (54)
which concludes the proof that RR˙ > is skew symmetric.
The readers may also wonder how can we represent RR˙ >? Actually, in Equation 43, we
have provided one potential representation of matrix RR˙ > with elements form the angular
velocity vector ω already, i.e.,
ω × p =


0 −ωz ωy
ωz 0 −ωx
−ωy ωx 0


| {z }
RR˙ >


px
py
pz



* [ Feb 27th 2018  ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=110623#post110623)


* [ #7 ](https://www.robot-forum.com/robotforum/thread/25960-fanuc-robot-rotations-and-positioning/?postID=110623#post110623 "Share")


    * [ ](https://www.robot-forum.com/trophy/72-3rd-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/73-helping-hand/)


a→b
. (10)
3.1.2 Homogeneous Transformation Matrix
Next, let’s have a look at the vector pointing from the world coordinate system origin to the
robot arm joint b after the rotation. Looking from the world coordinate, we can represent
the vector as
p
[Σw]
b = p
[Σw]
a + p
[Σw]
a→b
(11)
= p
[Σw]
a + R[Σa0→Σw]p
[Σa0]
a→b
. (12)
11
JIAWEI ZHANG, IFM LAB DIRECTOR
Linear algebra will be frequently used in representing robots in this article, and the
above formula can also be rewritten as follows instead:
"
p
[Σw]
b
1
#
=
"
R[Σa0→Σw] p
[Σw]
a
0 1
# "p
[Σa0]
a→b
1


* [ ![](https://www.robot-forum.com/images/avatars/d8/236-d86cf0849580afc96f1add862250dcfb472b9dc6.png) ](https://www.robot-forum.com/user/57811-hawkme/)


  * Everywhere
  *   * This Thread
  * This Forum
  *   * Articles
  * Pages
  * Forum
  * Blog Articles
  * Products
  *   * [ More Options ](https://www.robot-forum.com/search/?extended=1)


[ Reactions Received ](https://www.robot-forum.com/user/84217-robotero/#likes
"Reactions Received by robotero")


[ ![Robotics Channel](https://www.robot-
forum.com/eaImages/banner-101.gif?t=1705996184)
](https://www.youtube.com/channel/UCdXFxEztFI8N1B-Ip3nTOsw?sub_confirmation=1)


[ Nation  ](https://www.robot-forum.com/user/2400-nation/)


  * [ abb ](https://www.robot-forum.com/tagged/116-abb/?objectType=com.woltlab.wbb.thread)
  * [ Backup ](https://www.robot-forum.com/tagged/207-backup/?objectType=com.woltlab.wbb.thread)
  * [ calibration ](https://www.robot-forum.com/tagged/344-calibration/?objectType=com.woltlab.wbb.thread)
  * [ Communication ](https://www.robot-forum.com/tagged/590-communication/?objectType=com.woltlab.wbb.thread)
  * [ DCS ](https://www.robot-forum.com/tagged/78-dcs/?objectType=com.woltlab.wbb.thread)
  * [ dx100 ](https://www.robot-forum.com/tagged/174-dx100/?objectType=com.woltlab.wbb.thread)
  * [ dx200 ](https://www.robot-forum.com/tagged/80-dx200/?objectType=com.woltlab.wbb.thread)
  * [ error ](https://www.robot-forum.com/tagged/175-error/?objectType=com.woltlab.wbb.thread)
  * [ Ethernet ](https://www.robot-forum.com/tagged/369-ethernet/?objectType=com.woltlab.wbb.thread)
  * [ external axis ](https://www.robot-forum.com/tagged/339-external-axis/?objectType=com.woltlab.wbb.thread)
  * [ Fanuc ](https://www.robot-forum.com/tagged/6-fanuc/?objectType=com.woltlab.wbb.thread)
  * [ help ](https://www.robot-forum.com/tagged/75-help/?objectType=com.woltlab.wbb.thread)
  * [ hmi ](https://www.robot-forum.com/tagged/351-hmi/?objectType=com.woltlab.wbb.thread)
  * [ I/O ](https://www.robot-forum.com/tagged/30-i-o/?objectType=com.woltlab.wbb.thread)
  * [ iiwa ](https://www.robot-forum.com/tagged/498-iiwa/?objectType=com.woltlab.wbb.thread)
  * [ irc5 ](https://www.robot-forum.com/tagged/313-irc5/?objectType=com.woltlab.wbb.thread)
  * [ IRVIsion ](https://www.robot-forum.com/tagged/244-irvision/?objectType=com.woltlab.wbb.thread)
  * [ karel ](https://www.robot-forum.com/tagged/36-karel/?objectType=com.woltlab.wbb.thread)
  * [ kawasaki ](https://www.robot-forum.com/tagged/12-kawasaki/?objectType=com.woltlab.wbb.thread)
  * [ kawasaki controller ](https://www.robot-forum.com/tagged/999-kawasaki-controller/?objectType=com.woltlab.wbb.thread)
  * [ Kawasaki robot ](https://www.robot-forum.com/tagged/998-kawasaki-robot/?objectType=com.woltlab.wbb.thread)
  * [ KRC2 ](https://www.robot-forum.com/tagged/97-krc2/?objectType=com.woltlab.wbb.thread)
  * [ KRC4 ](https://www.robot-forum.com/tagged/34-krc4/?objectType=com.woltlab.wbb.thread)
  * [ KRC 4 ](https://www.robot-forum.com/tagged/4105-krc-4/?objectType=com.woltlab.wbb.thread)
  * [ KRL ](https://www.robot-forum.com/tagged/196-krl/?objectType=com.woltlab.wbb.thread)
  * [ KUKA ](https://www.robot-forum.com/tagged/32-kuka/?objectType=com.woltlab.wbb.thread)
  * [ motoman ](https://www.robot-forum.com/tagged/172-motoman/?objectType=com.woltlab.wbb.thread)
  * [ Offset ](https://www.robot-forum.com/tagged/502-offset/?objectType=com.woltlab.wbb.thread)
  * [ PLC ](https://www.robot-forum.com/tagged/320-plc/?objectType=com.woltlab.wbb.thread)
  * [ position ](https://www.robot-forum.com/tagged/195-position/?objectType=com.woltlab.wbb.thread)
  * [ PROFINET ](https://www.robot-forum.com/tagged/317-profinet/?objectType=com.woltlab.wbb.thread)
  * [ Program ](https://www.robot-forum.com/tagged/8-program/?objectType=com.woltlab.wbb.thread)
  * [ Programming ](https://www.robot-forum.com/tagged/107-programming/?objectType=com.woltlab.wbb.thread)
  * [ RAPID ](https://www.robot-forum.com/tagged/152-rapid/?objectType=com.woltlab.wbb.thread)
  * [ roboguide ](https://www.robot-forum.com/tagged/43-roboguide/?objectType=com.woltlab.wbb.thread)
  * [ robot ](https://www.robot-forum.com/tagged/4-robot/?objectType=com.woltlab.wbb.thread)
  * [ robotstudio ](https://www.robot-forum.com/tagged/180-robotstudio/?objectType=com.woltlab.wbb.thread)
  * [ RSI ](https://www.robot-forum.com/tagged/33-rsi/?objectType=com.woltlab.wbb.thread)
  * [ safety ](https://www.robot-forum.com/tagged/506-safety/?objectType=com.woltlab.wbb.thread)
  * [ Siemens ](https://www.robot-forum.com/tagged/582-siemens/?objectType=com.woltlab.wbb.thread)


##  Job Postings


Thank you for comments / clarifications!


we can represent the rotation matrix to project coordinate Σb to Σa as
R[Σb→Σa] = (e
[Σb→Σa]
x
, e
[Σb→Σa]
y
, e
[Σb→Σa]
z
), (15)
where the unit vectors are defined as follows:
e
[Σb→Σa]
x = (1, 0, 0)>; e
[Σb→Σa]
y = (0, cos φ, − sin φ)
>; e
[Σb→Σa]
z = (0,sin φ, cos φ)
>. (16)
12
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
✓
x
y
z
⌃w
x y
z
x
y
z
⌃a
⌃b
p[⌃w]
a
p[⌃a]
a!b
p[⌃b]


  External links  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=29 "Edit section:
External links") ]

![](//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-
Commons-logo.svg.png)

Wikimedia Commons has media related to [ Euler angles
](https://commons.wikimedia.org/wiki/Euler_angles "commons:Euler angles") .

  * [ "Euler angles" ](https://www.encyclopediaofmath.org/index.php?title=Euler_angles) , _[ Encyclopedia of Mathematics ](/wiki/Encyclopedia_of_Mathematics "Encyclopedia of Mathematics") _ , [ EMS Press ](/wiki/European_Mathematical_Society "European Mathematical Society") , 2001 [1994]
  * [ Weisstein, Eric W. ](/wiki/Eric_W._Weisstein "Eric W. Weisstein") [ "Euler Angles" ](https://mathworld.wolfram.com/EulerAngles.html) . _[ MathWorld ](/wiki/MathWorld "MathWorld") _ .
  * David Eberly. [ Euler Angle Formulas ](https://www.geometrictools.com/Documentation/EulerAngles.pdf) , Geometric Tools
  * An interactive tutorial on Euler angles available at [ https://www.mecademic.com/en/how-is-orientation-in-space-represented-with-euler-angles ](https://www.mecademic.com/en/how-is-orientation-in-space-represented-with-euler-angles)
  * [ EulerAngles ](https://itunes.apple.com/us/app/eulerangles/id584911325) – an iOS app for visualizing in 3D the three rotations associated with Euler angles
  * [ Orientation Library ](https://sourceforge.net/projects/orilib) – "orilib", a collection of routines for rotation / orientation manipulation, including special tools for crystal orientations
  * Online tool to convert rotation matrices available at [ rotation converter ](https://www.andre-gaschler.com/rotationconverter) (numerical conversion)
  * Online tool to convert symbolic rotation matrices (dead, but still available from the [ Wayback Machine ](/wiki/Wayback_Machine "Wayback Machine") ) [ symbolic rotation converter ](https://web.archive.org/web/20131208033145/http://vectoralgebra.info/eulermatrix.html)
  * [ Rotation, Reflection, and Frame Change: Orthogonal tensors in computational engineering mechanics ](http://iopscience.iop.org/book/978-0-7503-1454-1) , IOP Publishing
  * [ Euler Angles, Quaternions, and Transformation Matrices for Space Shuttle Analysis ](https://ntrs.nasa.gov/api/citations/19770019231/downloads/19770019231.pdf) , NASA

[ Authority control databases ](/wiki/Help:Authority_control "Help:Authority
control") : National  [ ![Edit this at
Wikidata](//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-
ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
](https://www.wikidata.org/wiki/Q751290


J.A. Cetto et al. (Eds.): Informatics in Control, Automation and Robotics, LNEE 89, pp. 3–20.
springerlink.com © Springer-Verlag Berlin Heidelberg 2011
Dynamic Modeling of Robots Using
Newton-Euler Formulation
Wisama Khalil
Ecole Centrale de Nantes, IRCCyN UMR CNRS 6597, 1 Rue de la Noë, 44321, Nantes, France
Wisama.khalil@irccyn.ec-nantes.fr
Abstract. This paper presents the use of recursive Newton-Euler formulation to
model different types of robots. The main advantages of this technique are the
facility of implementation and obtaining models with reduced number of
operations. The following structures are treated: rigid tree structure robots,
closed loop robots, parallel robots, robots with lumped elasticity, robots with
moving base and wheeled robots.
Keywords: Dynamic modeling, Newton-Euler, Recursive calculation, Tree
structure, Parallel robots, Flexible joints, Mobile robots.
1 Introduction
The dynamic modeling of robots is an important topic for the design, simulation, and
control of robots. Different techniques have been proposed and used by the robotics
community. In this paper we show that the use of Newton-Euler recursive technique
is easy to develop and implement. The proposed algorithm can be extended to many
types of structures. In section 2 we recall the method used to describe the kinematics
of the structure, and then in section 3 we present the inverse and direct dynamic
models of tree structure rigid robots. The following sections present the generalization
to the other systems.
2 Description of the Robots
The structures of robots will be described using Khalil and Kleinfinger notations [1].
This method can take into account tree structures and closed loop robots. Its use
facilitates the calculation of minimum number of inertial parameters [2]…[4], which
reduce the number of operations of the dynamic models and are needed in dynamic
identification and adaptive control laws.
2.1 Geometric Description of Tree Structure Robots
A tree structure robot is composed of n+1 links and n joints. Link 0 is the base and
link n is a terminal link. The joints are revolute or pris-matic, rigid or elastic. The
links are numbered consecutively from the base, to the terminal links. Joint j connects
4 W. Khalil
link j to link a(j), where a(j) denotes the link antecedent to link j. A frame Ri is
attached to each link i such that (Fig. 1):
• zi is along the axis of joint i;
• xi is along the common normal between zi and one of the succeeding joint axes.
γj


[ robotero  ](https://www.robot-forum.com/user/84217-robotero/)



 . (9)
With the rotation matrix R[Σa→Σw]
, we can actually project the arm link vector pointing
from the joint a to joint b from the local coordinate Σa
0 to its representation in the world
coordinate Σw:


0
l2 sin θ
l2 cos θ


| {z }
p
[Σw]
a→b
=


1 0 0
0 cos θ sin θ
0 − sin θ cos θ


| {z }
R
[Σa0→Σw]


0
0
l2


| {z }
p
[Σa0
]


    * [ ](https://www.robot-forum.com/trophy/65-very-popular-member/)
    * [ ](https://www.robot-forum.com/trophy/76-typewriter/)


configuration. For rigid-body robots, since all its composition parts are rigid and have preknown shapes, actually only a few numbers will be sufficient to represent its configuration.
Example 1 For instance, as shown in Plot (a) of Figure 3, given a coin lying heads up
on a table (which can be represented as a 2D plane), the location and state of the coin
can be specified with three parameters ((x, y), θ): (1) the coordinate parameter pair (x, y)
that denotes its location on the table, and (2) a third parameter θ that indicates the coin’s
orientation (head up or tail up).
6
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
Example 2 Besides the configuration in 2D space, 3D space is much more frequently used
in robotics. As shown in Plot (b) of Figure 3, for a robot arm with one vertical link (of known
length l1) and a movable arm link (of known length l2) connected by a joint, which forms an
angle θ between these two links. The robot arm position and state can be represented with
four parameters ((x, y, z), θ), where (x, y, z) denotes the position of the base center and θ
indicates the angle between these two arm links.
2.2.2 Robot Configuration Space
Definition 2 (Configuration Space): For a given robot, there usually exist different
feasible configurations, and the set of all potential configurations of the robot defines the
configuration space of the robot.
In some textbooks, the robot configuration space is also called the C-space for abbreviation. It is also easy to observe that given the robot’s configuration space, one of its specific
configuration will actually be a point in the configuration space.
Example 3 For instance, for the coin shown in Plot (a) of Figure 3, let X and Y denote
the sets of potential x-coordinate and y-coordinate values of the coin’s position. Then, the
configuration space of the coin can be represented as X × Y × {Head, T ail}.
Example 4 When it comes to the robot arm shown in Plot (b) of Figure 3, let X, Y and
Z denote the sets of potential x, y and z coordinate values of the robot arm base center, the
configuration space of the robot arm can be represented as X × Y × Z × [0, 2π), where the
arms’ angle θ can be any value within the range of [0, 2π).
In the real world, there exist different ways to define robot configuration space, and we
use the sphere as an example to illustrate different configuration spaces below.
Example 5 For instance, a point on a sphere surface of radius r ∈ R can be uniquely
represented with its “(latitude, longitude)” pair, just like the GPS localization on the earth.
Meanwhile, the point on the sphere surface can also be represented with a (x, y, z) coordinate
pair in the Euclidean space subject to the constraint x
2 + y
2 + z
2 = r
2
.
The former representation in the above example is normally called the explicit representation, while the latter one is called the implicit representation. Based on the robot
configuration and configuration space concepts introduced above, next we will study robot


  * [ Login or register ](https://www.robot-forum.com/login/?url=https%3A%2F%2Fwww.robot-forum.com%2Frobotforum%2Fthread%2F25960-fanuc-robot-rotations-and-positioning%2F)
  * [ Search  ](https://www.robot-forum.com/search/ "Search")


• Pitch: The rotation movement along the y axis is also called pitch.
• Yaw: The rotation movement along the z axis is also called yaw.
In the roll rotational motion, for all the points in the robot body, their x coordinate is not
changed, while their y and z coordinates will change together with the rotation. Meanwhile,
for the pitch rotation, all the x and z coordinates will change due to the rotation. The yaw
rotation will change the x and y coordinates instead.
Readers may also wonder why the rotation along these axes are named as roll, pitch and
yaw, respectively. These movement names are actually borrowed from the airplane control.
14
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
x y
z
Figure 7: A Example of Roll, Pitch and Yaw Rotation Movements.
As illustrated in Figure 7, given a airplane, based on the coordinate system definition
provided in Section 2.3.1, we can introduce a coordinate system along the plane body (x
axis faces forward, y axis to the airplane left and z axis faces up).
If the readers having experiences in driving airplane, the two ailerons on the outer rear
edge of each wing cause the plane to roll to the left or right. The elevator on the horizontal
tail surface controls the pitch movement of the plane. Meanwhile, the rudder on the vertical
tail fin controls swivels from side to side, which will push the tail in a left or right direction
and control the yaw movement of the plane. Similar names of the motions are also used to
describe the robot rotation here.
4.1.2 Rotation Matrices for Roll, Pitch and Yaw
For the roll, pitch and yaw rotational motions, to differentiate them from each other, we
can denote their rotation angles as φ, θ and ψ, respectively. Here, we assume the rotations
are all in the counter-clockwise direction (i.e., the positive angles). Based on the degrees
and the representations we learn from Section 3.1.1, regardless of the coordinate systems,
15
JIAWEI ZHANG, IFM LAB DIRECTOR
we can represent the corresponding rotation matrices for roll, pitch and yaw as follows:
Rx(φ) =


1 0 0
0 cos φ − sin φ
0 sin φ cos φ

 , (21)
Ry(θ) =



[ ![Advertise in Robotics](https://www.robot-
forum.com/eaImages/banner-100.gif) ](https://www.robot-
forum.com/shop/category/61-bronze-level-sponsoring/)


the function f(x) can be represented as
f(x) = expax f(0). (60)
Similar representation can also be applied to represent the matrix R subject to Equation 59, we can denote the matrix R as
R(t) = expωbt R(0). (61)
In the above equation, we clearly specify the matrix R has variable t and R(0) denotes the
representation of matrix R at timestamp t = 0. If we assume the initial condition R(0) = I,
the above representation can be further simplified as
R(t) = expωbt
. (62)
Meanwhile, let’s come back to the knowledge we learn from the calculus course, according
to the Taylor series, the exponential term expax we use to represent the f(x) function can
actually be calculated as the sum of a sequence of polynomial terms:
expax = 1 + ax +
(ax)
2
2! +
ax)
3
3! + · · · (63)
Therefore, we can further represent the matrix R(t) shown above as the sum of a
sequence of matrix polynomial terms
R(t) = I + ωbt +
(ωbt)
2
2! +
(ωbt)
3
3! + · · · . (64)
22
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
Theorem 11 Given the angular velocity vector ω, it can be represented as ω = ˙qe, where
q˙ is a scalar denotes the rotation velocity and e is a unit vector representing the angular
velocity direction. Then we can have ωb = ˙qbe. For the unit direction vector e, subject to the
∧ operator, we have
be
2n+1 = (−1)n
· be, (65)
be
2n+2 = (−1)n
· be


For TOOL Frame definition W, P, R are the rotations around the X, Y, Z axis of
the "mechanical interface" coordinate system
For USER Frame definition W, P, R are the rotations around the X, Y, Z axis of
the World Coordinate System
etc.


[ Satja  ](https://www.robot-forum.com/user/85517-satja/)


One of my customers has done most of the leg work for me and documented the
various robot brands methods of doing point transforms. They do a lot of
robotic guidance, so it is important they get the orders right.


Oct 22, 2023


  * [ Create account  ](/w/index.php?title=Special:CreateAccount&returnto=Euler+angles "You are encouraged to create an account and log in; however, it is not mandatory")
  * [ Log in  ](/w/index.php?title=Special:UserLogin&returnto=Euler+angles "You're encouraged to log in; however, it's not mandatory. \[o\]")

Pages for logged out editors [ learn more  ](/wiki/Help:Introduction)

  * [ Contributions  ](/wiki/Special:MyContributions "A list of edits made from this IP address \[y\]")
  * [ Talk  ](/wiki/Special:MyTalk "Discussion about edits from this IP address \[n\]")


[ ![](https://www.robot-forum.com/eaImages/banner-109.gif)
](https://www.robot-forum.com/shop/category/61-bronze-level-sponsoring/)


This is correct


[ Reactions Received ](https://www.robot-
forum.com/user/58264-tituslepic/#likes "Reactions Received by TitusLepic")


    * [ ](https://www.robot-forum.com/trophy/72-3rd-anniversary/)
    * [ ](https://www.robot-forum.com/trophy/73-helping-hand/)


[ ![Rituram
Ojha](https://miro.medium.com/v2/resize:fill:144:144/1*6I2G0GzipVSQbnrEDL2r4Q.jpeg)
](/@bikashojha904?source=post_page-----
4f40883fbaef--------------------------------)


[ Open in app
](https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2F4f40883fbaef&%7Efeature=LoOpenInAppButton&%7Echannel=ShowPostUnderUser&source=---two_column_layout_nav----------------------------------)


[ Your browser does not support videos  ![Radwell]()
](https://info.radwell.com/en/en/radwell_robotics-0)


[ ![](https://www.robot-forum.com/eaImages/banner-112.gif)
](https://www.robot-forum.com/shop/category/61-bronze-level-sponsoring/)


  1. [ Privacy Policy  ](https://www.robot-forum.com/privacy-policy/)
  2. [ Legal Notice  ](https://www.robot-forum.com/legal-notice/)


[ https://en.wikipedia.org/wiki/Aircraft_principal_axes
](https://en.wikipedia.org/wiki/Aircraft_principal_axes)


sitelinks-wikipedia
"Edit interlanguage links")

  * [ Article  ](/wiki/Euler_angles "View the content page \[c\]")
  * [ Talk  ](/wiki/Talk:Euler_angles "Discuss improvements to the content page \[t\]")

English

  * [ Read  ](/wiki/Euler_angles)
  * [ Edit  ](/w/index.php?title=Euler_angles&action=edit "Edit this page \[e\]")
  * [ View history  ](/w/index.php?title=Euler_angles&action=history "Past revisions of this page \[h\]")

Tools

Tools

move to sidebar  hide

Actions

  * [ Read  ](/wiki/Euler_angles)
  * [ Edit  ](/w/index.php?title=Euler_angles&action=edit "Edit this page \[e\]")
  * [ View history  ](/w/index.php?title=Euler_angles&action=history)

General

  * [ What links here  ](/wiki/Special:WhatLinksHere/Euler_angles "List of all English Wikipedia pages containing links to this page \[j\]")
  * [ Related changes  ](/wiki/Special:RecentChangesLinked/Euler_angles "Recent changes in pages linked from this page \[k\]")
  * [ Upload file  ](/wiki/Wikipedia:File_Upload_Wizard "Upload files \[u\]")
  * [ Special pages  ](/wiki/Special:SpecialPages "A list of all special pages \[q\]")
  * [ Permanent link  ](/w/index.php?title=Euler_angles&oldid=1218886199 "Permanent link to this revision of this page")
  * [ Page information  ](/w/index.php?title=Euler_angles&action=info "More information about this page")
  * [ Cite this page  ](/w/index.php?title=Special:CiteThisPage&page=Euler_angles&id=1218886199&wpFormIdentifier=titleform "Information on how to cite this page")
  * [ Get shortened URL  ](/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEuler_angles)
  * [ Download QR code  ](/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEuler_angles)
  * [ Wikidata item  ](https://www.wikidata.org/wiki/Special:EntityPage/Q751290 "Structured data on this page hosted by Wikidata \[g\]")

Print/export

  * [ Download as PDF  ](/w/index.php?title=Special:DownloadAsPdf&page=Euler_angles&action=show-download-screen "Download this page as a PDF file")


Unsupported_attributions
"Wikipedia:Manual of Style/Words to watch") _ ]  suppose a set of frames, able
to move each with respect to the former according to just one angle, like a
gimbal, there will exist an external fixed frame, one final frame and two
frames in the middle, which are called "intermediate frames". The two in the
middle work as two gimbal rings that allow the last frame to reach any
orientation in space.


b→e
(85)
= p
[Σw]
a + R[Σa→Σw]p
[Σa]
a→b + R[Σa→Σw]R[Σb→Σa]p
[Σb]
b→e
. (86)
2
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
By taking the derivatives for both sides of Equation 83, we can obtain the end point
linear velocity to be
v
[Σw]
e =p˙
[Σw]
e
(87)
=p˙
[Σw]
a + R˙
[Σa→Σw]p
[Σa]
a→b + R˙
[Σa→Σw]R[Σb→Σa]p
[Σb]
b→e + R[Σa→Σw]R˙
[Σb→Σa]p
[Σb]
b→e
(88)
=v
[Σw]
a + ωb
[Σw]
a R[Σa→Σw]p
[Σa]
a→b + ωb


Senior Member LVL 4


In this article, we’re going to derive the forward kinematics equation of a
4-DOF robotic arm but the concept will be same for n-DOF. We’ll work through
each step one at a time, starting with deriving DH parameters and ending with
the homogeneous transformation matrix.


     353
Trophies


e
>
x ex e
>
x ey e
>
x ez
e
>
y ex e
>
y ey e
>
y ez
e
>
z ex e
>
z ey e
>
z ez

 (31)
=


1 0 0
0 1 0
0 0 1

 . (32)
For the rotation matrices along the y and z axes, it is also easy to obtain that
Ry(θ)
>Ry(θ) = I ∈ R3×3
, Rz(ψ)
>Rz(ψ) = I ∈ R3×3
. (33)
How about the roll-pitch-yaw rotation matrix Rrpy(φ, θ, ψ) introduced in Equation 26?
Since Rrpy(φ, θ, ψ) = Rz(ψ)Ry(θ)Rx(φ), we can get
Rrpy(φ, θ, ψ)


Follow


P.S.: does anyone have / know some code to help me define the pose commands in
order to achieve tool positioning to x1,y1,z1, alpha, beta, gamma on a point
(on a surface) in front of the robot, such that alpha, beta, gamma are the
final geometrical angles to the local surface normal (consider the coordinate
system in that point as having parallel axes to the robot base= world
coordinate system)?


  Geometric algebra  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=20 "Edit section:
Geometric algebra") ]

Other properties of Euler angles and rotations in general can be found from
the [ geometric algebra ](/wiki/Geometric_algebra "Geometric algebra") , a
higher level abstraction, in which the quaternions are an even subalgebra. The
principal tool in geometric algebra is the rotor  R  =  [  cos    (  θ  /  2
)  −  I  u  sin    (  θ  /  2  )  ]  {\displaystyle \mathbf {R} =[\cos(\theta
/2)-Iu\sin(\theta /2)]}  ![{\\displaystyle \\mathbf {R} =\[\\cos\(\\theta
/2\)-Iu\\sin\(\\theta
/2\)\]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ccaf9643d65a54a5bd1b4d962d07f605c9c67648)
where  θ  =  {\displaystyle \theta =}  ![{\\displaystyle \\theta
=}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9cdf817a63d001b9c002aacbbc5fecb60bc86527)
[ angle of rotation ](/wiki/Angle_of_rotation "Angle of rotation") ,  u
{\displaystyle \mathbf {u} }  ![{\\displaystyle \\mathbf {u}
}](https://wikimedia.org/api/rest_v1/media/math/render/svg/261e20fe101de02a771021d9d4466c0ad3e352d7)
is the rotation axis (unitary vector) and  I  {\displaystyle \mathbf {I} }
![{\\displaystyle \\mathbf {I}
}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8a458c8aeb096ce732abf346ae8edf3e4f53a126)
is the pseudoscalar (trivector in  R  3  {\displaystyle \mathbb {R} ^{3}}
![{\\displaystyle \\mathbb {R}
^{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f936ddf584f8f3dd2a0ed08917001b7a404c10b5)
)


  Alternative names  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=12 "Edit section:
Alternative names") ]

These angles are normally taken as one in the external reference frame ( [
heading ](/wiki/Heading_\(navigation\) "Heading \(navigation\)") , [ bearing
](/wiki/Bearing_\(navigation\) "Bearing \(navigation\)") ), one in the
intrinsic moving frame ( [ bank ](/wiki/Banked_turn "Banked turn") ) and one
in a middle frame, representing an [ elevation
](/wiki/Elevation_\(ballistics\) "Elevation \(ballistics\)") or inclination
with respect to the horizontal plane, which is equivalent to the line of nodes
for this purpose.

[
![](//upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Roll_pitch_yaw_mnemonic.svg/220px-
Roll_pitch_yaw_mnemonic.svg.png) ](/wiki/File:Roll_pitch_yaw_mnemonic.svg)
Mnemonics to remember angle names

For an aircraft, they can be obtained with three rotations around its [
principal axes ](/wiki/Aircraft_principal_axes "Aircraft principal axes") if
done in the proper order. A [ yaw ](/wiki/Yaw_\(rotation\) "Yaw \(rotation\)")
will obtain the bearing, a [ pitch ](/wiki/Pitching_moment "Pitching moment")
will yield the elevation and a roll gives the bank angle. Therefore, in
aerospace they are sometimes called **yaw, pitch, and roll** . Notice that
this will not work if the rotations are applied in any other order or if the
airplane axes start in any position non-equivalent to the reference frame.

Tait–Bryan angles, following _z_ \- _y_ ′- _x_ ″ (intrinsic rotations)
convention, are also known as **nautical angles** , because they can be used
to describe the orientation of a ship or aircraft, or **Cardan angles** ,
after the Italian mathematician and physicist [ Gerolamo Cardano
](/wiki/Gerolamo_Cardano "Gerolamo Cardano") , who first described in detail
the [ Cardan suspension ](/wiki/Cardan_suspension "Cardan suspension") and the
[ Cardan joint ](/wiki/Cardan_joint "Cardan joint") .


  Proper Euler angles  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=14 "Edit section: Proper
Euler angles") ]

Assuming a frame with [ unit vectors ](/wiki/Unit_vector "Unit vector") ( _X_
, _Y_ , _Z_ ) given by their coordinates as in the main diagram, it can be
seen that:

     cos    (  β  )  =  Z  3  .  {\displaystyle \cos(\beta )=Z_{3}.}  ![{\\displaystyle \\cos\(\\beta \)=Z_{3}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f4558a4a3b5029d45bd3c7906c99ee32b6c316e1)

And, since

     sin  2    x  =  1  −  cos  2    x  ,  {\displaystyle \sin ^{2}x=1-\cos ^{2}x,}  ![{\\displaystyle \\sin ^{2}x=1-\\cos ^{2}x,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9f8a52252be03a493612bcb72093e090c83f0144)

for  0  < x  < π  {\displaystyle 0<x<\pi }  ![{\\displaystyle 0<x<\\pi
}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a5072e331d80251147f44dc1bca9faa5d19c96a8)
we have

     sin    (  β  )  =  1  −  Z  3  2  .  {\displaystyle \sin(\beta )={\sqrt {1-Z_{3}^{2}}}.}  ![{\\displaystyle \\sin\(\\beta \)={\\sqrt {1-Z_{3}^{2}}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e4a06ad8788186f6640692f41f8fc601f621c81e)

As  Z  2  {\displaystyle Z_{2}}  ![{\\displaystyle
Z_{2}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c98d433ae289ecb2b88f895b407538b0e4183b28)
is the double projection of a unitary vector,

     cos    (  α  )  ⋅  sin    (  β  )  =  −  Z  2  ,  {\displaystyle \cos(\alpha )\cdot \sin(\beta )=-Z_{2},}  ![{\\displaystyle \\cos\(\\alpha \)\\cdot \\sin\(\\beta \)=-Z_{2},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6927cb465d111edf8884d941cf6a70b716c508b4)
     cos    (  α  )  =  −  Z  2  /  1  −  Z  3  2  .  {\displaystyle \cos(\alpha )=-Z_{2}/{\sqrt {1-Z_{3}^{2}}}.}  ![{\\displaystyle \\cos\(\\alpha \)=-Z_{2}/{\\sqrt {1-Z_{3}^{2}}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dbae2fef5e628a6ce262622f803aa1846f2eb7ba)

There is a similar construction for  Y  3  {\displaystyle Y_{3}}
![{\\displaystyle
Y_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b424bd11330a73f6ccde0cb76c3f7514e9fb3769)
, projecting it first over the plane defined by the axis _z_ and the line of
nodes. As the angle between the planes is  π  /  2  −  β  {\displaystyle \pi
/2-\beta }  ![{\\displaystyle \\pi /2-\\beta
}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e02dcb73bbabd79156d2ef4a2a6aa6720a8e3cae)
and  cos    (  π  /  2  −  β  )  =  sin    (  β  )  {\displaystyle \cos(\pi
/2-\beta )=\sin(\beta )}  ![{\\displaystyle \\cos\(\\pi /2-\\beta
\)=\\sin\(\\beta
\)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b13f8ba044389ed41109e72b0daddd4d51db5297)
, this leads to:


* [ ![](https://www.robot-forum.com/images/avatars/9f/2747-9f0f94e2d3d1e4d993452c92b437517371ca3150.jpg) ](https://www.robot-forum.com/user/2400-nation/)


Terms


Rotation Matrix R R
Homogeneous Transition Matrix T T
Velocity in World Coordinate v v
Angular Velocity in World Coordinate ω w
Joint Angle q q
Joint Rotation Velocity q˙ dq
Joint Rotation Acceleration q¨ ddq
Mass m m
Center of Mass c c
Moment of Inertia I I
5
JIAWEI ZHANG, IFM LAB DIRECTOR
0
0
x
y
Position: (x, y)
Orientation: ✓
Plot (a) Plot (b)
l1
l2
✓
x
y
z
(x, y, z)
Position:
Angle: ✓
Figure 3: A Example of Rigid-Body Item Configuration.
2.2 Robot Configuration and Configuration Space
In this part, we will introduce the concepts of robot configuration and configuration space.
Both robot configuration and configuration space play an important role in robot motion,
control and kinematics. In the following sections, when we introduce the robot motion, coordinate transformation and velocity transformation, readers will observe that robot motion
will involve a sequence of robot configurations (more like a configuration path) connecting
from the starting configuration to the desired target configuration within the pre-defined
robot configuration space.
2.2.1 Robot Configuration
For a rigid-body robot, its location and state can be uniquely specified by its configuration.
Definition 1 (Robot Configuration): The robot configuration denotes a complete specification of the positions of every point in the robot system.
In the real-world, we cannot enumerate all the points of a robot body to represent its


  Bibliography  [  [ edit
](/w/index.php?title=Euler_angles&action=edit&section=28 "Edit section:
Bibliography") ]

  * Biedenharn, L. C.; Louck, J. D. (1981), _Angular Momentum in Quantum Physics_ , Reading, MA: [ Addison–Wesley ](/wiki/Addison%E2%80%93Wesley "Addison–Wesley") , [ ISBN ](/wiki/ISBN_\(identifier\) "ISBN \(identifier\)") [ 978-0-201-13507-7  ](/wiki/Special:BookSources/978-0-201-13507-7 "Special:BookSources/978-0-201-13507-7")
  * [ Goldstein, Herbert ](/wiki/Herbert_Goldstein "Herbert Goldstein") (1980), _Classical Mechanics_ (2nd ed.), Reading, MA: Addison–Wesley, [ ISBN ](/wiki/ISBN_\(identifier\) "ISBN \(identifier\)") [ 978-0-201-02918-5  ](/wiki/Special:BookSources/978-0-201-02918-5 "Special:BookSources/978-0-201-02918-5")
  * Gray, Andrew (1918), _A Treatise on Gyrostatics and Rotational Motion_ , London: [ Macmillan ](/wiki/Macmillan_Publishers "Macmillan Publishers") (published 2007), [ ISBN ](/wiki/ISBN_\(identifier\) "ISBN \(identifier\)") [ 978-1-4212-5592-7  ](/wiki/Special:BookSources/978-1-4212-5592-7 "Special:BookSources/978-1-4212-5592-7")
  * Rose, M. E. (1957), _Elementary Theory of Angular Momentum_ , New York, NY: [ John Wiley & Sons ](/wiki/John_Wiley_%26_Sons "John Wiley & Sons") (published 1995), [ ISBN ](/wiki/ISBN_\(identifier\) "ISBN \(identifier\)") [ 978-0-486-68480-2  ](/wiki/Special:BookSources/978-0-486-68480-2 "Special:BookSources/978-0-486-68480-2")
  * Symon, Keith (1971), _Mechanics_ , Reading, MA: Addison-Wesley, [ ISBN ](/wiki/ISBN_\(identifier\) "ISBN \(identifier\)") [ 978-0-201-07392-8  ](/wiki/Special:BookSources/978-0-201-07392-8 "Special:BookSources/978-0-201-07392-8")
  * [ Landau, L.D. ](/wiki/Lev_Landau "Lev Landau") ; [ Lifshitz, E. M. ](/wiki/Evgeny_Lifshitz "Evgeny Lifshitz") (1996), _Mechanics_ (3rd ed.), Oxford: Butterworth-Heinemann, [ ISBN ](/wiki/ISBN_\(identifier\) "ISBN \(identifier\)") [ 978-0-7506-2896-9  ](/wiki/Special:BookSources/978-0-7506-2896-9 "Special:BookSources/978-0-7506-2896-9")


the robot end point position before and after the rotation of the robot arm. To interact
with the world, robot end points play an important role. In this section, we are especially
interested in the position, while the velocity of the end point will discussed in the following
Section 5 instead.
3.1 Single-Link Robot End Point Position
In operation, robot links will rotate around the joint, and will change the position and
state of the robot in the space. Such rotational movement can be clearly described with
the rotation matrix and homogeneous transformation matrix. In this part, we will first
introduce the rotation matrix that can denote the rotation transformation. After that, we
will introduce the homogeneous transformation matrix that can project any vector from one
coordinate system to another.
3.1.1 Rotation Matrix
Let’s first discard the second robot arm link from the example shown in Figure 4 and only
use the 1-arm robot illustrated in Figure 5 as an example.
Example 8 As shown in Figure 5, we rotate the robot arm around joint a from the previous
vertical position in Figure 4 in the clockwise direction with an angle of θ degrees to the
current position. As the arm link rotates, the local coordinate attached to the robot arm
joint will rotate clockwise with θ degrees as well, and the new local coordinate system after
the rotation can be denoted as Σa
0.
10
IFM LAB TUTORIAL SERIES # 8, COPYRIGHT ©IFM LAB
Within the local coordinate system Σa
0, the representations of robot arm link pointing
from joint a to b after the rotation are not changed actually. In other words, in the new
local coordinate Σa
0, the arm link vector after rotation can still be represented as
p
[Σa0]
a→b = (0, 0, l2)
>. (6)
Meanwhile, looking from the world coordinate Σw, we observe that the arm link vector
pointing from joint a to b will be different from p
[Σa0]
a→b
actually, which can be represented as
p
[Σw]
a→b = (0, l2 sin θ, l2 cos θ)
>. (7)


[ Robotics  ](/tag/robotics?source=post_page-----4f40883fbaef---------------
robotics-----------------)


arm link in the coordinate system Σb with origin at joint b, we can calculate it based on the
rotation matrix R[Σb→Σw]
introduced in Equation 84. As introduced before in Equation 56,
we know that
ωb
[Σw]
e =R˙
[Σb→Σw]

R[Σb→Σw]
>
(97)
=
d
dt

R[Σa→Σw]R[Σb→Σa]
 R[Σb→Σw]
>
(98)
=

R˙
[Σa→Σw]R[Σb→Σa] + R[Σa→Σw]R˙
[Σb→Σa]
 R[Σb→Σw]
>
(99)
=

ωb
[Σw]
a R[Σa→Σw]R[Σb→Σa] + R[Σa→Σw]ωb
[Σa]
b R[Σb→Σa]
 R[Σb→Σw]
>
(100)
=ωb
[Σw]