hdl_localization icon indicating copy to clipboard operation
hdl_localization copied to clipboard

I have a problem about the relpose.

Open Freeskylover opened this issue 5 years ago • 3 comments

double InformationMatrixCalculator::calc_fitness_score(const pcl::PointCloud<PointT>::ConstPtr& cloud1, const pcl::PointCloud<PointT>::ConstPtr& cloud2, const Eigen::Isometry3d& relpose, double max_range) { pcl::search::KdTree<PointT>::Ptr tree_(new pcl::search::KdTree<PointT>()); tree_->setInputCloud(cloud1);

double fitness_score = 0.0;

// Transform the input dataset using the final transformation pcl::PointCloud<PointT> input_transformed; pcl::transformPointCloud (*cloud2, input_transformed, relpose.cast());

I have a question about the relpose. Under my understanding, the relpose is the transformation from clould1 frame to cloud2 frame. so in my thinking, it should exchange cloud1 with cloud2. for example: tree_->setInputCloud(cloud2); pcl::transformPointCloud (*cloud1, input_transformed, relpose.cast()); I am not very sure it , so i am looking for your reply.

Freeskylover avatar Nov 22 '19 07:11 Freeskylover

Hi @Freeskylover , Here, "relpose" is the transformation from cloud2 frame to cloud1 frame. So, the code is fine. If you have further questions, please open a new issue in hdl_graph_slam repository which is relevant to this topic.

koide3 avatar Nov 25 '19 01:11 koide3

Eigen::Isometry3d relative_pose = keyframe->odom.inverse() * prev_keyframe->odom; Eigen::MatrixXd information = inf_calclator->calc_information_matrix(prev_keyframe->cloud, keyframe->cloud, relative_pose); but here is from cloud1 to cloud2 for the relpose.

Freeskylover avatar Nov 25 '19 01:11 Freeskylover

Hi @Freeskylover , It seems that code is wrong. It should be:

Eigen::MatrixXd information = inf_calclator->calc_information_matrix(keyframe->cloud, prev_keyframe->cloud, relative_pose);

I'll test and update it later. Thank you for reporting it :)

koide3 avatar Nov 25 '19 02:11 koide3