/*弧度 角度 */
#define pai 3.141592653589793
#define radian
(pai / 180.0 ) //弧度 = 角度 * π / 180
#define angle (180.0 / pai ) //角度 = 弧度 * 180 / π
2、旋轉矩陣轉換為尤拉角
/**
* @brief 已知旋轉矩陣求尤拉角
* @param arr : 旋轉矩陣陣列 n o a
* @retval 尤拉角(弧度值) 偏航角,俯仰角,滾動角 */
float *matrix_eulerian_angle(float *arr)
e[0] = atan2(t[1],t[0]);//ny/nx
e[1] = atan2(-1*t[2],(t[0]*cos(e[0])+t[1]*sin(e[0])));//nz/(nx+ny)
e[2] = atan2((t[6]*sin(e[0])-t[7]*cos(e[0])),(-1*t[3]*sin(e[0])+t[4]*cos(e[0])));//ax-ay/-ox+oy
return e; }
3、尤拉角轉換為旋轉矩陣
/**
* @brief 已知尤拉角(角度值)求旋轉矩陣
* @param arr : 尤拉角(弧度值) 偏航角,俯仰角,滾動角
* @retval */
eulerian_angle_matrix(float *arr)
/*n*/
t[0] = 1*(cos(e[0])*cos(e[1]));
t[1] = 1*(sin(e[0])*cos(e[1]));
t[2] = -1*(sin(e[1]));
/*o*/
t[3] = 1*(cos(e[0])*sin(e[1])*sin(e[2])-sin(e[0])*cos(e[2]));
t[4] = 1*(sin(e[0])*sin(e[1])*sin(e[2])+cos(e[0])*cos(e[2]));
t[5] = 1*(cos(e[1])*sin(e[2]));
/*a*/
t[6] = 1*(cos(e[0])*sin(e[1])*cos(e[2])+sin(e[0])*sin(e[2]));
t[7] = 1*(sin(e[0])*sin(e[1])*cos(e[2])-cos(e[0])*sin(e[2]));
t[8] = 1*(cos(e[1])*cos(e[2]));
return t; }
注意:繞的軸不一樣,t和e的對應關係也不一樣。
機械人學中旋轉矩陣與尤拉角之間互換公式及程式
弧度 角度 define pai 3.141592653589793 define radian pai 180.0 弧度 角度 180 define angle 180.0 pai 角度 弧度 180 2 旋轉矩陣轉換為尤拉角 brief 已知旋轉矩陣求尤拉角 param arr 旋轉矩陣陣列 n...
旋轉矩陣與尤拉角之間互換公式
pai 180.0 弧度 角度 180 define angle 180.0 pai 角度 弧度 180 2 旋轉矩陣轉換為尤拉角 brief 已知旋轉矩陣求尤拉角 param arr 旋轉矩陣陣列 n o a retval 尤拉角 弧度值 偏航角,俯仰角,滾動角 float matrix eule...
Dlib姿態估計 旋轉矩陣與尤拉角互轉
在這篇文章中,我將分享將乙個3 3旋轉矩陣轉換成尤拉角的 反之亦然。3d旋轉矩陣可以讓你的頭旋轉。我知道這是乙個壞的雙關語,但真相有時可能是非常小的!乙個旋轉矩陣有三個自由度,數學家已經行使了他們的創造自由,以每個想象的方式來表示3d旋轉 或使用三個數字 或使用四個數字 或使用乙個3 3矩陣。還有很...