Eigen 四元數 尤拉角 旋轉矩陣 旋轉向量

2021-10-10 03:26:43 字數 2916 閱讀 9608

一、旋轉向量

1.0 初始化旋轉向量:旋轉角為alpha,旋轉軸為(x,y,z)

eigen::angleaxisd rotation_vector(alpha,vector3d(x,y,z))

1.1 旋轉向量轉旋轉矩陣

eigen::matrix3d rotation_matrix;

rotation_matrix=rotation_vector.matrix();

eigen::matrix3d rotation_matrix;

rotation_matrix=rotation_vector.torotationmatrix();

1.2 旋轉向量轉尤拉角(z-y-x,即rpy)

eigen::vector3d eulerangle=rotation_vector.matrix().eulerangles(2,1,0);

1.3 旋轉向量轉四元數

eigen::quaterniond quaternion(rotation_vector);

eigen::quaterniond quaternion;quaterniond quaternion;

eigen::quaterniond quaternion;quaternion=rotation_vector;

二、旋轉矩陣

2.0 初始化旋轉矩陣

eigen::matrix3d rotation_matrix;

rotation_matrix<2.1 旋轉矩陣轉旋轉向量

eigen::angleaxisd rotation_vector(rotation_matrix);

eigen::angleaxisd rotation_vector;

rotation_vector=rotation_matrix;

eigen::angleaxisd rotation_vector;

rotation_vector.fromrotationmatrix(rotation_matrix);

2.2 旋轉矩陣轉尤拉角(z-y-x,即rpy)

eigen::vector3d eulerangle=rotation_matrix.eulerangles(2,1,0);

2.3 旋轉矩陣轉四元數

eigen::quaterniond quaternion(rotation_matrix);

eigen::quaterniond quaternion;quaternion=rotation_matrix;

三、尤拉角

3.0 初始化尤拉角(z-y-x,即rpy)

eigen::vector3d eulerangle(yaw,pitch,roll);

3.1 尤拉角轉旋轉向量

eigen::angleaxisd rollangle(angleaxisd(eulerangle(2),vector3d::unitx()));

eigen::angleaxisd pitchangle(angleaxisd(eulerangle(1),vector3d::unity()));

eigen::angleaxisd yawangle(angleaxisd(eulerangle(0),vector3d::unitz()));

eigen::angleaxisd rotation_vector;rotation_vector=yawangle*pitchangle*rollangle;

3.2 尤拉角轉旋轉矩陣

eigen::angleaxisd rollangle(angleaxisd(eulerangle(2),vector3d::unitx()));

eigen::angleaxisd pitchangle(angleaxisd(eulerangle(1),vector3d::unity()));

eigen::angleaxisd yawangle(angleaxisd(eulerangle(0),vector3d::unitz()));

eigen::matrix3d rotation_matrix;rotation_matrix=yawangle*pitchangle*rollangle;

3.3 尤拉角轉四元數

eigen::angleaxisd rollangle(angleaxisd(eulerangle(2),vector3d::unitx()));

eigen::angleaxisd pitchangle(angleaxisd(eulerangle(1),vector3d::unity()));

eigen::angleaxisd yawangle(angleaxisd(eulerangle(0),vector3d::unitz()));

eigen::quaterniond quaternion;quaternion=yawangle*pitchangle*rollangle;

四、四元數

4.0 初始化四元數

eigen::quaterniond quaternion(w,x,y,z);

4.1 四元數轉旋轉向量

eigen::angleaxisd rotation_vector(quaternion);

eigen::angleaxisd rotation_vector;rotation_vector=quaternion;

4.2 四元數轉旋轉矩陣

eigen::matrix3d rotation_matrix;rotation_matrix=quaternion.matrix();

eigen::matrix3d rotation_matrix;rotation_matrix=quaternion.torotationmatrix();

4.4 四元數轉尤拉角(z-y-x,即rpy)

eigen::vector3d eulerangle=quaternion.matrix().eulerangles(2,1,0);

Eigen實現尤拉角 四元數和旋轉矩陣之間的變換

include相應的標頭檔案 include旋轉矩陣和旋轉向量的表示和宣告及旋轉 3d 旋轉矩陣直接使用 matrix3d 或 matrix3f eigen matrix3d rotation matrix eigen matrix3d identity 旋轉向量使用 angleaxis,它底層不直...

旋轉矩陣 尤拉角 四元數比較

旋轉矩陣 尤拉角 四元數主要用於 向量的旋轉 座標系之間的轉換 角位移計算 方位的平滑插值計算。旋轉矩陣 尤拉角 四元數比較 不同的方位表示方法適用於不同的情況。下面是我們對合理選擇格式的一些建議 1.尤拉角最容易使用。當需要為世界中的物體指定方位時,尤拉角能大大的簡化人機互動,包括直接的鍵盤輸入方...

方向向量轉尤拉角 旋轉矩陣 四元數

基於eigen庫實現演算法中的矩陣運算。輸入 方向向量vector3d tmpvec,參考單位向量vector3d zaxis 0,0,1 輸出 旋轉矩陣m eigen matrix3d m eigen vector3d zaxis 0,0,1 eigen vector3d tmpvec vx,vy...