数据结构
OCTO_TREE_ROOT
其中m_nOctoState_ 1代表0(unknown), 1(mid node), 2(plane)
PointCluster包含:计算点的方差
Eigen::Matrix3d P;
Eigen::Vector3d v;
int N;
IMUST
|__ double t{};
|__ Eigen::Matrix3d R;
|__ Eigen::Vector3d p;
|__ Eigen::Vector3d v;
|__ Eigen::Vector3d bg;
|__ Eigen::Vector3d ba;
|__ Eigen::Vector3d g;
#define PLM(a) std::vector<Eigen::Matrix<double, a, a>, Eigen::aligned_allocator<Eigen::Matrix<double, a, a>>>
#define PLV(a) std::vector<Eigen::Matrix<double, a, 1>,Eigen::aligned_allocator<Eigen::Matrix<double, a, 1>>>
流程
cut_voxel
先找有没有相同的点->是不是平面/mid(mid是啥)/unknown,分别计算该组点原始数据和变换数据,这里有个问题,为啥要拷贝多份点云,内存哪有这么大的。。。干嘛不把位姿图和原始点云传进去
然后分别将原始点云数据和变换点云数据压入到对应关键帧的buff里,顺便计算一下该关键帧所有点云的方差和均值;
Recut
judge_eigen
TransOpt
damping_iter
GitHub - hku-mars/BALM: An efficient and consistent bundle adjustment for lidar mapping