視覚SLAM——第三章Eigen幾何学モジュールGeometryは四要素ヨーロッパ式変換行列を使用する


視覚SLAM——第三章
EigenジオメトリモジュールGeometry四要素ヨーロッパ変換行列を使用
githubリンククリックしてリンクを開く
博文の末尾はQRコードの賞賛を支持します^^;
*このプログラムでは、Eigenジオメトリモジュールの使用方法を説明します.
*回転ベクトルEigen::AngleAxisd角度軸Eigen::AngleAxisd rotation_vector ( M_PI/4, Eigen::Vector3d ( 0,0,1 ) );//Z軸に沿って45度回転
*回転行列Eigen::Matrix 3 d rotation_vector.toRotationMatrix();//回転ベクトルを回転マトリクスに変換
* Eigen::Matrix3d R = Eigen::AngleAxisd(M_PI/2, Eigen::Vector3d(0,0,1)).toRotationMatrix();//ちょくせつかいてん
 
*オーラ角Eigen::Vector 3 d rotation_matrix.eulerAngles ( 2,1,0 );//(2,1,0)はZYXシーケンスを表し,すなわちroll pitch yawシーケンス回転行列がEuler角からEuler角に変換される
 
*4要素Eigen::Quaterniond q=Eigen::Quaterniond(rotation_vector);//回転ベクトル定義四要素
* q = Eigen::Quaterniond ( rotation_matrix );//回転マトリクス定義四要素
 
*欧式変換行列Eigen::Isometry 3 d T=Eigen::Isometry 3 d::Identity();//3 dと呼ぶが実質的に4*4のマトリクス回転R+平行移動T
 
* T.rotate ( rotation_vector );//rotation_に従ってvector回転
*Eigen::Isometry 3 d T(q)/一歩四要素で表す回転変換行列
* T.pretranslate ( Eigen::Vector3d ( 1,3,4 ) );//パンベクトルを(1,3,4)に設定
*出力cout<#include #include using namespace std; #include // Eigen #include /**************************** * Eigen ****************************/ int main ( int argc, char** argv ) { // d , f , , // Eigen/Geometry // 3D Matrix3d Matrix3f /**** ****/ // AngleAxis, Matrix, ( ) // , // 。 // , , 。 /*********************************/ /*   Z 45   */ Eigen::AngleAxisd rotation_vector ( M_PI/4, Eigen::Vector3d ( 0,0,1 ) ); // Z 45 cout .precision(3); cout< t1;//float t1 << 0.3,0.1,0.1; Eigen::Quaterniond q2(-0.5,0.4,-0.1,0.2); //q2 << -0.5,0.4,-0.1,0.2; Eigen::Matrix t2;//float t2 << -0.1,0.5,0.3; Eigen::Matrix p1;//float p1 << 0.5,0,0.2; cout< pw=Tc1w.inverse()*p1; // c1 p1 world Eigen::Matrix3d q2rotation_matrix = Eigen::Matrix3d::Identity();// q2rotation_matrix=q2.toRotationMatrix(); Eigen::Isometry3d Tc2w=Eigen::Isometry3d::Identity();// 3d, 4*4    Tc2w.rotate (q2rotation_matrix ); // q1rotation_matrix Tc2w.pretranslate ( t2); // t1 Eigen::Matrix p2=Tc2w*pw; // world pw c2 cout<