相机相对于世界坐标系的旋转:
-
通常表示:世界坐标系到相机坐标系的旋转矩阵
-
记为:Rcw (这一点和SLAM十四讲中一致,见第二版P47)
-
含义:将一个点从世界坐标系转换到相机坐标系的旋转
世界相对于相机坐标系的旋转:
-
通常表示:相机坐标系到世界坐标系的旋转矩阵
-
记为:Rwc
相机位姿一般指:世界坐标系到相机坐标系的旋转矩阵 。
欧拉角转旋转矩阵
如果你指的是 Extrinsic 旋转(绕固定世界轴)

旋转方式1:

外旋X-Y-Z

旋转方式2:
顺序:先绕世界 Z(φ),再绕世界 Y(θ),再绕世界 X(ψ)
则总旋转矩阵为:R=Rx(ψ)⋅Ry(θ)⋅Rz(ϕ)

Eigen转换函数
Eigen::Quaterniond Quat= Eigen::AngleAxisd(yaw, Vector3d::UnitZ())
*Eigen::AngleAxisd(pitch, Vector3d::UnitY())
*Eigen::AngleAxisd(roll, Vector3d::UnitX());
Eigen::Matrix3d rot=Quat.normalized().toRotationMatrix();
旋转矩阵转欧拉角
Eigen转换函数
Eigen:: eulerAngles()参数 (2, 1, 0) 表示旋转顺序:eulerAngles(2,1,0) 按照轴(Z→Y→X)的顺序进行旋转---->返回的欧拉角次序:
cout<<" euler_angles(0) yaw= "<<euler_angles(0)<<std::endl;
cout<<" euler_angles(1) pitch="<<euler_angles(1)<<std::endl;
cout<<" euler_angles(2) roll= "<<euler_angles(2)<<std::endl;
实例
输入的roll、pitch、yaw,按照Rz*Ry*Rx旋转,R = Rz*Ry*Rx表示的是从相机到世界坐标的转换