Go to the documentation of this file.
   17 #include <mrpt/core/Clock.h> 
   18 #include <mrpt/system/progress.h> 
   19 #include <mrpt/version.h> 
   31     if (yamlData.has(
"generators"))
 
   38         std::cout << 
"[sm2mm] Warning: no generators defined in the pipeline, " 
   39                      "using default generator." 
   42         auto defaultGen = mp2p_icp_filters::Generator::Create();
 
   43         defaultGen->setMinLoggingLevel(options.
verbosity);
 
   44         defaultGen->initialize({});
 
   50     if (yamlData.has(
"filters"))
 
   57         std::cout << 
"[sm2mm] Warning: no filters defined in the pipeline." << std::endl;
 
   62     if (yamlData.has(
"final_filters"))
 
   65             yamlData[
"final_filters"], options.
verbosity);
 
   76     ps.
updateVariables({{
"vx", .0}, {
"vy", .0}, {
"vz", .0}, {
"wx", .0}, {
"wy", .0}, {
"wz", .0}});
 
   90     const double tStart = mrpt::Clock::nowDouble();
 
   92     size_t nKFs = sm.size();
 
   98     for (; curKF < nKFs; curKF++)
 
  100 #if MRPT_VERSION >= 0x020b05 
  101         const auto& [pose, sf, twist] = sm.get(curKF);
 
  102         if (twist.has_value())
 
  113         const auto& [pose, sf] = sm.get(curKF);
 
  117         const mrpt::poses::CPose3D robotPose = pose->getMeanVal();
 
  121             {{
"robot_x", robotPose.x()},
 
  122              {
"robot_y", robotPose.y()},
 
  123              {
"robot_z", robotPose.z()},
 
  124              {
"robot_yaw", robotPose.yaw()},
 
  125              {
"robot_pitch", robotPose.pitch()},
 
  126              {
"robot_roll", robotPose.roll()}});
 
  129         for (
const auto& obs : *sf)
 
  136             if (!handled) 
continue;
 
  145         for (
const auto& [name, map] : mm.
layers)
 
  153                     "Sanity check did not pass for layer: '%s'", name.c_str()));
 
  160             const size_t N  = nKFs;
 
  161             const double pc = (1.0 * curKF) / N;
 
  163             const double tNow      = mrpt::Clock::nowDouble();
 
  164             const double ETA       = pc > 0 ? (tNow - tStart) * (1.0 / pc - 1) : .0;
 
  165             const double totalTime = ETA + (tNow - tStart);
 
  167             std::cout << 
"\033[A\33[2KT\r"   
  169                       << mrpt::system::progress(pc, 30)
 
  171                              " %6zu/%6zu (%.02f%%) ETA=%s / T=%s\n", curKF, N, 100 * pc,
 
  172                              mrpt::system::formatTimeInterval(ETA).c_str(),
 
  173                              mrpt::system::formatTimeInterval(totalTime).c_str());
 
  179     if (!finalFilters.empty())
 
  181         std::cout << 
"Applying 'final_filters'..." << std::endl;
 
  185         std::cout << 
"Done with 'final_filters'." << std::endl;
 
  
static mp2p_icp_filters::GeneratorSet generators
std::vector< std::pair< std::string, double > > customVariables
void apply_filter_pipeline(const FilterPipeline &filters, mp2p_icp::metric_map_t &inOut, const mrpt::optional_ref< mrpt::system::CTimeLogger > &profiler=std::nullopt)
void simplemap_to_metricmap(const mrpt::maps::CSimpleMap &sm, mp2p_icp::metric_map_t &outMap, const mrpt::containers::yaml &pipeline, const sm2mm_options_t &options={})
bool pointcloud_sanity_check(const mrpt::maps::CPointsMap &pc, bool printWarnings=true)
Checks for consistent length of field vectors.
Base virtual class for point cloud filters.
mrpt::system::VerbosityLevel verbosity
FilterPipeline filter_pipeline_from_yaml(const mrpt::containers::yaml &c, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
const mrpt::maps::CPointsMap * MapToPointsMap(const mrpt::maps::CMetricMap &map)
Options for simplemap_to_metricmap()
std::vector< FilterBase::Ptr > FilterPipeline
std::vector< Generator::Ptr > GeneratorSet
simplemap-to-metricmap utility function
Base virtual class for point cloud filters.
void updateVariables(const std::vector< std::pair< std::string, double >> &nameValuePairs)
std::optional< size_t > start_index
Generic container of pointcloud(s), extracted features and other maps.
bool apply_generators(const GeneratorSet &generators, const mrpt::obs::CObservation &obs, mp2p_icp::metric_map_t &output, const std::optional< mrpt::poses::CPose3D > &robotPose=std::nullopt)
void AttachToParameterSource(std::vector< std::shared_ptr< T >> &setObjects, ParameterSource &source)
std::map< layer_name_t, mrpt::maps::CMetricMap::Ptr > layers
std::optional< size_t > end_index
GeneratorSet generators_from_yaml(const mrpt::containers::yaml &c, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
mp2p_icp
Author(s): 
autogenerated on Mon May 26 2025 02:45:50