Spec-Zone.ru › PointCloudLibrary

Глобальное согласованное сканирование, основанное на алгоритме Лу и Милиоса. Подробнее...

#include <pcl/registration/lum.h>

Классы

struct EdgeProperties
struct VertexProperties

Публичные типы

using Ptr = shared_ptr< LUM< PointT > >
using ConstPtr = shared_ptr< const LUM< PointT > >
using PointCloud = pcl::PointCloud< PointT >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using SLAMGraph = boost::adjacency_list< boost::eigen_vecS, boost::eigen_vecS, boost::bidirectionalS, VertexProperties, EdgeProperties, boost::no_property, boost::eigen_listS >
using SLAMGraphPtr = shared_ptr< SLAMGraph >
using Vertex = typename SLAMGraph::vertex_descriptor
using Edge = typename SLAMGraph::edge_descriptor

Публичные функции-члены

LUM ()
Пустой конструктор. Подробнее...
void setLoopGraph (const SLAMGraphPtr &slam_graph)
Установить внутреннюю структуру графа SLAM. Подробнее...
SLAMGraphPtr getLoopGraph () const
Получить внутреннюю структуру графа SLAM. Подробнее...
SLAMGraph::vertices_size_type getNumVertices () const
Получить количество вершин в графе SLAM. Подробнее...
void setMaxIterations (int max_iterations)
Установить максимальное количество итераций для метода compute(). Подробнее...
int getMaxIterations () const
Получить максимальное количество итераций для метода compute(). Подробнее...
void setConvergenceThreshold (float convergence_threshold)
Установить порог сходимости для метода compute(). Подробнее...
float getConvergenceThreshold () const
Получить порог сходимости для метода compute(). Подробнее...
Vertex addPointCloud (const PointCloudPtr &cloud, const Eigen::Vector6f &pose=Eigen::Vector6f::Zero())
Добавить новое облако точек в граф SLAM. Подробнее...
void setPointCloud (const Vertex &vertex, const PointCloudPtr &cloud)
Изменить облако точек в одной из вершин графа SLAM. Подробнее...
PointCloudPtr getPointCloud (const Vertex &vertex) const
Вернуть облако точек из одной из вершин графа SLAM. Подробнее...
void setPose (const Vertex &vertex, const Eigen::Vector6f &pose)
Изменить оценку позы в одной из вершин графа SLAM. Подробнее...
Eigen::Vector6f getPose (const Vertex &vertex) const
Вернуть оценку позы из одной из вершин графа SLAM. Подробнее...
Eigen::Affine3f getTransformation (const Vertex &vertex) const
Вернуть оценку позы из одной из вершин графа SLAM в виде матрицы аффинного преобразования. Подробнее...
void setCorrespondences (const Vertex &source_vertex, const Vertex &target_vertex, const pcl::CorrespondencesPtr &corrs)
Добавить/изменить набор соответствий для одного из рёбер графа SLAM. Подробнее...
pcl::CorrespondencesPtr getCorrespondences (const Vertex &source_vertex, const Vertex &target_vertex) const
Возвращает набор соответствий для одного из рёбер графа SLAM. Подробнее...
void compute ()
Выполнить глобальное согласованное соответствие сканов LUM. Подробнее...
PointCloudPtr getTransformedCloud (const Vertex &vertex) const
Возвращает облако точек из одного из узлов графа SLAM, преобразованное к текущему приближению позы. Подробнее...
PointCloudPtr getConcatenatedCloud () const
Возвращает склеенное облако точек всех облаков точек графа SLAM, преобразованных к текущим приближениям позы. Подробнее...

Защищенные члены-функции

void computeEdge (const Edge &e)
Линеаризованный вычисление C^-1 и C^-1*D (результаты хранятся в slam_graph_). Подробнее...
Eigen::Matrix6f incidenceCorrection (const Eigen::Vector6f &pose)
Возвращает матрицу инцидентности 6 степеней свободы, скорректированную по позе. Подробнее...

Подробное описание

шаблон<typename PointT>
класс pcl::registration::LUM< PointT >

Глобальное согласованное соответствие сканов на основе алгоритма Лу и Милиоса.

Алгоритм GraphSLAM, в котором данные регистрации управляются в графе:

  • Узлы представляют позы и содержат данные облака точек и относительные преобразования.
  • Рёбра представляют ограничения позы и содержат данные соответствий между двумя облаками точек.

Вычисление использует первую точку облака точек в графе SLAM в качестве опорной позы и пытается одновременно выровнять все остальные облака точек относительно неё. Дополнительная информация:

  • F. Lu, E. Milios, Globally Consistent Range Scan Alignment for Environment Mapping, Autonomous Robots 4, April 1997
  • Dorit Borrmann, Jan Elseberg, Kai Lingemann, Andreas Nüchter, and Joachim Hertzberg, The Efficient Extension of Globally Consistent Scan Matching to 6 DoF, In Proceedings of the 4th International Symposium on 3D Data Processing, Visualization and Transmission (3DPVT '08), June 2008

Пример использования:

pcl::registration::LUM<pcl::PointXYZ> lum;
// Add point clouds as vertices to the SLAM graph
lum.addPointCloud (cloud_0);
lum.addPointCloud (cloud_1);
lum.addPointCloud (cloud_2);
// Use your favorite pairwise correspondence estimation algorithm(s)
corrs_0_to_1 = someAlgo (cloud_0, cloud_1);
corrs_1_to_2 = someAlgo (cloud_1, cloud_2);
corrs_2_to_0 = someAlgo (lum.getPointCloud (2), lum.getPointCloud (0));
// Add the correspondence results as edges to the SLAM graph
lum.setCorrespondences (0, 1, corrs_0_to_1);
lum.setCorrespondences (1, 2, corrs_1_to_2);
lum.setCorrespondences (2, 0, corrs_2_to_0);
// Change the computation parameters
lum.setMaxIterations (5);
lum.setConvergenceThreshold (0.0);
// Perform the actual LUM computation
lum.compute ();
// Return the concatenated point cloud result
cloud_out = lum.getConcatenatedCloud ();
// Return the separate point cloud transformations
for(int i = 0; i < lum.getNumVertices (); i++)
{
 transforms_out[i] = lum.getTransformation (i);
}
pcl::registration::LUMGlobally Consistent Scan Matching based on an algorithm by Lu and Milios.Definition: lum.h:108
pcl::registration::LUM
Globally Consistent Scan Matching based on an algorithm by Lu and Milios.
Definition: lum.h:108
pcl::registration::LUM::computevoid compute()Perform LUM's globally consistent scan matching.Definition: lum.hpp:221
pcl::registration::LUM::compute
void compute()
Perform LUM's globally consistent scan matching.
Definition: lum.hpp:221
pcl::registration::LUM::getPointCloudPointCloudPtr getPointCloud(const Vertex &vertex) constReturn a point cloud from one of the SLAM graph's vertices.Definition: lum.hpp:130
pcl::registration::LUM::getPointCloud
PointCloudPtr getPointCloud(const Vertex &vertex) const
Return a point cloud from one of the SLAM graph's vertices.
Definition: lum.hpp:130
pcl::registration::LUM::getNumVerticesSLAMGraph::vertices_size_type getNumVertices() constGet the number of vertices in the SLAM graph.Definition: lum.hpp:66
pcl::registration::LUM::getNumVertices
SLAMGraph::vertices_size_type getNumVertices() const
Get the number of vertices in the SLAM graph.
Definition: lum.hpp:66
pcl::registration::LUM::setConvergenceThresholdvoid setConvergenceThreshold(float convergence_threshold)Set the convergence threshold for the compute() method.Definition: lum.hpp:87
pcl::registration::LUM::setConvergenceThreshold
void setConvergenceThreshold(float convergence_threshold)
Set the convergence threshold for the compute() method.
Definition: lum.hpp:87
pcl::registration::LUM::setMaxIterationsvoid setMaxIterations(int max_iterations)Set the maximum number of iterations for the compute() method.Definition: lum.hpp:73
pcl::registration::LUM::setMaxIterations
void setMaxIterations(int max_iterations)
Set the maximum number of iterations for the compute() method.
Definition: lum.hpp:73
pcl::registration::LUM::getConcatenatedCloudPointCloudPtr getConcatenatedCloud() constReturn a concatenated point cloud of all the SLAM graph's point clouds compounded onto their current ...Definition: lum.hpp:294
pcl::registration::LUM::getConcatenatedCloud
PointCloudPtr getConcatenatedCloud() const
Return a concatenated point cloud of all the SLAM graph's point clouds compounded onto their current ...
Definition: lum.hpp:294
pcl::registration::LUM::addPointCloudVertex addPointCloud(const PointCloudPtr &cloud, const Eigen::Vector6f &pose=Eigen::Vector6f::Zero())Add a new point cloud to the SLAM graph.Definition: lum.hpp:101
pcl::registration::LUM::addPointCloud
Vertex addPointCloud(const PointCloudPtr &cloud, const Eigen::Vector6f &pose=Eigen::Vector6f::Zero())
Add a new point cloud to the SLAM graph.
Definition: lum.hpp:101
pcl::registration::LUM::getTransformationEigen::Affine3f getTransformation(const Vertex &vertex) constReturn a pose estimate from one of the SLAM graph's vertices as an affine transformation matrix.Definition: lum.hpp:171
pcl::registration::LUM::getTransformation
Eigen::Affine3f getTransformation(const Vertex &vertex) const
Return a pose estimate from one of the SLAM graph's vertices as an affine transformation matrix.
Definition: lum.hpp:171
pcl::registration::LUM::setCorrespondencesvoid setCorrespondences(const Vertex &source_vertex, const Vertex &target_vertex, const pcl::CorrespondencesPtr &corrs)Add/change a set of correspondences for one of the SLAM graph's edges.Definition: lum.hpp:179
pcl::registration::LUM::setCorrespondences
void setCorrespondences(const Vertex &source_vertex, const Vertex &target_vertex, const pcl::CorrespondencesPtr &corrs)
Add/change a set of correspondences for one of the SLAM graph's edges.
Definition: lum.hpp:179
Автор
Frits Florentinus, Jochen Sprickerhof

Определено в строке 108 файла lum.h.

Документация по typedef членов

ConstPtr

шаблон<typename PointT >
используя pcl::registration::LUM< PointT >::ConstPtr = shared_ptr<const LUM<PointT> >

Определено в строке 111 файла lum.h.

Edge

шаблон<typename PointT >
используя pcl::registration::LUM< PointT >::Edge = typename SLAMGraph::edge_descriptor

Определено в строке 138 файла lum.h.

PointCloud

шаблон<typename PointT >
используя pcl::registration::LUM< PointT >::PointCloud = pcl::PointCloud<PointT>

Определено в строке 113 файла lum.h.

PointCloudConstPtr

шаблон<typename PointT >
используя pcl::registration::LUM< PointT >::PointCloudConstPtr = typename PointCloud::ConstPtr

Определено в строке 115 файла lum.h.

PointCloudPtr

template<typename PointT >
using pcl::registration::LUM< PointT >::PointCloudPtr = typename PointCloud::Ptr

Определение в строке 114 файла lum.h.

Ptr

template<typename PointT >
using pcl::registration::LUM< PointT >::Ptr = shared_ptr<LUM<PointT> >

Определение в строке 110 файла lum.h.

SLAMGraph

template<typename PointT >
using pcl::registration::LUM< PointT >::SLAMGraph = boost::adjacency_list<boost::eigen_vecS, boost::eigen_vecS, boost::bidirectionalS, VertexProperties, EdgeProperties, boost::no_property, boost::eigen_listS>

Определение в строке 129 файла lum.h.

SLAMGraphPtr

template<typename PointT >
using pcl::registration::LUM< PointT >::SLAMGraphPtr = shared_ptr<SLAMGraph>

Определение в строке 136 файла lum.h.

Vertex

template<typename PointT >
using pcl::registration::LUM< PointT >::Vertex = typename SLAMGraph::vertex_descriptor

Определение в строке 137 файла lum.h.

Конструктор & Деструктор

LUM()

template<typename PointT >
pcl::registration::LUM< PointT >::LUM ( )
inline

Пустой конструктор.

Определение в строке 142 файла lum.h.

Документация функций-членов

addPointCloud()

template<typename PointT >
LUM< PointT >::Vertex pcl::registration::LUM< PointT >::addPointCloud ( const PointCloudPtr & cloud,
const Eigen::Vector6f & pose = Eigen::Vector6f::Zero()
)

Добавить новый облако точек в граф SLAM.

Этот метод добавит новую вершину в граф SLAM и прикрепит к ней облако точек. По желанию, вы можете указать оценку позы для этого облака точек. Поза вершины всегда относительна к первой вершине в графе SLAM, то есть к первому облаку точек, которое было добавлено. Поскольку эта первая вершина является эталоном, вы не можете установить оценку позы для этой вершины. Предоставление оценок позы вершинам в графе SLAM уменьшит общее время вычисления LUM.

Примечание
Дескрипторы вершин могут быть преобразованы к типу int.
Параметры
[in] cloud Новое облако точек.
[in] pose (необязательно) Оценка позы, относительная к эталонной позе (первое облако точек, которое было добавлено).
Возвращает
Дескриптор вершины новой созданной вершины.

Определение в строке 101 файла lum.hpp.

compute()

template<typename PointT >
void pcl::registration::LUM< PointT >::compute

Выполнить глобальное согласованное соответствие сканирования LUM.

Вычисления используют первое облако точек в графе SLAM в качестве эталонной позы и пытаются одновременно согласовать все остальные облака точек с ним.
Важные моменты:

  • Только те части графа, которые соединены с эталонной позой, будут должным образом согласованы с ней.
  • Все наборы соответствий должны охватывать одно и то же пространство и должны быть достаточны для определения жесткого преобразования.
  • Алгоритм черпает свою силу из петель в графе, так как он будет равномерно распределять ошибки между этими петлями.

Вычисления завершаются, когда выполняются одно из следующих условий:

  • Количество итераций достигает max_iterations. Используйте setMaxIterations(), чтобы изменить это.
  • Критерий сходимости выполнен. Используйте setConvergenceThreshold(), чтобы изменить его.

Вычисление изменит оценки позы для вершин графа SLAM, а не облаков точек, прикрепленных к ним. Результаты можно получить с помощью getPose(), getTransformation(), getTransformedCloud() или getConcatenatedCloud().

Определение в строке 221 файла lum.hpp.

Ссылки на pcl::B.

computeEdge()

template<typename PointT >
void pcl::registration::LUM< PointT >::computeEdge ( const Edge & e )
protected

Линеаризованное вычисление C^-1 и C^-1*D (результаты хранятся в slam_graph_).

Определение в строке 308 файла lum.hpp.

Ссылки на pcl::getTransformation().

getConcatenatedCloud()

template<typename PointT >
LUM< PointT >::PointCloudPtr pcl::registration::LUM< PointT >::getConcatenatedCloud

Возвращает объединённое облако точек всех облаков точек графа SLAM, наложенных на их текущие оценки положения.

Возвращает
Объединённые преобразованные облака точек всего графа SLAM.

Определение в строке 294 файла lum.hpp.

Ссылки на pcl::getTransformation() и pcl::transformPointCloud().

getConvergenceThreshold()

template<typename PointT >
float pcl::registration::LUM< PointT >::getConvergenceThreshold
inline

Получить порог сходимости для метода compute().

Когда метод compute() вычисляет новые положения относительно старых, он определяет длину вектора разницы. Когда средняя длина всех векторов разницы становится меньше порога сходимости, предполагается, что сходимость достигнута.

Возвращает
Текущий порог сходимости (по умолчанию = 0,0).

Определение в строке 94 файла lum.hpp.

getCorrespondences()

template<typename PointT >
pcl::CorrespondencesPtr pcl::registration::LUM< PointT >::getCorrespondences ( const Vertex & source_vertex,
const Vertex & target_vertex
) const
inline

Возвращает набор соответствий из одного из ребер графа SLAM.

Примечание
Дескрипторы вершин могут быть преобразованы в целые числа.
Параметры
[in] source_vertex Дескриптор вершины источника облака точек соответствий.
[in] target_vertex Дескриптор вершины назначения облака точек соответствий.
Возвращает
Текущий набор соответствий этого ребра.

Определение в строке 200 файла lum.hpp.

getLoopGraph()

template<typename PointT >
LUM< PointT >::SLAMGraphPtr pcl::registration::LUM< PointT >::getLoopGraph
inline

Получить внутреннюю структуру графа SLAM.

Все данные, используемые и производимые классом LUM, хранятся в этом boost::adjacency_list. Рекомендуется использовать сам класс LUM для построения графа. Этот метод может быть полезен для управления несколькими графами SLAM в одном экземпляре LUM.

Возвращает
Текущий граф SLAM.

Определение в строке 59 файла lum.hpp.

getMaxIterations()

template<typename PointT >
int pcl::registration::LUM< PointT >::getMaxIterations
inline

Получить максимальное количество итераций для метода compute().

Метод compute() завершается, когда достигнуто максимальное количество итераций или когда выполнено условие сходимости.

Возвращает
Текущее максимальное количество итераций (по умолчанию = 5).

Определение в строке 80 файла lum.hpp.

getNumVertices()

template<typename PointT >
LUM< PointT >::SLAMGraph::vertices_size_type pcl::registration::LUM< PointT >::getNumVertices

Получить количество вершин в графе SLAM.

Возвращает
Текущее количество вершин в графе SLAM.

Определение в строке 66 файла lum.hpp.

getPointCloud()

template<typename PointT >
LUM< PointT >::PointCloudPtr pcl::registration::LUM< PointT >::getPointCloud ( const Vertex & vertex ) const
inline

Возвращает облако точек из одного из вершин графа SLAM.

Примечание
Дескрипторы вершин могут быть приводимы к типу int.
Параметры
[вход] vertex Дескриптор вершины, для которой нужно вернуть облако точек.
Возвращает
Текущее облако точек для данной вершины.

Определение в строке 130 файла lum.hpp.

getPose()

template<typename PointT >
Eigen::Vector6f pcl::registration::LUM< PointT >::getPose ( const Vertex & vertex ) const
inline

Возвращает оценку позы из одной из вершин графа SLAM.

Примечание
Дескрипторы вершин могут быть приводимы к типу int.
Параметры
[вход] vertex Дескриптор вершины, для которой нужно вернуть оценку позы.
Возвращает
Текущая оценка позы данной вершины.

Определение в строке 159 файла lum.hpp.

getTransformation()

template<typename PointT >
Eigen::Affine3f pcl::registration::LUM< PointT >::getTransformation ( const Vertex & vertex ) const
inline

Возвращает оценку позы из одной из вершин графа SLAM как матрицы аффинного преобразования.

Примечание
Дескрипторы вершин могут быть приводимы к типу int.
Параметры
[вход] vertex Дескриптор вершины, для которой нужно вернуть матрицу преобразования.
Возвращает
Текущая матрица преобразования данной вершины.

Определение в строке 171 файла lum.hpp.

Ссылки на pcl::getTransformation().

getTransformedCloud()

template<typename PointT >
LUM< PointT >::PointCloudPtr pcl::registration::LUM< PointT >::getTransformedCloud ( const Vertex & vertex ) const
inline

Возвращает облако точек из одной из вершин графа SLAM, преобразованное в соответствии с текущей оценкой позы.

Примечание
Дескрипторы вершин могут быть приводимы к типу int.
Параметры
[вход] vertex Дескриптор вершины, для которой нужно вернуть преобразованное облако точек.
Возвращает
Преобразованное облако точек данной вершины.

Определение в строке 285 файла lum.hpp.

Ссылки на pcl::getTransformation(), и pcl::transformPointCloud().

incidenceCorrection()

template<typename PointT >
Eigen::Matrix6f pcl::registration::LUM< PointT >::incidenceCorrection ( const Eigen::Vector6f & pose )
inlineprotected

Возвращает матрицу поправки инцидентности 6 степеней свободы.

Определение в строке 445 файла lum.hpp.

setConvergenceThreshold()

template<typename PointT >
void pcl::registration::LUM< PointT >::setConvergenceThreshold ( float convergence_threshold )

Устанавливает порог сходимости для метода compute().

Когда метод compute() вычисляет новые позы относительно старых, он определяет длину вектора разницы. Когда средняя длина всех векторов разницы становится меньше порога сходимости, считается, что сходимость достигнута.

Параметры
[вход] convergence_threshold Новый порог сходимости (по умолчанию = 0.0).

Определение в строке 87 файла lum.hpp.

setCorrespondences()

template<typename PointT >
void pcl::registration::LUM< PointT >::setCorrespondences ( const Vertex & source_vertex,
const Vertex & target_vertex,
const pcl::CorrespondencesPtr & corrs
)

Добавить/изменить набор соответствий для одного из рёбер графа SLAM.

Рёбра в графе SLAM являются направленными и указывают от вершины-источника к вершине-цели. Индексы запросов соответствий индексируют точки в облаке точек вершины-источника. Соответствующие индексы соответствий индексируют точки в облаке точек вершины-цели. Если ребро не было присутствует в указанном месте, этот метод добавит новое ребро в граф SLAM и прикрепит соответствия к этому ребру. Если ребро уже присутствует, этот метод перезапишет информацию о соответствиях этого ребра и не изменит структуру графа SLAM.

Примечание
Дескрипторы вершин могут быть приводимы к типу int.
Параметры
[in] source_vertex Дескриптор вершины облака точек-источника соответствий.
[in] target_vertex Дескриптор вершины облака точек-цели соответствий.
[in] corrs Новый набор соответствий для этого ребра.

Определение в строке 179 файла lum.hpp.

setLoopGraph()

template<typename PointT >
void pcl::registration::LUM< PointT >::setLoopGraph ( const SLAMGraphPtr & slam_graph )
inline

Установить внутреннюю структуру графа SLAM.

Все данные, используемые и производимые LUM, хранятся в этом boost::adjacency_list. Рекомендуется использовать сам класс LUM для построения графа. Этот метод может быть полезен для управления несколькими графами SLAM в одном экземпляре LUM.

Параметры
[in] slam_graph Новый граф SLAM.

Определение в строке 52 файла lum.hpp.

setMaxIterations()

template<typename PointT >
void pcl::registration::LUM< PointT >::setMaxIterations ( int max_iterations )

Установить максимальное количество итераций для метода compute().

Метод compute() завершается, когда достигается максимальное количество итераций или когда удовлетворяются критерии сходимости.

Параметры
[in] max_iterations Новое максимальное количество итераций (по умолчанию = 5).

Определение в строке 73 файла lum.hpp.

setPointCloud()

template<typename PointT >
void pcl::registration::LUM< PointT >::setPointCloud ( const Vertex & vertex,
const PointCloudPtr & cloud
)
inline

Изменить облако точек на одной из вершин графа SLAM.

Этот метод изменит облако точек, прикреплённое к существующей вершине, и не изменит структуру графа SLAM. Обратите внимание, что соответствия, прикреплённые к этой вершине, не изменятся и могут потребовать ручного обновления.

Примечание
Дескрипторы вершин могут быть приводимы к типу int.
Параметры
[in] vertex Дескриптор вершины, облако точек которой нужно изменить.
[in] cloud Новое облако точек для этой вершины.

Определение в строке 118 файла lum.hpp.

setPose()

template<typename PointT >
void pcl::registration::LUM< PointT >::setPose ( const Vertex & vertex,
const Eigen::Vector6f & pose
)
inline

Изменить оценку позы на одной из вершин графа SLAM.

Поза вершины всегда относительна первой вершине в графе SLAM, то есть первому добавленному облаку точек. Поскольку эта первая вершина является эталоном, вы не можете установить оценку позы для этой вершины. Предоставление оценок позы вершинам в графе SLAM сократит общее время вычисления LUM.

Примечание
Дескрипторы вершин могут быть приводимы к типу int.
Параметры
[in] vertex Дескриптор вершины, для которой нужно установить оценку позы.
[in] pose Новая оценка позы для этой вершины.

Определение в строке 142 файла lum.hpp.


Документация для этого класса была сгенерирована из следующих файлов:
  • pcl/registration/lum.h
  • pcl/registration/impl/lum.hpp

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1registration_1_1_l_u_m.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API