在特征中初始化矩阵

Initializing matrix in Eigen

本文关键字:初始化 特征      更新时间:2023-10-16

我正在尝试初始化一个 4x4 矩阵,然后稍后通过函数调用为矩阵赋值。这会产生错误;

EXC_BAD_ACCESS

我知道当我尝试访问内存中不可用或未分配的位置时会发生此错误。但根据 Eigen 文档示例,这就是这样做的方法。

这是我的头文件初始化。

    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;
}

我做错了什么?谢谢。

MatrixX4d T 

是半动态矩阵。

相反

Matrix4d T

工程。

如果要

将 MatrixX4d 用作 4x4,请先将其大小调整为 4x4。

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