安装完成后其api文档目录
/usr/local/share/doc/libpointmatcher/api/html/index.html
可用命令
firefox /usr/local/share/doc/libpointmatcher/api/html/index.html
打开
其参考文献为
Tracking a Depth Camera: Parameter Exploration for Fast ICP
ICP
libpointmatcher中,每一个模块都是一个类,每一个类会定义一些自己的控制参数,所以使用一个yaml文件来输入控制参数.ICP的输入为两个点云,输出是两个点云之间的旋转和平移变换的估计.一般称第一个点云叫做参考点云(reference),第二叫reading(怎么翻译?). ICP首先会对两幅点云做滤波处理(PointMatcher::DataPointsFilters) ,然后对两幅点云进行匹配(PointMatcher::Matcher),去掉外围点(PointMatcher::OutlierFilters),计算能使配准误差最小(PointMatcher::ErrorMinimizer)的变换参数(PointMatcher::TransformationParameters) .
软件架构
所有的类都是PointMatcher的子类,它定义了点的类型,float或者double.
类
template<typename T>
struct PointMatcher< T >::DataPoints
点云保存点数据的类,包括feature和descriptor. feature主要是指它的坐标,可以用其次坐标来表示, descriptor是指该点的法向量,颜色等等。
对于DataPoints的初始化,features与featurelabels和descriptor和descriptorlabels要成对的出现,例如这个构造函数
PointMatcher<T>::DataPoints::DataPoints(const Matrix& features, const Labels& featureLabels, const Matrix& descriptors, const Labels& descriptorLabels)
成对的初始化了一个datapoints
添加一个目前名字为name维数为dim的不存在的descriptor
void PointMatcher<T>::DataPoints::allocateDescriptor(const std::string& name, const unsigned dim)
添加一个目前名字为name维数为dim的不存在的feature
void PointMatcher<T>::DataPoints::allocateFeature(const std::string& name, const unsigned dim)
eigen中matrix类的用到的函数:
void conservativeResize ( Index nbRows, Index nbCols ) 在保留原来的数据下重新改变矩阵大小