Is your documentation using a fixed axis or rotating axis (extrinsic or intrinsic rotation?)
The URDF documentation is using a fixed axis rotation. This is described in more detail here: REP 103
Also, here: Rotation Methods (ROS)
If your documentation is using rotating axis (intrinsic rotation) there is no problem as ypr
on a rotating axis is same as rpy
on a fixed axis.
Otherwise:
The easiest way might to convert rotations between Euler angles is to use an intermediate representation like a quaternion.
In ROS if you are using Python, you can use the transformations.py
module mentioned here (with a link to the full source): transformations.py
Example Python session using this (first way is with quaternions, second with matrices):
$ python
Python 2.7.3 (default, Jul 5 2013, 08:52:38)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import transformations
>>> import math
>>> q=transformations.quaternion_from_euler(math.pi,0,0,'szyx')
>>> q
array([ 0.00000000e+00, -0.00000000e+00, 1.00000000e+00,
6.12303177e-17])
>>> transformations.euler_from_quaternion(q,'sxyz')
(0.0, -0.0, 3.141592653589793)
>>> m=transformations.euler_matrix(math.pi,0,0,'szyx')
>>> m
array([[ -1.00000000e+00, -1.22460635e-16, -0.00000000e+00,
0.00000000e+00],
[ 1.22460635e-16, -1.00000000e+00, 0.00000000e+00,
0.00000000e+00],
[ -0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
1.00000000e+00]])
>>> transformations.euler_from_matrix(m,'sxyz')
(0.0, 0.0, 3.141592653589793)