Closed peitianyu closed 2 years ago
大佬,我看了您的
中,这里的T与V含义是什么?为什么要转换? Eigen::Matrix3d information = 1 Eigen::Matrix3d::Identity(); //information matrix Eigen::Matrix<float, 3, 3> T1 = slam.v2t( robotPoseCurr ); Eigen::Matrix<float, 3, 3> T2 = slam.v2t( keyPoses[loopId] ); Eigen::Matrix<float, 3, 3> T = T1.inverse() T2; Eigen::Vector3f V = slam.t2v( T ); optimizer.addEdge( V, keyFrameCount, loopId, information ); // add a loop constraint
这里T是当前机器人位姿到回环点的位姿坐标变换矩阵(齐次坐标变换,就是由旋转矩阵加平移组成的),V是当前机器人位姿到回环点的位姿的位姿增量[delta(x), delta(y), delta(theta)]。
理解了,感谢道锋大佬
大佬,我看了您的中,这里的T与V含义是什么?为什么要转换?
Eigen::Matrix3d information = 1 Eigen::Matrix3d::Identity(); //information matrix
Eigen::Matrix<float, 3, 3> T1 = slam.v2t( robotPoseCurr );
Eigen::Matrix<float, 3, 3> T2 = slam.v2t( keyPoses[loopId] );
Eigen::Matrix<float, 3, 3> T = T1.inverse() T2;
Eigen::Vector3f V = slam.t2v( T );
optimizer.addEdge( V, keyFrameCount, loopId, information ); // add a loop constraint