【從理論到代碼】旋轉矩陣與歐拉角 一

本篇主要是結合odom座標系與相機座標系之間的轉換,可以用於將odom數據與視覺slam進行融合時的位姿計算;

主要分爲兩部分,第一部分講述旋轉矩陣與歐拉角之間的轉換;第二部分講述如何將odom的位移和角度轉換到相機座標系下;

假設空間中的任意一點  

繞Z軸旋轉了度,那麼求旋轉後的座標,這裏我直接給出自己的推導:

假設旋轉之後的點爲,A點與X軸的夾角爲beta,A點到原點的距離爲L,那麼我們可以得出以下幾條式子:     

按照三角函數的倍角公式展開代入L和的表達式化簡之後有

寫出矩陣形式有

儘管圖示中僅僅表示的是旋轉一個銳角的情形,但是我們推導中使用的是三角函數的基本定義來計算座標的,因此當旋轉的角度是任意角度(例如大於180度,導致A’點進入到第四象限)結論仍然是成立的。

同理可得其他兩個軸的旋轉矩陣如下

繞x軸旋轉的alpha矩陣:

繞y軸旋轉的alha矩陣:

由角度值轉換成旋轉矩陣的過程中需要注意兩種情況,一種是繞固定軸旋轉,一種是繞動態軸旋轉。

以slam中的機器人的odom座標系和相機座標系爲例:

這兩種座標系的關係圖如下所示:(兩個座標系都符合右手法則)

以機器人的前進方向來說,當機器在向前方行進時,在座標系中表示,即爲向odom的x方向前進,向相機座標系的z軸方向前進。

同理,odom座標系的y軸正方向,與相機座標系的x軸整方向差一個負號,表示成公式即爲(不考慮平移):

cam.x = -odom.y;
cam.y = -odom.z;
cam.z = odom.x;

這種從odom座標系到cam座標系的關係 用固定軸和動態軸旋轉方式表示分別如下:

對應在ORBSLAM中R矩陣的書寫方式爲Roc,即從odom座標系旋轉到cam座標系

固定軸: 嚴格按照[x,y,z]的順序:先繞odom座標系的x軸逆時針旋轉90度,再繞odom座標系的y軸旋轉0度,再繞odom座標系的z軸旋轉-90度;

動軸:  嚴格按照[z,y,x]的順序:線繞odom的座標系的z軸逆時針旋轉-90度,再繞新odom的y軸旋轉0度,再繞新odom的x軸逆時針旋轉90度;

每一次旋轉都會生成一個旋轉矩陣,在拼接成最終的旋轉矩陣時的順序,都是Rotation = rotationZ*rotaionY*rotaionX;

因此,最後的R= [0, 0, 1; -1, 0, 0; 0,-1,0] 

用Eigen來生成這個矩陣就是: (這裏需要注意,在Eigen中傳入的值是弧度值,而非角度值,所以要將-90 度轉換爲 -90.0*M_PI/180)

Eigen::Vector3d xyztheta(-90.0*M_PI/180, 0 ,-90*M_PI/180);
Eigen::Matrix<double,3,3> Reigen;
Reigen = Eigen::AngleAxisd(xyzangles[2],Eigen::Vector3d::UnitZ()) *
         Eigen::AngleAxisd(xyzangles[1],Eigen::Vector3d::UnitY())*
         Eigen::AngleAxisd(xyzangles[0],Eigen::Vector3d::UnitX());

這樣計算出來的旋轉矩陣

同理,如果已知旋轉矩陣,想要轉換成物體旋轉各個表示方法之間的轉換舉例:

以cam1 爲參考, 其R矩陣爲單位陣, cam2相對與cam1之間的旋轉矩陣爲RotationMatrix,如下:

RotationMatrix << 0.539026 ,- 0.0785835, 0.838615,
        0.0609289 ,0.996668, 0.0542316,
        - 0.840082, 0.0218637, 0.542018;
Eigen::Vector3d euler_angles=RotationMatrix.eulerAngles(2,1,0);
     std::cout << "yaw(Z) pitch(Y) roll(X)=\n" << euler_angles.transpose() << std::endl;

將旋轉矩陣轉換成爲歐拉角之後 yaw(Z) pitch(Y) roll(X)=0.112557  0.997435 0.0403156
 這三個數分別代表了cam2繞cam1的各個軸之間的旋轉弧度值,其範圍爲-Π<x<Π , 因此實際的角度值分別爲0.112557/pi*180;   0.997435/pi*180  0.0403156/pi*180

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章