Scilab Function
Last update : April 2007

rt_tr2rpy - homogeneous transform to roll/pitch/yaw angles[view code]

Calling Sequence

[a b c] = rt_tr2rpy(T)

Parameters

Description

Return a vector of roll/pitch/yaw angles, in radians, corresponding to the rotational part of the homogeneous transform T.

Examples

   // The following example shows how rt_tr2rpy() can be used to get the
   // orientation of a coordinate frame, described by a given homogeneous
   // transform, expressed in terms of roll/pitch/yaw (RPY) angles.

   // generate a homogeneous transform
   rpy = [%pi/6, -%pi/4, -2/5*%pi], // RPY angles set
   T = rt_rpy2tr(rpy);

   // corresponding RPY angles set
   rpy_comp = rt_tr2rpy(T),

   // Remember that the solution to the problem of computing a set of RPY
   // angles corresponding to the rotational part of a homogeneous
   // transform is not univoque.
   // rt_tr2rpy() computes the solution reducing the range to whom the
   // pitch angle belongs to (-%pi/2, %pi/2) radians.
   // Therefore, if you generate a coordinate frame from a set of RPY
   // angles with the pitch belonging to (%pi/2, 3/2*%pi) and then you try
   // to get its orientation by using rt_tr2rpy() function, be aware that
   // you won't obtain the starting set of angles.
   
   rpy1 = [0.6, 2.85, -1.75],       // RPY angles set
   T = rt_rpy2tr(rpy1);
   rpy2 = rt_tr2rpy(T),             // rpy2 is different from rpy1, but
                                    // they are equivalent in their effects

   // Lastly, note that rt_tr2rpy() provides a single solution when the
   // computed set of RPY angles has pitch = %pi/2 or pitch = -%pi/2. But
   // you should remember that in these cases infinitely many solutions are
   // corresponding to the rotational part of the homogeneous transform.

   rpy1 = [0.6, %pi/2, -1.75];      // RPY angles set with pitch = %pi/2
   T = rt_rpy2tr(rpy1),
   // all solutions for which yaw - roll = -1.75 - 0.6 are equivalent in
   // their effects
   rpy1_a = rt_tr2rpy(T);               Ta = rt_rpy2tr(rpy1_a), 
   rpy1_b = [0.25, %pi/2, -2.35+0.25];  Tb = rt_rpy2tr(rpy1_b),
   rpy1_c = [2.6, %pi/2, -2.35+2.6];    Tc = rt_rpy2tr(rpy1_c),
   rpy1_d = [-1.35, %pi/2, -2.35-1.35]; Td = rt_rpy2tr(rpy1_d),
   rpy1_e = [-0.9, %pi/2, -2.35-0.9];   Te = rt_rpy2tr(rpy1_e),

   rpy2 = [-2.2, -%pi/2, 0.95];     // RPY angles set with pitch = -%pi/2
   T = rt_rpy2tr(rpy2),
   // all solutions for which roll + yaw = -2.2 + 0.95 are equivalent in
   // their effects
   rpy2_a = rt_tr2rpy(T);               Ta = rt_rpy2tr(rpy2_a), 
   rpy2_b = [0, -%pi/2, -1.25];         Tb = rt_rpy2tr(rpy2_b),
   rpy2_c = [-2.1, -%pi/2, -1.25+2.1];  Tc = rt_rpy2tr(rpy2_c),
   rpy2_d = [2.85, -%pi/2, -1.25-2.85]; Td = rt_rpy2tr(rpy2_d),
   rpy2_e = [0.5, -%pi/2, -1.25-0.5];   Te = rt_rpy2tr(rpy2_e),

  

See Also

rt_rpy2tr,  rt_tr2eul,  

Authors

original Matlab version by

Peter I. Corke CSIRO Manufacturing Science and Technology

Scilab implementation by

Matteo Morelli Interdepartmental Research Center "E. Piaggio", University of Pisa

Bibliography

Corke, P.I. "A Robotics Toolbox for MATLAB", IEEE Robotics and Automation Magazine, Volume 3(1), March 1996, pp. 24-32

R. P. Paul, Robot Manipulators: Mathematics, Programming and Control. Cambridge, Massachusetts: MIT Press, 1981.

L. Sciavicco, B. Siciliano, Modelling and Control of Robot Manipulators. 2nd Edition, Springer-Verlag Advanced Textbooks in Control and Signal Processing Series, London, UK, 2000.

Get the Robotics Toolbox for Scilab/Scicos at SourceForge.net. Fast, secure and Free Open Source software downloads