欧拉角代表一系列的三维基本旋转, 也就是围绕一个坐标系的各轴的一系列旋转。例如,首先绕z轴旋转一个α角,然后绕x轴做一个β角的旋转,最后再绕z轴来一个γ角的旋转。
任何关于使用欧拉角的讨论都要以他们的定义方式为先导。
经典欧拉角
定义坐标系E下的欧拉角(α,β,r)
α(z),β(x),r(z)
两种等价的旋转理解方案
1.绕[坐标系E]下的z轴旋转α,绕[坐标系E在绕z轴旋转α后的新系E']下的x'轴旋转β,绕[坐标系E'在绕y'轴旋转β后的新系E'']下的z''轴旋转r,三个矩阵的复合
2.绕[坐标系E]下的z轴旋转r,绕[坐标系E]下的x轴旋转β,绕[坐标系E]下的z轴旋转α,三个矩阵的复合
这其实就是内旋和外旋之间的差异。
相对变换后的(当前的,自身的)坐标系做变换称为内旋。z-x'-z''
相对初始的(固定的)坐标系做变换称为外旋z-x-z
注意两种方案参照坐标系不同,效果等价,但在计算时的变换顺序是不一样的。
R=Z(r)Y(β)X(α)
R=X(α)Y(β)Z(r)
一个和上图相同的旋转 (γ, β, α) = (45°, 30°, −60°), z-x-z序列 外旋
泰特-布莱恩角
欧拉角的第二种表达形式被叫做Tail-Bryan角,定义和表示与经典欧拉角的表示方法类似。
唯一的不同是 Tail-Bryan角 使用三个轴上的旋转角度去表示。(例如 z-y-x或者z-y'-x''),
然而经典欧拉角的第一个旋转角度和第三个旋转角度都是围绕同一个轴的(z-x-z,或者 z-x'-z'')
(Tail-Bryan角。z-y'-x''顺序, 序列(内旋; N 与 y’重合))
yaw偏航(绕z旋转), pitch俯仰(绕y'旋转) 和 roll翻滚(绕x''旋转)
ROS urdf file 的rpy属性就是欧拉角第二种表达形式,对应的是roll, pitch,yaw(绕x,y,z)三个方向的弧度
如
<origin xyz="-0.5 0.5 0" rpy="0 0 1.57" />
参考
http://blog.csdn.net/bnrmaster/article/details/47125821
http://blog.sina.com.cn/s/blog_8e6c5b220102wtpd.html 计算泰特-布莱恩角旋转