欧拉角及Eigen库中eulerAngles函数的理解

欧拉角方向

以右手坐标系为例,大拇指表示X轴,食指表示Y轴,中指表示Z轴。

大拇指朝向某个轴的正方向,手掌弯曲的方向即为某个轴欧拉角的正方向。

欧拉角及Eigen库中eulerAngles函数的理解_第1张图片欧拉角及Eigen库中eulerAngles函数的理解_第2张图片

 Eigen库中eulerAngles函数

旋转矩阵转欧拉角(Z-Y-X,即RPY)
Eigen::Vector3d eulerAngle=rotation_matrix.eulerAngles(2,1,0);

eulerAngles(a, b, c),3个形参中a代表第一个旋转轴、b代表第二个旋转轴、c代表第三个旋转轴。

这个函数中,数字2表示Z轴,1表示Y轴,0表示X轴 ,eulerAngles(2,1,0)就表示旋转顺序为ZYX。

eulerAngle(0) 表示绕第一个轴的旋转角度。

eulerAngle(1) 表示绕第二个轴的旋转角度。

eulerAngle(2) 表示绕第三个轴的旋转角度。

例1:旋转顺序为:Z-Y-X (Y-P-R)

rpy角(专有名词)的旋转顺序就是这个顺序,Z-Y-X。

Eigen::Vector3d eulerAngle=rotation_matrix.eulerAngles(2,1,0);

float Roll = eulerAngle(2);   
float Pitch = eulerAngle(1); 
float Yaw = eulerAngle(0);

例2:旋转顺序为:X-Y-Z (R-P-Y)

Eigen::Vector3d eulerAngle=rotation_matrix.eulerAngles(0,1,2);

float Roll = eulerAngle(0);   
float Pitch = eulerAngle(1); 
float Yaw = eulerAngle(2);

九轴IMU输出的RPY

九轴 IMU 输出的欧拉角通常是描述从当前 IMU(传感器)坐标系到惯性坐标系(通常是ENU坐标系)的旋转变换。

九轴IMU输出的欧拉角的顺序通常由制造商或设备规格指定。通常的惯例是采用Z-Y-X(Yaw-Pitch-Roll)的顺序,也被称为航向-俯仰-横滚(Heading-Pitch-Roll,或者Yaw-Pitch-Roll)。

你可能感兴趣的:(SLAM学习笔记,算法,机器人)