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