2017-02-02 125 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);