Spec-Zone.ru › PointCloudLibrary

NormalDistributionsTransform2D предоставляет реализацию алгоритма преобразования нормальных распределений для сопоставления сканов. Подробнее...

#include <pcl/registration/ndt_2d.h>

Inheritance graph
[легенда]
Collaboration graph
[легенда]

Общедоступные типы

using Ptr = shared_ptr< NormalDistributionsTransform2D< PointSource, PointTarget > >
using ConstPtr = shared_ptr< const NormalDistributionsTransform2D< PointSource, PointTarget > >
- Общедоступные типы, унаследованные от pcl::Registration< PointSource, PointTarget, Scalar >
using Matrix4 = Eigen::Matrix< Scalar, 4, 4 >
using Ptr = shared_ptr< Registration< PointSource, PointTarget, Scalar > >
using ConstPtr = shared_ptr< const Registration< PointSource, PointTarget, Scalar > >
using CorrespondenceRejectorPtr = pcl::registration::CorrespondenceRejector::Ptr
using KdTree = pcl::search::KdTree< PointTarget >
using KdTreePtr = typename KdTree::Ptr
using KdTreeReciprocal = pcl::search::KdTree< PointSource >
using KdTreeReciprocalPtr = typename KdTreeReciprocal::Ptr
using PointCloudSource = pcl::PointCloud< PointSource >
using PointCloudSourcePtr = typename PointCloudSource::Ptr
using PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr
using PointCloudTarget = pcl::PointCloud< PointTarget >
using PointCloudTargetPtr = typename PointCloudTarget::Ptr
using PointCloudTargetConstPtr = typename PointCloudTarget::ConstPtr
using PointRepresentationConstPtr = typename KdTree::PointRepresentationConstPtr
using TransformationEstimation = typename pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >
using TransformationEstimationPtr = typename TransformationEstimation::Ptr
using TransformationEstimationConstPtr = typename TransformationEstimation::ConstPtr
using CorrespondenceEstimation = pcl::registration::CorrespondenceEstimationBase< PointSource, PointTarget, Scalar >
using CorrespondenceEstimationPtr = typename CorrespondenceEstimation::Ptr
using CorrespondenceEstimationConstPtr = typename CorrespondenceEstimation::ConstPtr
using UpdateVisualizerCallbackSignature = void(const pcl::PointCloud< PointSource > &, const pcl::Indices &, const pcl::PointCloud< PointTarget > &, const pcl::Indices &)
Сигнатура обратного вызова функции, обновляющей промежуточное положение облака исходных точек во время его регистрации относительно облака целевых точек. Подробнее...
- Общедоступные типы, унаследованные от pcl::PCLBase< PointSource >
using PointCloud = pcl::PointCloud< PointSource >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using PointIndicesPtr = PointIndices::Ptr
using PointIndicesConstPtr = PointIndices::ConstPtr

Общедоступные функции-члены

NormalDistributionsTransform2D ()
Пустой конструктор. Подробнее...
~NormalDistributionsTransform2D () override=default
Пустой деструктор. Подробнее...
virtual void setGridCentre (const Eigen::Vector2f &centre)
центр сетки NDT (система координат целевого облака) Подробнее...
virtual void setGridStep (const Eigen::Vector2f &step)
Сетка расстояние между ячейками (шаг) сетки NDT. Подробнее...
virtual void setGridExtent (const Eigen::Vector2f &extent)
Размер сетки NDT (в каждом направлении от центра сетки) Подробнее...
virtual void setOptimizationStepSize (const double &lambda)
Параметр размера шага метода Ньютона при оптимизации NDT. Подробнее...
virtual void setOptimizationStepSize (const Eigen::Vector3d &lambda)
Параметр размера шага метода Ньютона при оптимизации NDT. Подробнее...
- Общедоступные функции-члены, унаследованные от pcl::Registration< PointSource, PointTarget, Scalar >
Registration ()
Пустой конструктор. Подробнее...
~Registration () override=default
деструктор. Подробнее...
void setTransformationEstimation (const TransformationEstimationPtr &te)
Передать указатель на объект оценки преобразования. Подробнее...
void setCorrespondenceEstimation (const CorrespondenceEstimationPtr &ce)
Передать указатель на объект оценки соответствий. Подробнее...
virtual void setInputSource (const PointCloudSourceConstPtr &cloud)
Передать указатель на входной источник (например, облако точек, которое требуется совместить с целевым облаком). Подробнее...
PointCloudSourceConstPtr const getInputSource ()
Получить указатель на набор данных входного облака точек — целевого облака. Подробнее...
virtual void setInputTarget (const PointCloudTargetConstPtr &cloud)
Передать указатель на входное целевое облако (например, облако точек, с которым требуется совместить входной источник). Подробнее...
PointCloudTargetConstPtr const getInputTarget ()
Получить указатель на набор данных входного целевого облака точек. Подробнее...
void setSearchMethodTarget (const KdTreePtr &tree, bool force_no_recompute=false)
Передать указатель на объект поиска, используемый для нахождения соответствий в целевом облаке. Подробнее...
KdTreePtr getSearchMethodTarget () const
Получить указатель на метод поиска, используемый для нахождения соответствий в целевом облаке. Подробнее...
void setSearchMethodSource (const KdTreeReciprocalPtr &tree, bool force_no_recompute=false)
Передать указатель на объект поиска, используемый для нахождения соответствий в исходном облаке (обычно применяется при поиске взаимных соответствий). Подробнее...
KdTreeReciprocalPtr getSearchMethodSource () const
Получить указатель на метод поиска, используемый для нахождения соответствий в исходном облаке. Подробнее...
Matrix4 getFinalTransformation ()
Получить итоговую матрицу преобразования, вычисленную методом регистрации. Подробнее...
Matrix4 getLastIncrementalTransformation ()
Получить последнюю матрицу инкрементального преобразования, вычисленную методом регистрации. Подробнее...
void setMaximumIterations (int nr_iterations)
Задать максимальное число итераций внутренней оптимизации. Подробнее...
int getMaximumIterations ()
Получить заданное пользователем максимальное число итераций внутренней оптимизации. Подробнее...
void setRANSACIterations (int ransac_iterations)
Задать число итераций алгоритма RANSAC. Подробнее...
double getRANSACIterations ()
Получить заданное пользователем число итераций алгоритма RANSAC. Подробнее...
void setRANSACOutlierRejectionThreshold (double inlier_threshold)
Задать пороговое расстояние для внутренних точек в цикле отбраковки выбросов RANSAC. Подробнее...
double getRANSACOutlierRejectionThreshold ()
Получить заданный пользователем порог расстояния для внутренних точек во внутреннем цикле отбраковки выбросов. Подробнее...
void setMaxCorrespondenceDistance (double distance_threshold)
Задать максимальное пороговое расстояние между двумя соответствующими точками в источнике и целевом облаке. Подробнее...
double getMaxCorrespondenceDistance ()
Получить максимальное пороговое расстояние между двумя соответствующими точками в источнике и целевом облаке. Подробнее...
void setTransformationEpsilon (double epsilon)
Задать эпсилон преобразования (максимально допустимую разность квадратов перемещений между двумя последовательными преобразованиями), при которой оптимизация считается сошедшейся к итоговому решению. Подробнее...
double getTransformationEpsilon ()
Получить заданное пользователем значение эпсилона преобразования (максимально допустимую разность квадратов перемещений между двумя последовательными преобразованиями). Подробнее...
void setTransformationRotationEpsilon (double epsilon)
Задать эпсилон вращения преобразования (максимально допустимую разность углов поворота между двумя последовательными преобразованиями), при которой оптимизация считается сошедшейся к итоговому решению. Подробнее...
double getTransformationRotationEpsilon ()
Получить заданное пользователем значение эпсилона вращения преобразования (максимально допустимую разность между двумя последовательными преобразованиями; эпсилон — это cos(угла) в представлении «ось — угол»). Подробнее...
void setEuclideanFitnessEpsilon (double epsilon)
Задать максимально допустимую евклидову ошибку между двумя последовательными шагами цикла ICP, при достижении которой алгоритм считается сошедшимся. Подробнее...
double getEuclideanFitnessEpsilon ()
Получить заданное пользователем максимально допустимое расстояние ошибки, при достижении которого алгоритм считается сошедшимся. Подробнее...
void setPointRepresentation (const PointRepresentationConstPtr &point_representation)
Передать указатель boost shared на объект PointRepresentation, используемый при сравнении точек. Подробнее...
bool registerVisualizationCallback (std::function< UpdateVisualizerCallbackSignature > &visualizerCallback)
Зарегистрировать пользовательскую функцию обратного вызова, которая будет вызываться в потоке регистрации для обновления облака точек после каждой итерации. Подробнее...
double getFitnessScore (double max_range=std::numeric_limits< double >::max())
Получить оценку евклидова соответствия (например, среднее значение квадратов расстояний от исходного облака до целевого). Подробнее...
double getFitnessScore (const std::vector< float > &distances_a, const std::vector< float > &distances_b)
Получить оценку качества по евклидову расстоянию (например, среднее квадратов расстояний от источника до цели) на основе двух наборов расстояний между соответствующими точками (расстояний между точками источника и цели) Подробнее...
bool hasConverged () const
Вернуть состояние сходимости после последнего запуска выравнивания. Подробнее...
void align (PointCloudSource &output)
Вызвать алгоритм регистрации, который оценивает преобразование и возвращает преобразованный источник (входные данные) в output. Подробнее...
void align (PointCloudSource &output, const Matrix4 &guess)
Вызвать алгоритм регистрации, который оценивает преобразование и возвращает преобразованный источник (входные данные) в output. Подробнее...
const std::string & getClassName () const
Метод получения имени абстрактного класса. Подробнее...
bool initCompute ()
Инициализация внутренних вычислений. Подробнее...
bool initComputeReciprocal ()
Внутренние вычисления при необходимости обратного поиска. Подробнее...
void addCorrespondenceRejector (const CorrespondenceRejectorPtr &rejector)
Добавить новый фильтр соответствий в список. Подробнее...
std::vector< CorrespondenceRejectorPtr > getCorrespondenceRejectors ()
Получить список фильтров соответствий. Подробнее...
bool removeCorrespondenceRejector (unsigned int i)
Удалить i-й фильтр соответствий из списка. Подробнее...
void clearCorrespondenceRejectors ()
Очистить список фильтров соответствий. Подробнее...
- Открытые функции-члены, унаследованные от pcl::PCLBase< PointSource >
PCLBase ()
Пустой конструктор. Подробнее...
PCLBase (const PCLBase &base)
Конструктор копирования. Подробнее...
virtual ~PCLBase ()=default
Деструктор. Подробнее...
virtual void setInputCloud (const PointCloudConstPtr &cloud)
Передать указатель на входной набор данных. Подробнее...
PointCloudConstPtr const getInputCloud () const
Получить указатель на входной набор точек облака. Подробнее...
virtual void setIndices (const IndicesPtr &indices)
Передать указатель на вектор индексов, представляющий входные данные. Подробнее...
virtual void setIndices (const IndicesConstPtr &indices)
Передать указатель на вектор индексов, представляющий входные данные. Подробнее...
virtual void setIndices (const PointIndicesConstPtr &indices)
Передать указатель на вектор индексов, представляющий входные данные. Подробнее...
virtual void setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols)
Задать индексы точек, расположенных в области интереса облака точек. Подробнее...
IndicesPtr getIndices ()
Получить указатель на используемый вектор индексов. Подробнее...
IndicesConstPtr const getIndices () const
Получить указатель на используемый вектор индексов. Подробнее...
const PointSource & operator[] (std::size_t pos) const
Переопределить operator[] класса PointCloud для сокращения кода. Подробнее...

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

void computeTransformation (PointCloudSource &output, const Eigen::Matrix4f &guess) override
Метод вычисления жёсткого преобразования с начальным приближением. Подробнее...
- Защищённые функции-члены, унаследованные от pcl::Registration< PointSource, PointTarget, Scalar >
bool searchForNeighbors (const PointCloudSource &cloud, int index, pcl::Indices &indices, std::vector< float > &distances)
Найти ближайшего соседа для заданной точки. Подробнее...
virtual void computeTransformation (PointCloudSource &output, const Matrix4 &guess)=0
Абстрактный метод вычисления преобразования с начальным приближением. Подробнее...
- Защищённые функции-члены, унаследованные от pcl::PCLBase< PointSource >
bool initCompute ()
Этот метод следует вызвать перед началом фактических вычислений. Подробнее...
bool deinitCompute ()
Этот метод следует вызвать после завершения фактических вычислений. Подробнее...

Защищённые атрибуты

Eigen::Vector2f grid_centre_
Eigen::Vector2f grid_step_
Eigen::Vector2f grid_extent_
Eigen::Vector3d newton_lambda_
- Защищённые атрибуты, унаследованные от pcl::Registration< PointSource, PointTarget, Scalar >
std::string reg_name_
Название метода регистрации. Подробнее...
KdTreePtr tree_
Указатель на объект пространственного поиска. Подробнее...
KdTreeReciprocalPtr tree_reciprocal_
Указатель на объект пространственного поиска для исходных данных. Подробнее...
int nr_iterations_ {0}
Количество итераций, выполненных внутренней оптимизацией (используется внутри класса). Подробнее...
int max_iterations_ {10}
Максимальное количество итераций внутренней оптимизации. Подробнее...
int ransac_iterations_ {0}
Количество итераций алгоритма RANSAC. Подробнее...
PointCloudTargetConstPtr target_
Входной набор данных облака точек-цели. Подробнее...
Matrix4 final_transformation_
Итоговая матрица преобразования, вычисленная методом регистрации после N итераций. Подробнее...
Matrix4 transformation_
Матрица преобразования, вычисленная методом регистрации. Подробнее...
Matrix4 previous_transformation_
Предыдущая матрица преобразования, вычисленная методом регистрации (используется внутри класса). Подробнее...
double transformation_epsilon_ {0.0}
Максимальная разница между двумя последовательными преобразованиями, при которой считается, что алгоритм сошёлся (задаётся пользователем). Подробнее...
double transformation_rotation_epsilon_ {0.0}
Максимальная разница углов поворота между двумя последовательными преобразованиями, при которой считается, что алгоритм сошёлся (задаётся пользователем). Подробнее...
double euclidean_fitness_epsilon_
Максимально допустимая евклидова ошибка между двумя последовательными шагами цикла ICP, при достижении которой алгоритм считается сошедшимся. Подробнее...
double corr_dist_threshold_
Максимальный порог расстояния между двумя соответствующими точками исходного облака и облака-цели. Подробнее...
double inlier_threshold_ {0.05}
Порог расстояния для внутренних точек во внутреннем цикле RANSAC по отбрасыванию выбросов. Подробнее...
bool converged_ {false}
Хранит внутреннее состояние сходимости с учётом параметров, заданных пользователем. Подробнее...
unsigned int min_number_correspondences_ {3}
Минимальное количество соответствий, необходимое алгоритму для оценки преобразования. Подробнее...
CorrespondencesPtr correspondences_
Набор соответствий, определённых на этом шаге ICP. Подробнее...
TransformationEstimationPtr transformation_estimation_
Объект TransformationEstimation, используемый для вычисления жёсткого преобразования 4x4. Подробнее...
CorrespondenceEstimationPtr correspondence_estimation_
Объект CorrespondenceEstimation, используемый для определения соответствий между исходным и целевым облаками. Подробнее...
std::vector< CorrespondenceRejectorPtr > correspondence_rejectors_
Список используемых средств отбрасывания соответствий. Подробнее...
bool target_cloud_updated_ {true}
Переменная, указывающая, появилось ли новое целевое облако и нужно ли повторно выполнить его предварительную обработку. Подробнее...
bool source_cloud_updated_ {true}
Переменная, указывающая, появилось ли новое исходное облако и нужно ли повторно выполнить его предварительную обработку. Подробнее...
bool force_no_recompute_ {false}
Флаг, который при включении запрещает повторное вычисление дерева для целевого облака. Подробнее...
bool force_no_recompute_reciprocal_ {false}
Флаг, который при включении запрещает повторное вычисление дерева для исходного облака. Подробнее...
std::function< UpdateVisualizerCallbackSignature > update_visualizer_
Функция обратного вызова для обновления положения исходного облака точек на промежуточных этапах его регистрации относительно целевого облака точек. Подробнее...
- Защищённые атрибуты, унаследованные от pcl::PCLBase< PointSource >
PointCloudConstPtr input_
Входной набор данных облака точек. Подробнее...
IndicesPtr indices_
Указатель на вектор используемых индексов точек. Подробнее...
bool use_indices_
Установите значение true, если используются индексы точек. Подробнее...
bool fake_indices_
Если набор индексов не задан, создаётся набор фиктивных индексов, соответствующий входному облаку точек. Подробнее...

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

template<typename PointSource, typename PointTarget>
class pcl::NormalDistributionsTransform2D< PointSource, PointTarget >

NormalDistributionsTransform2D реализует алгоритм преобразования нормальных распределений для сопоставления сканов.

Данная реализация предназначена для соответствия определению: Peter Biber и Wolfgang Straßer. The normal distributions transform: A new approach to laser scan matching. В материалах Международной конференции IEEE по интеллектуальным роботам и системам (IROS), стр. 2743–2748, Лас-Вегас, США, октябрь 2003 г.

Автор
James Crosby

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

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

ConstPtr

template<typename PointSource , typename PointTarget >
using pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::ConstPtr = shared_ptr<const NormalDistributionsTransform2D<PointSource, PointTarget> >

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

Ptr

template<typename PointSource , typename PointTarget >
using pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::Ptr = shared_ptr<NormalDistributionsTransform2D<PointSource, PointTarget> >

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

Документация конструктора и деструктора

NormalDistributionsTransform2D()

template<typename PointSource , typename PointTarget >
pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::NormalDistributionsTransform2D ( )
inline

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

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

Ссылки на pcl::Registration< PointSource, PointTarget, Scalar >::reg_name_.

~NormalDistributionsTransform2D()

template<typename PointSource , typename PointTarget >
pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::~NormalDistributionsTransform2D ( )
overridedefault

Пустой деструктор.

Описание функций-членов

computeTransformation()

template<typename PointSource , typename PointTarget >
void pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::computeTransformation ( PointCloudSource & output,
const Eigen::Matrix4f & guess
)
overrideprotected

Метод вычисления жёсткого преобразования с начальным приближением.

Параметры
[out] output преобразованный набор входного облака точек с использованием найденного жёсткого преобразования
[in] guess начальное приближение преобразования, которое требуется вычислить

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

Ссылки на pcl::ndt2d::ValueAndDerivatives< N, T >::grad, pcl::ndt2d::ValueAndDerivatives< N, T >::hessian, pcl::ndt2d::NDT2D< PointT >::test(), pcl::transformPointCloud(), pcl::ndt2d::ValueAndDerivatives< N, T >::value и pcl::ndt2d::ValueAndDerivatives< N, T >::Zero().

setGridCentre()

template<typename PointSource , typename PointTarget >
virtual void pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setGridCentre ( const Eigen::Vector2f & centre )
inlinevirtual

центр сетки NDT (система координат целевого облака)

Параметры
centre устанавливаемое значение

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

Ссылки на pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::grid_centre_.

setGridExtent()

template<typename PointSource , typename PointTarget >
virtual void pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setGridExtent ( const Eigen::Vector2f & extent )
inlinevirtual

Размер сетки NDT (в каждом направлении от центра сетки)

Параметры
[in] extent устанавливаемое значение

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

Ссылки на pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::grid_extent_.

setGridStep()

template<typename PointSource , typename PointTarget >
virtual void pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setGridStep ( const Eigen::Vector2f & step )
inlinevirtual

Шаг сетки NDT.

Параметры
[in] step устанавливаемое значение

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

Ссылки на pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::grid_step_.

setOptimizationStepSize() [1/2]

template<typename PointSource , typename PointTarget >
virtual void pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setOptimizationStepSize ( const double & lambda )
inlinevirtual

Параметр размера шага метода Ньютона для оптимизации NDT.

Параметры
[in] lambda размер шага: значение 1 соответствует обычной оптимизации методом Ньютона, меньшие значения могут улучшить сходимость

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

Ссылки на pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::newton_lambda_.

setOptimizationStepSize() [2/2]

template<typename PointSource , typename PointTarget >
virtual void pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setOptimizationStepSize ( const Eigen::Vector3d & lambda )
inlinevirtual

Параметр размера шага метода Ньютона для оптимизации NDT.

Параметры
[in] lambda размер шага: значение (1,1,1) соответствует обычной оптимизации методом Ньютона, меньшие значения могут улучшить сходимость; также можно задать нулевые значения для отключения оптимизации некоторых параметров

Эта перегруженная версия позволяет управлять обновлением отдельных свободных параметров (x, y, theta) в процессе оптимизации. Например, если предполагается, что theta близко к правильному значению, следует использовать малое значение lambda[2].

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

Ссылки на pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::newton_lambda_.

Описание данных-членов

grid_centre_

template<typename PointSource , typename PointTarget >
Eigen::Vector2f pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::grid_centre_
protected

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

Используется в pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setGridCentre().

grid_extent_

template<typename PointSource , typename PointTarget >
Eigen::Vector2f pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::grid_extent_
protected

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

Используется в pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setGridExtent().

grid_step_

template<typename PointSource , typename PointTarget >
Eigen::Vector2f pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::grid_step_
protected

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

Используется в pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setGridStep().

newton_lambda_

template<typename PointSource , typename PointTarget >
Eigen::Vector3d pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::newton_lambda_
protected

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

Используется в pcl::NormalDistributionsTransform2D< PointSource, PointTarget >::setOptimizationStepSize().


Документация этого класса создана по следующим файлам:
  • pcl/registration/ndt_2d.h
  • pcl/registration/impl/ndt_2d.hpp

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

Spec-Zone.ru

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