В связи с этим мне удалось ограничить его наличием собственного WrapPoingRigid6D.h
, который является модификацией <pcl/registration/warp_point_rigid_6d.h>
Модификация выглядит следующим образом:
void
setParam (const VectorX & p) override
{
assert (p.rows () == this->getDimension ());
// Copy the rotation and translation components
transform_matrix_.setZero ();
transform_matrix_.setIdentity ();
transform_matrix_ (0, 3) = p[0];
transform_matrix_ (1, 3) = p[1];
transform_matrix_ (2, 3) = p[2];
}
После создав свой собственный WarpPointRigid3DTrans
, передайте его в pcl icp:
WarpPointRigid3DTrans<pcl::PointXYZ, pcl::PointXYZ>::Ptr warp_fcn
(new camera_lib::WarpPointRigid3DTrans<pcl::PointXYZ, pcl::PointXYZ>);
pcl::registration::TransformationEstimationLM<pcl::PointXYZ, pcl::PointXYZ>::Ptr te
(new pcl::registration::TransformationEstimationLM<pcl::PointXYZ, pcl::PointXYZ>);
te->setWarpFunction (warp_fcn);
icp.setTransformationEstimation (te);
Это будет работать по мере необходимости. Таким образом, есть свой собственный wrappointrigid
для удовлетворения ваших потребностей. Ура! * * 1013