kinfu.h接口大全

PCL的Kinfu中文资料比较少,看开源代码的头文件是一个不错的入手点,所以总结了Kinfu.h的一些接口用法供参考。


KinfuTracker类

 

KinfuTracker (int rows = 480, int cols = 640);

构造函数


setDepthIntrinsics、getDepthIntrinsics:

获取深度本来的信息x,y 焦距等信息


setInitalCameraPose、getInitalCameraPose:

快速初始化相机位置,并关联到体积坐标空间


setDepthTruncationForICP(float max_icp_distance= 0.f):

为ICP阶段设置截断阈值,过滤测试


setIcpCorespFilteringParams(float distThreshold,float sineOfAngle)

设置ICP过滤参数


setCameraMovementThreshold(float threshold =0.001f);

整合阈值


initColorIntegration(int max_weight = -1)

颜色初始化


bool operator() (const DepthMap& depth, Eigen::Affine3f* hint=NULL)

到下一帧


Eigen::Affine3f getCameraPose(int time = -1)const

给定时刻的相机位置


size_t getNumberOfPoses() const;

返回位置的个数,包括初始的位置


constTsdfVolume& volume() const;

TSDF立方体


constColorVolume& colorVolume() const;

带颜色立方体   


void getImage(View& view) const;

渲出3D场景       


void getLastFrameCloud(DeviceArray2D<PointType>& cloud) const;

返回上一个相机位置的点云(重要)

参数是点云数组


void getLastFrameNormals(DeviceArray2D<NormalType>& normals) const;

参数是法线


void disableIcp();

终止icp


private:

enum { LEVELS =3 };

金字塔层级分为3级


typedef DeviceArray2D<int> CorespMap;

定义CorespMap为ICP对应点映射


typedef DeviceArray2D<float> MapArr;

定义MapArr为顶点和法线映射


typedef Eigen::Matrix<float, 3, 3,Eigen::RowMajor> Matrix3frm;

定义3×3矩阵Matrix3frm,按行存储


typedef Eigen::Vector3f Vector3f;

定义3维向量Vector3f


int rows_;

深度图形高对应rows


int cols_;

深度图像对应cols


int global_time_;

帧计数器


float max_icp_distance_;

深度图像的截取阈值


float fx_, fy_,cx_, cy_;

相机内参,f焦距,c离中心点距离


TsdfVolume::Ptr tsdf_volume_;

TSDF立方体容器


ColorVolume::Ptr color_volume_;

带颜色的立方体容器               


Matrix3frm init_Rcam_;

在立方体的坐标空间中初始化相机的旋转参数


Vector3f init_tcam_;

在立方体的坐标空间中初始化相机的位置参数


int icp_iterations_[LEVELS];

各个层级的ICP有不同的迭代次数


float  distThres_;

距离阈值,用于相关点过滤


float angleThres_;

角度阈值       


std::vector<DepthMap> depths_curr_;

深度层级       


std::vector<MapArr> vmaps_g_curr_;

在当前帧下,全局坐标空间的顶点信息


std::vector<MapArr> nmaps_g_curr_;

在当前帧下,全局坐标空间下的法线信息


std::vector<MapArr> vmaps_g_prev_;

前一帧下,全局坐标空间的顶点信息


std::vector<MapArr> nmaps_g_prev_;

前一帧下,全局坐标空间的法线信息


std::vector<MapArr> vmaps_curr_;

在当前帧下,当前坐标空间的顶点信息


std::vector<MapArr> nmaps_curr_;

在当前帧下,当前坐标空间的法线信息


std::vector<CorespMap> coresps_;

数组缓冲区,ICP对应的不同层级      


DeviceArray2D<float>depthRawScaled_;

 缓冲存储扩展深度图像     


DeviceArray2D<double>gbuf_;

临时缓冲


DeviceArray<double>sumbuf_;

MLS矩阵


std::vector<Matrix3frm> rmats_;

每个时刻的相机旋转矩阵       


std::vector<Vector3f> tvecs_;

每个时刻的相机位置转移矩阵


float integration_metric_threshold_;

相机运动阈值


bool disable_icp_;

记录ICP是否完全终止       


void allocateBufffers(int rows_arg, intcols_arg);

分配所有GPU内部缓冲区


void reset ();

将追踪进程重置为初始状态,在相机追踪失败的时候调用

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值