2017-02-02 171 views
0

我試圖初始化一個4x4矩陣,然後通過函數調用將值分配給矩陣。這產生了一個錯誤;在Eigen中初始化矩陣

EXC_BAD_ACCESS 

我知道這個錯誤發生在我嘗試在內存中訪問不可用或未分配的位置時。但根據Eigen文檔的例子,this是怎麼做到的。

這是我的頭文件初始化。

MatrixX4d T; 

這是我的實現文件函數調用。

MatrixX4d RobotArm::substitute(double theta, double alpha, double a, double d) 
{ 
    RobotArm::T << cos(theta), -sin(theta), 0, a, 
       (sin(theta)*cos(alpha)), (cos(theta)*cos(alpha)), -sin(alpha), (-sin(alpha)*d), 
       (sin(theta)*sin(alpha)),(cos(theta)*sin(alpha)), cos(alpha), (cos(alpha)*d), 
       0, 0, 0, 1; 
    cout << T; 
    return T; 
} 

我在做什麼錯?謝謝。

回答

0
MatrixX4d T 

是半動態矩陣。

相反,

Matrix4d T 

作品。

0

如果您想將MatrixX4d用作4x4,請先將其大小調整爲4x4。

T.resize(4, Eigen::NoChange);