KDL與Eigen資料轉換

2021-08-10 11:06:16 字數 1944 閱讀 8990

在ros使用過程中,kdl和eigen是使用比較多的兩個庫了,兩個庫都各有優勢。

比如kdl是針對機械人運動學的,可以用來求解正逆向運動學,速度、雅克比矩陣等,也支援力的表述,很方便,但對矩陣運算卻不是那麼方便,eigen有著強大的矩陣計算能力。其實kdl內部有些資料結構也是採用eigen的,比如jntarray,它的成員data就是乙個vectorxd。

在前幾天使用過程中,需要轉換資料型別,有點懶不想自己寫,就查了一下,還真的查到了乙個:eigen_conversions   . 

使用的時候需要包含標頭檔案 #include

這個標頭檔案裡包含的函式有:

void

quaternionkdltoeigen(const kdl::rotation &k, eigen::quaterniond &e);

/// converts an eigen quaternion into a kdl rotation

void

quaternioneigentokdl(const eigen::quaterniond &e, kdl::rotation &k);

/// converts a kdl frame into an eigen affine3d

void

transformkdltoeigen(const kdl::frame &k, eigen::affine3d &e);

/// converts a kdl frame into an eigen isometry3d

void

transformkdltoeigen(const kdl::frame &k, eigen::isometry3d &e);

/// converts an eigen affine3d into a kdl frame

void

transformeigentokdl(const eigen::affine3d &e, kdl::frame &k);

/// converts an eigen isometry3d into a kdl frame

void

transformeigentokdl(const eigen::isometry3d &e, kdl::frame &k);

/// converts a kdl twist into an eigen matrix

void

twistkdltoeigen(const kdl::twist &k, eigen::matrix &e);

/// converts an eigen matrix into a kdl twist

void

twisteigentokdl(const eigen::matrix &e, kdl::twist &k);

/// converts a kdl vector into an eigen matrix

void

vectorkdltoeigen(const kdl::vector &k, eigen::matrix &e);

/// converts an eigen matrix into a kdl vector

void

vectoreigentokdl(const eigen::matrix &e, kdl::vector &k);

/// converts a kdl wrench into an eigen matrix

void

wrenchkdltoeigen(const kdl::wrench &k, eigen::matrix &e);

/// converts an eigen matrix into a kdl wrench

void

wrencheigentokdl(const eigen::matrix &e, kdl::wrench &k);

這裡面有常見需要用到的型別轉換,可以輕鬆將kdl的資料轉為eigen的資料結構,從而方便進行矩陣運算。

Eigen實現座標轉換

視覺slam十四講 第三講習題7 設有小蘿蔔一號和二號在世界座標系中。一號位姿q1 0.35,0.2,0.3,0.1 t1 0.3,0.1,0.1 二號位姿q2 0.5,0.4,0.1,0.2 t2 0.1,0.5,0.3 某點在一號座標系下座標為p 0.5,0,0.2 求p在二號座標系下的座標 假...

Eigen實現座標轉換

視覺slam十四講 第三講習題7 設有小蘿蔔一號和二號在世界座標系中。一號位姿q1 0.35,0.2,0.3,0.1 t1 0.3,0.1,0.1 二號位姿q2 0.5,0.4,0.1,0.2 t2 0.1,0.5,0.3 某點在一號座標系下座標為p 0.5,0,0.2 求p在二號座標系下的座標 假...

Eigen 7 Geometry 幾何轉換

官方位址傳送 space transformations 變換矩陣 eigen isometry3d t t.matrix 才是變換矩陣,做運算時需加.matrix 字尾 t.pretranslate 以及t.prerotate 可以給平移部分和旋轉矩陣賦值,但是若迴圈中使用,末尾不重置變換矩陣的話...