softdream / Slam-Project-Of-MyOwn

手写2D激光slam框架,基于图优化,scan to map 和回环检测
Apache License 2.0
53 stars 24 forks source link

后端优化 #2

Closed peitianyu closed 2 years ago

peitianyu commented 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

softdream commented 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)]。

peitianyu commented 2 years ago

理解了,感谢道锋大佬