sm-cli-trim.cpp
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2023 Jose Luis Blanco Claraco |
5  | Copyright (C) 2017 Borys Tymchenko (Odessa Polytechnic University) |
6  | Distributed under 3-clause BSD License |
7  | See COPYING |
8  +-------------------------------------------------------------------------+ */
9 
10 #include <mrpt/core/exceptions.h>
11 #include <mrpt/maps/CSimpleMap.h>
12 
13 #include "sm-cli.h"
14 
15 static int printCommandsTrim(bool showErrorMsg);
16 
18 {
19  const auto& lstCmds = cli->argCmd.getValue();
20  if (cli->argHelp.isSet()) return printCommandsTrim(false);
21  if (lstCmds.size() != 2 || !cli->arg_min_corner.isSet() || !cli->arg_max_corner.isSet() ||
22  !cli->arg_output.isSet())
23  return printCommandsTrim(true);
24 
25  // Take second unlabeled argument:
26  const std::string file = lstCmds.at(1);
27 
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());
30 
31  const auto bbox = mrpt::math::TBoundingBox(cornerMin, cornerMax);
32 
33  const mrpt::maps::CSimpleMap sm = read_input_sm_from_cli(file);
34 
35  mrpt::maps::CSimpleMap outSM;
36 
37  for (const auto& [posePDF, sf, twist] : sm)
38  {
39  ASSERT_(posePDF);
40  const auto p = posePDF->getMeanVal();
41 
42  if (!bbox.containsPoint(p.translation())) continue;
43 
44  outSM.insert(posePDF, sf, twist);
45  }
46 
47  const auto outFil = cli->arg_output.getValue();
48 
49  std::cout << "Writing trimmed simplemap with " << outSM.size() << " keyframes to '" << outFil
50  << "'" << std::endl;
51 
52  outSM.saveToFile(outFil);
53 
54  return 0;
55 }
56 
57 int printCommandsTrim(bool showErrorMsg)
58 {
59  if (showErrorMsg)
60  {
62  std::cerr << "Error: missing or unknown subcommand.\n";
64  }
65 
66  fprintf(
67  stderr,
68  R"XXX(Usage:
69 
70  sm-cli trim <filename> --min-corner "[xmin ymin zmin]" --max-corner "[xmax ymax zmax]" --output <OUTPUT.simplemap>
71 
72 )XXX");
73 
74  return showErrorMsg ? 1 : 0;
75 }
cli
std::unique_ptr< cli_flags > cli
Definition: sm-cli-main.cpp:29
printCommandsTrim
static int printCommandsTrim(bool showErrorMsg)
Definition: sm-cli-trim.cpp:57
testing::internal::string
::std::string string
Definition: gtest.h:1979
read_input_sm_from_cli
mrpt::maps::CSimpleMap read_input_sm_from_cli(const std::string &inFile)
Definition: sm-cli-main.cpp:113
commandTrim
int commandTrim()
Definition: sm-cli-trim.cpp:17
sm-cli.h
setConsoleNormalColor
void setConsoleNormalColor()
Definition: sm-cli-main.cpp:48
setConsoleErrorColor
void setConsoleErrorColor()
Definition: sm-cli-main.cpp:43


mp2p_icp
Author(s):
autogenerated on Mon May 26 2025 02:45:50