**庫:
上篇文章主要寫了三維剛體運動的一些理論知識。
這部分實踐主要介紹使用eigen來表示矩陣、向量,隨後引申至旋轉矩陣和變換矩陣的計算。
在實踐之前,您需要安裝eigen庫,網上有很多安裝教程,相信難不倒大家,然後就廢話少說,直接上**:
**檔名:eigenmatrix.cpp
#include using namespace std;
#include // eigen 部分
#include // 稠密矩陣的代數運算(逆,特徵值等)
#include #define matrix_size 50
/****************************
* 本程式演示了 eigen 基本型別的使用
****************************/
int main( int argc, char** ar** )
要編譯它,需要在cmakelists.txt裡指定eigen的頭檔案目錄:
#新增標頭檔案
include_directories("/usr/include/eigen3")
注:因為eigen庫中只有標頭檔案,所以不需要再用target_link_libraries語句將程式鏈結到庫上。在之後的工作中,我們會使用find_package命令去搜尋庫。
然後就可以編譯好這個程式後,執行它(步驟看之前文章)。
現在我們來實踐演練下前面講到的各種旋轉表達方式。我們將在eigen中使用四元數、尤拉角和旋轉矩陣,演練它們之間的變換關係。
檔名:usegeometry.cpp
#include #include using namespace std;
#include // eigen 幾何模組
#include /****************************
* 本程式演示了 eigen 幾何模組的使用方法
****************************/
int main ( int argc, char** ar** )
{ // eigen/geometry 模組提供了各種旋轉和平移的表示
// 3d 旋轉矩陣直接使用 matrix3d 或 matrix3f
eigen::matrix3d rotation_matrix = eigen::matrix3d::identity();
// 旋轉向量使用 angleaxis, 它底層不直接是matrix,但運算可以當作矩陣(因為過載了運算子)
eigen::angleaxisd rotation_vector ( m_pi/4, eigen::vector3d ( 0,0,1 ) ); //沿 z 軸旋轉 45 度
cout .precision(3);
cout<<"rotation matrix =\n"《編譯執行就好了。
視覺SLAM十四講 三 三維空間剛體運動 下
理論部分請看 三維空間剛體運動 首先安裝 eigen sudo apt get install libeigen3 dev一般都安裝在 usr include eigen3 中 include include using namespace std eigen 部分 include 稠密矩陣的代數運...
視覺SLAM十四講 三 三維空間剛體運動 下
理論部分請看 三維空間剛體運動 首先安裝 eigen sudo apt get install libeigen3 dev一般都安裝在 usr include eigen3 中 include include using namespace std eigen 部分 include 稠密矩陣的代數運...
slam十四講(一)三維空間剛體運動
外積的方向垂直於這兩個向量,大小為 a b sin a,b 是兩個向量張成的四邊形的有向面積。且外積可以表達旋轉矩陣。其中這個為反對稱矩陣,寫作a 我們把中間的陣拿出來,定義成乙個矩陣 r。這個矩陣由兩組基之間的內積組成,刻畫了旋轉前後同乙個向量的座標變換關係。只要旋轉是一樣的,那麼這個矩陣也是一樣...