視覺SLAM學習 Eigen幾何模組使用方法

2021-10-08 12:45:35 字數 1472 閱讀 5474

**標頭檔案包含:

#include #include using namespace eigen;
旋轉向量 角1+軸3 『angleaxisd』

旋轉矩陣 3 * 3 『matrix3d』

尤拉角 3 * 1 『vector3d』

四元數 4 * 1 『quaterniond』

歐式變換矩陣、仿射矩陣、射影矩陣 4 * 4 『 isometry3d、affine3d、projective3d』

//旋轉向量->矩陣形式 

.matrix()

//旋轉向量->旋轉矩陣

.torotationmatrix()

//旋轉矩陣->尤拉角

.eulerangles(2, 1, 0); // zyx順序,即yaw-pitch-roll順序

//歐式變換矩陣建立

t.rotate(rotation_vector); // 按照rotation_vector旋轉向量進行旋轉

t.pretranslate(vector3d(1, 3, 4)); // 把平移向量設成(1,3,4)

//四元數建立

quaterniond q = quaterniond(rotation_vector); //按照旋轉向量進行建立

q.coeffs().transpose() // 請注意coeffs的順序是(x,y,z,w),w為實部,前三者為虛部

// 使用四元數旋轉乙個向量,使用過載的乘法即可

v_rotated = q * v; // 注意數學上是q*v*q^

// 用常規向量乘法表示,則應該如下計算

cout << "should be equal to " << (q * quaterniond(0, 1, 0, 0) * q.inverse()).coeffs().transpose() << endl;

#include #include using namespace std;

#include #include using namespace eigen;

// 本程式演示了 eigen 幾何模組的使用方法

int main(int argc, char **ar**)

cout << "(1,0,0) after rotation = " << v_rotated.transpose() << endl;

// 用常規向量乘法表示,則應該如下計算

cout << "should be equal to " << (q * quaterniond(0, 1, 0, 0) * q.inverse()).coeffs().transpose() << endl;

return 0;

}

視覺SLAM(一) 視覺SLAM框架

主要參考書目是高翔博士的 視覺slam十四講 中間會記錄一些個人實踐經驗和思考。slam伴隨著機器視覺發展和機械人導航已經相對成熟,形成了合理高效的基本框架。主要包含 感測器資料 前端視覺里程計 後端優化 回環檢測 建圖。採集根據不同應用場景和需求進行選擇,主要有如下幾種感測器 也就是單獨乙個攝像機...

Eigen 幾何變換

筆記 題目 已知旋轉矩陣定義是沿著z軸旋轉45 請按照該定義初始化旋轉向量 旋轉矩陣 四元數 尤拉角。請程式設計實現 1 以上四種表達方式的相互轉換關係並輸出 2 假設平移向量為 1,2,3 請輸出旋轉矩陣和該平移矩陣構成的歐式變換矩陣,並根據歐式變換矩陣提取旋轉向量及平移向量 本程式學習目標 1 ...

視覺slam第三講筆記 矩陣運算Eigen庫

內積 a b a ba b外積 a b a b a times b hat a b a b a b,其中 a hat a a 為a aa的反對稱矩陣表示 a b 0 a3a2 a30 a1 a 2a10 b a times b begin 0 a a a 0 a a a 0 endb a b 0a3...