g2o
Loading...
Searching...
No Matches
g2o_online.cpp
Go to the documentation of this file.
1// g2o - General Graph Optimization
2// Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions are
7// met:
8//
9// * Redistributions of source code must retain the above copyright notice,
10// this list of conditions and the following disclaimer.
11// * Redistributions in binary form must reproduce the above copyright
12// notice, this list of conditions and the following disclaimer in the
13// documentation and/or other materials provided with the distribution.
14//
15// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
16// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
18// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27#include <csignal>
28#include <cstdlib>
29#include <iomanip>
30#include <iostream>
31
33#include "g2o/stuff/macros.h"
34#include "g2o/stuff/timeutil.h"
35#include "g2o_slam_interface.h"
38
39static bool hasToStop = false;
40
41using namespace std;
42using namespace g2o;
43
44void sigquit_handler(int sig) {
45 if (sig == SIGINT) {
46 hasToStop = 1;
47 static int cnt = 0;
48 if (cnt++ == 2) {
49 cerr << __PRETTY_FUNCTION__ << " forcing exit" << endl;
50 exit(1);
51 }
52 }
53}
54
55int main(int argc, char** argv) {
56 bool pcg;
57 int updateEachN;
58 bool vis;
59 bool verbose;
60 // command line parsing
61 CommandArgs arg;
62 arg.param("update", updateEachN, 10,
63 "update the graph after inserting N nodes");
64 arg.param("pcg", pcg, false, "use PCG instead of Cholesky");
65 arg.param("v", verbose, false, "verbose output of the optimization process");
66 arg.param("g", vis, false, "gnuplot visualization");
67
68 arg.parseArgs(argc, argv);
69
70 SparseOptimizerOnline optimizer(pcg);
71 optimizer.setVerbose(verbose);
72 optimizer.setForceStopFlag(&hasToStop);
73 optimizer.vizWithGnuplot = vis;
74
75 G2oSlamInterface slamInterface(&optimizer);
76 slamInterface.setUpdateGraphEachN(updateEachN);
77
78 SlamParser::ParserInterface parserInterface(&slamInterface);
79
80 while (parserInterface.parseCommand(cin)) {
81 // do something additional if needed
82 }
83
84 return 0;
85}
top-level interface to the parser
bool parseCommand(std::istream &input)
Command line parsing of argc and argv.
bool parseArgs(int argc, char **argv, bool exitOnError=true)
void param(const std::string &name, bool &p, bool defValue, const std::string &desc)
void setForceStopFlag(bool *flag)
void setVerbose(bool verbose)
void sigquit_handler(int sig)
static bool hasToStop
int main()
Definition gicp_demo.cpp:44
#define __PRETTY_FUNCTION__
Definition macros.h:90
Definition jet.h:876
utility functions for handling time related stuff