10 #include <mrpt/core/exceptions.h>
11 #include <mrpt/maps/CSimpleMap.h>
19 const auto& lstCmds =
cli->argCmd.getValue();
21 if (lstCmds.size() != 2 || !
cli->arg_min_corner.isSet() || !
cli->arg_max_corner.isSet() ||
22 !
cli->arg_output.isSet())
28 const auto cornerMin = mrpt::math::TPoint3D::FromString(
cli->arg_min_corner.getValue());
29 const auto cornerMax = mrpt::math::TPoint3D::FromString(
cli->arg_max_corner.getValue());
31 const auto bbox = mrpt::math::TBoundingBox(cornerMin, cornerMax);
35 mrpt::maps::CSimpleMap outSM;
37 for (
const auto& [posePDF, sf, twist] : sm)
40 const auto p = posePDF->getMeanVal();
42 if (!bbox.containsPoint(p.translation()))
continue;
44 outSM.insert(posePDF, sf, twist);
47 const auto outFil =
cli->arg_output.getValue();
49 std::cout <<
"Writing trimmed simplemap with " << outSM.size() <<
" keyframes to '" << outFil
52 outSM.saveToFile(outFil);
62 std::cerr <<
"Error: missing or unknown subcommand.\n";
70 sm-cli trim <filename> --min-corner "[xmin ymin zmin]" --max-corner "[xmax ymax zmax]" --output <OUTPUT.simplemap>
74 return showErrorMsg ? 1 : 0;