Frame-to-frame ICP motion estimation. More...
#include <motion_estimation_icp.h>

Public Member Functions | |
| int | getModelSize () const |
| Returns the number of points in the model built from the feature buffer. | |
| bool | getMotionEstimationImpl (RGBDFrame &frame, const tf::Transform &prediction, tf::Transform &motion) |
| Main method for estimating the motion given an RGBD frame. | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW | MotionEstimationICP (const ros::NodeHandle &nh, const ros::NodeHandle &nh_private) |
| Constructor from ROS noehandles. | |
| virtual | ~MotionEstimationICP () |
| Default destructor. | |
Private Member Functions | |
| bool | alignICPEuclidean (const Vector3fVector &data_means, tf::Transform &correction) |
| Performs ICP alignment using the Euclidean distance for corresopndences. | |
| void | getCorrespEuclidean (const PointCloudFeature &data_cloud, IntVector &data_indices, IntVector &model_indices) |
| Performs ICP alignment using the Euclidean distance for corresopndences. | |
| bool | getNNEuclidean (const PointFeature &data_point, int &eucl_nn_idx, double &eucl_dist_sq) |
| Finds the nearest Euclidean neighbor. | |
Private Attributes | |
| std::string | base_frame_ |
| the moving frame (typically base_link or camera_link) | |
| tf::Transform | f2b_ |
| fixed frame to base (moving) frame | |
| FeatureHistory | feature_history_ |
| ring buffer of all the frames | |
| std::string | fixed_frame_ |
| the fixed frame (typically odom) | |
| double | max_corresp_dist_eucl_ |
| maximum Euclidean correspondce distance for ICP | |
| double | max_corresp_dist_eucl_sq_ |
| max squared correspondce distance, derived | |
| int | max_iterations_ |
| max ICP iterations | |
| int | min_correspondences_ |
| minimum correspondeces for ICP to continue | |
| PointCloudFeature::Ptr | model_ptr_ |
| the PointCloud which holds the aggregated history | |
| ros::Publisher | model_publisher_ |
| the ROS published for the model pointcloud | |
| KdTree | model_tree_ |
| kdtree of model_ptr_ | |
| bool | publish_model_ |
| if true, the model will be published | |
| double | tf_epsilon_angular_ |
| angular convergence criteria for ICP | |
| double | tf_epsilon_linear_ |
| linear convergence criteria for ICP | |
Frame-to-frame ICP motion estimation.
The motion is estimated by aligning the current features to the features from a number of previous frames.
Definition at line 43 of file motion_estimation_icp.h.
| ccny_rgbd::MotionEstimationICP::MotionEstimationICP | ( | const ros::NodeHandle & | nh, |
| const ros::NodeHandle & | nh_private | ||
| ) |
Constructor from ROS noehandles.
| nh | the public nodehandle |
| nh_private | the private notehandle |
Definition at line 28 of file motion_estimation_icp.cpp.
| ccny_rgbd::MotionEstimationICP::~MotionEstimationICP | ( | ) | [virtual] |
Default destructor.
Definition at line 79 of file motion_estimation_icp.cpp.
| bool ccny_rgbd::MotionEstimationICP::alignICPEuclidean | ( | const Vector3fVector & | data_means, |
| tf::Transform & | correction | ||
| ) | [private] |
Performs ICP alignment using the Euclidean distance for corresopndences.
| data_means | a vector of 3x1 matrices, repesenting the 3D positions of the features |
| correction | reference to the resulting transformation |
| true | the motion estimation was successful |
| false | the motion estimation failed |
Definition at line 152 of file motion_estimation_icp.cpp.
| void ccny_rgbd::MotionEstimationICP::getCorrespEuclidean | ( | const PointCloudFeature & | data_cloud, |
| IntVector & | data_indices, | ||
| IntVector & | model_indices | ||
| ) | [private] |
Performs ICP alignment using the Euclidean distance for corresopndences.
| data_cloud | a pointcloud of the 3D positions of the features |
| data_indices | reference to a vector containting the resulting data indices |
| model_indices | reference to a vector containting the resulting model indices |
Definition at line 208 of file motion_estimation_icp.cpp.
| int ccny_rgbd::MotionEstimationICP::getModelSize | ( | ) | const [inline, virtual] |
Returns the number of points in the model built from the feature buffer.
Reimplemented from ccny_rgbd::MotionEstimation.
Definition at line 75 of file motion_estimation_icp.h.
| bool ccny_rgbd::MotionEstimationICP::getMotionEstimationImpl | ( | RGBDFrame & | frame, |
| const tf::Transform & | prediction, | ||
| tf::Transform & | motion | ||
| ) | [virtual] |
Main method for estimating the motion given an RGBD frame.
| frame | the current RGBD frame |
| prediction | the predicted motion (currently ignored) |
| motion | the (output) incremental motion, wrt the fixed frame |
| true | the motion estimation was successful |
| false | the motion estimation failed |
Implements ccny_rgbd::MotionEstimation.
Definition at line 84 of file motion_estimation_icp.cpp.
| bool ccny_rgbd::MotionEstimationICP::getNNEuclidean | ( | const PointFeature & | data_point, |
| int & | eucl_nn_idx, | ||
| double & | eucl_dist_sq | ||
| ) | [private] |
Finds the nearest Euclidean neighbor.
| data_point | the query 3D data point |
| eucl_nn_idx | reference to the resulting nearest neigbor index in the model |
| eucl_dist_sq | reference to the resulting squared distance |
| true | a neighbor was found |
| false | a neighbor was not found |
Definition at line 230 of file motion_estimation_icp.cpp.
std::string ccny_rgbd::MotionEstimationICP::base_frame_ [private] |
the moving frame (typically base_link or camera_link)
Definition at line 86 of file motion_estimation_icp.h.
fixed frame to base (moving) frame
Definition at line 105 of file motion_estimation_icp.h.
ring buffer of all the frames
Definition at line 103 of file motion_estimation_icp.h.
std::string ccny_rgbd::MotionEstimationICP::fixed_frame_ [private] |
the fixed frame (typically odom)
Definition at line 85 of file motion_estimation_icp.h.
double ccny_rgbd::MotionEstimationICP::max_corresp_dist_eucl_ [private] |
maximum Euclidean correspondce distance for ICP
Definition at line 92 of file motion_estimation_icp.h.
double ccny_rgbd::MotionEstimationICP::max_corresp_dist_eucl_sq_ [private] |
max squared correspondce distance, derived
Definition at line 96 of file motion_estimation_icp.h.
int ccny_rgbd::MotionEstimationICP::max_iterations_ [private] |
max ICP iterations
Definition at line 88 of file motion_estimation_icp.h.
int ccny_rgbd::MotionEstimationICP::min_correspondences_ [private] |
minimum correspondeces for ICP to continue
Definition at line 89 of file motion_estimation_icp.h.
the PointCloud which holds the aggregated history
Definition at line 100 of file motion_estimation_icp.h.
the ROS published for the model pointcloud
Definition at line 81 of file motion_estimation_icp.h.
kdtree of model_ptr_
Definition at line 101 of file motion_estimation_icp.h.
bool ccny_rgbd::MotionEstimationICP::publish_model_ [private] |
if true, the model will be published
Definition at line 94 of file motion_estimation_icp.h.
double ccny_rgbd::MotionEstimationICP::tf_epsilon_angular_ [private] |
angular convergence criteria for ICP
Definition at line 91 of file motion_estimation_icp.h.
double ccny_rgbd::MotionEstimationICP::tf_epsilon_linear_ [private] |
linear convergence criteria for ICP
Definition at line 90 of file motion_estimation_icp.h.