本文整理汇总了C++中Candidate::getRMSE方法的典型用法代码示例。如果您正苦于以下问题:C++ Candidate::getRMSE方法的具体用法?C++ Candidate::getRMSE怎么用?C++ Candidate::getRMSE使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Candidate
的用法示例。
在下文中一共展示了Candidate::getRMSE方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dbp
////////////////////////////////////////////////////
////////////////// Main //////////////////////////
////////////////////////////////////////////////////
int
main (int argc, char *argv[])
{
//take care of command line parameters
if (argc <3 )
{
print_error("Need at least 2 parameters!\n");
show_help(argv[0]);
return (0);
}
parse_command_line (argc, argv);
//create a new point cloud to store loaded Target, with and without color
PointCloud<PointXYZ>::Ptr target (new PointCloud<PointXYZ>);
PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA>);
PointCloud<PointXYZRGBA>::Ptr cloud_raw (new PointCloud<PointXYZRGBA>);
//Database path (it needs to be first argument)
std::string dbp(argv[1]);
//Load target
if (pcl::io::loadPCDFile(target_filename, *cloud_raw) == 0)
{
//Transform Target into sensor reference frame, if it is already expressed in that frame, transformation will be identity, so no big deal
Eigen::Vector3f offset (cloud_raw->sensor_origin_(0), cloud_raw->sensor_origin_(1), cloud_raw->sensor_origin_(2));
Eigen::Quaternionf rot (cloud_raw->sensor_orientation_);
pcl::transformPointCloud(*cloud_raw, *cloud, offset, rot);
cloud->sensor_origin_.setZero();
cloud->sensor_orientation_.setIdentity();
//Copy and drop color, PEL uses pcl::PointXYZ as default pointtype
copyPointCloud(*cloud, *target);
//instantiate a pose estimation object
pel::interface::PEProgressiveBisection pe;
//set wanted parameters, others are left as default
pe.setBisectionFraction(frac);
pe.setRMSEThreshold(thresh);
pe.setStepIterations(itera);
pe.setParam("verbosity", 2); //lets spam a lot
//Set target for pose estimation
if (pe.setTarget(target, target_name))
{//load and set the database
if (pe.loadAndSetDatabase(dbp))
{
//Creat an object to store pose estimation
Candidate estimation;
//perform pose estimation
pe.estimate(estimation);
//print result
print_highlight("Target %s was estimated with %s with RMSE of %g\n",target_name.c_str(), estimation.getName().c_str(), estimation.getRMSE());
print_highlight("Pose Estimation transformation is:\n");
std::cout<<estimation.getTransformation();
if (vis)
{
//Proceed to visualization
pcl::visualization::PCLVisualizer viewer("Estimator Viewer");
//Transform Candidate with pose estimation transformation, so it aligns over Target
PointCloud<PointXYZ>::Ptr aligned (new PointCloud<PointXYZ>);
pcl::transformPointCloud(estimation.getCloud(), *aligned, estimation.getTransformation());
aligned->sensor_origin_.setZero();
aligned->sensor_orientation_.setIdentity();
//make estimation cloud green
pcl::visualization::PointCloudColorHandlerCustom<PointXYZ> aligned_col_handl (aligned, 0, 255, 0);
//add clouds to viewer
viewer.addPointCloud(cloud, "target");
viewer.addPointCloud(aligned, aligned_col_handl, "estimation");
//visualize axis on origin (i.e. the acquisition sensor of Target)
viewer.addCoordinateSystem(0.08);
//add some explanation text
viewer.addText("Target in full color, Pose Estimation in green.\nClose viewer to quit.", 20, 20, 20, 0,1,0);
//Start viewer
while (!viewer.wasStopped())
viewer.spinOnce();
//user closed viewer, we are done.
viewer.close();
}
}
else
{
print_error("Error loading Database. Database path must be first command line argument!\n");
return (0);
}
}
else
{
print_error("Error setting a Target.\n");
return (0);
}
}
return (1);
}