Matrix 矩阵计算问题,理论推导与代码结果不符

Matrix 矩阵计算问题,理论推导与代码结果不符,matrix,eigen3,Matrix,Eigen3,我想解决以下问题: 点Pw位于世界坐标系中。C0坐标系和Co坐标中的Pw为Pc0。现在,我将C0坐标系转换为C1坐标系,问:我如何将Pw主体转换为Pc0=Pc1。 显示了如何计算变换T 下面是确认结果的代码,不幸的是,Pc0!=Pc1。我不知道计算出了什么问题。你能提供一些建议吗?非常感谢 int main() { //Pw Eigen::Vector3d Pw ( 1,0,0 ); //Tc0w Eigen::AngleAxisd rotation_vecto

我想解决以下问题: 点Pw位于世界坐标系中。C0坐标系和Co坐标中的Pw为Pc0。现在,我将C0坐标系转换为C1坐标系,问:我如何将Pw主体转换为Pc0=Pc1。 显示了如何计算变换T

下面是确认结果的代码,不幸的是,Pc0!=Pc1。我不知道计算出了什么问题。你能提供一些建议吗?非常感谢

int main() {
    //Pw
    Eigen::Vector3d Pw ( 1,0,0 );

    //Tc0w
    Eigen::AngleAxisd rotation_vector_c0w ( M_PI/2, Eigen::Vector3d ( 1,0,0 ) );
    Eigen::Matrix3d Rc0w = rotation_vector_c0w.toRotationMatrix();
    Eigen::Vector3d tc0w (1,2,3);
    Eigen::Isometry3d Tc0w=Eigen::Isometry3d::Identity();               
    Tc0w.rotate ( rotation_vector_c0w );                                     
    Tc0w.pretranslate ( tc0w );
    std::cout << "Transform matrix Tc0w= \n" << Tc0w.matrix() <<std::endl;

    //Pc0
    Eigen::Vector3d Pc0 = Tc0w*Pw;
    std::cout<<"Pc0:"<<std::endl<<Pc0<<std::endl;

    //Tc1c0
    Eigen::AngleAxisd rotation_vector_c1c0 ( M_PI/4, Eigen::Vector3d ( 1,1,0 ) );
    Eigen::Vector3d tc1c0 (1,2,3);
    Eigen::Isometry3d Tc1c0=Eigen::Isometry3d::Identity();                
    Tc1c0.rotate ( rotation_vector_c1c0 );                                     
    Tc1c0.pretranslate ( tc1c0 );
    std::cout << "Transform matrix Tc1c0= \n" << Tc1c0.matrix() <<std::endl;
    std::cout << "Transform matrix Tc0c1= \n" << Tc1c0.inverse().matrix() <<std::endl;

    //compute T
    Eigen::Isometry3d T = Tc0w.inverse()* Tc1c0.inverse()*Tc0w;
    std::cout << "Transform matrix T= \n" << T.matrix() <<std::endl;

    //confirm Pc1
    Eigen::Vector3d Pc1 = Tc1c0*Tc0w*T*Pw;
    std::cout<<"Pc1 = "<<std::endl<<Pc1<<std::endl;
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
intmain(){
//嗯
本征::矢量三维Pw(1,0,0);
//Tc0w
本征::角轴旋转_向量_c0w(M_PI/2,本征::向量3D(1,0,0));
特征::矩阵x3d Rc0w=旋转向量旋转矩阵();
本征::矢量三维tc0w(1,2,3);
Eigen::Isometry3d Tc0w=Eigen::Isometry3d::Identity();
Tc0w.rotate(旋转向量);
Tc0w。预翻译(Tc0w);

std::cout
角度轴
需要标准化的旋转轴。请尝试以下操作:

Eigen::AngleAxisd rotation_vector_c1c0 ( M_PI/4, Eigen::Vector3d ( 1,1,0 ).normalized() );
文档的相应链接:
是的!你说得对。我很粗心,非常感谢。